stime di Falsy sull'utilizzo della RAM con strumenti a riga di comando

-2

Sto provando a misurare l'utilizzo della RAM di MyProcess args

Tempo GNU

Dopo questo post

gtime -v ./MyProcess args

[..]
Maximum resident set size (kbytes): 303316992 # (303 GB)
[..]

Ovviamente non ho 303 GB di RAM sul mio computer!

zsh - time

Dopo questo post

zsh
TIMEFMT='%J   %U  user %S system %P cpu %*E total'$'\n'\
'avg shared (code):         %X KB'$'\n'\
'avg unshared (data/stack): %D KB'$'\n'\
'total (sum):               %K KB'$'\n'\
'max memory:                %M MB'$'\n'\
'page faults from disk:     %F'$'\n'\
'other page faults:         %R'

time ./MyProcess args

avg shared (code):         0 KB
avg unshared (data/stack): 0 KB
total (sum):               0 KB
max memory:                73204 MB # (73 GB)
page faults from disk:     0
other page faults:         18528

Non ho neanche 73 GB di RAM sulla mia macchina!

tstime

Dopo questo post ... non l'ho installato !

Monitoraggio attività

Il monitor dell'attività mi dà un utilizzo RAM di circa 60 MB. Questo è in genere l'utilizzo della RAM che mi aspettavo.

Ovviamente, MyProcess è deterministico e l'utilizzo della RAM non dovrebbe variare da una corsa all'altra.

Puoi aiutarmi a capire cosa non funziona (se possibile) e come posso misurare l'utilizzo della RAM di un processo con un time come il tipo di comando?

Per tua informazione, utilizzo Mac OS X 10.11.3

    
posta Remi.b 27.03.2017 - 02:35
fonte

1 risposta

3

Il primo OS X non è Linux quindi non dare per scontato che la doxumentation di Linux funzioni.

Penso che tu abbia effettivamente ottenuto la risposta corretta nell'output del tempo - la dimensione massima del residente è di 73MB. (Questo snippet di codice implica che non macOS ha le dimensioni in kilobyte mentre Apple come nella documentazione seguente è in byte)

Usa le pagine man OSX a partire da man time - quindi time -l ./process

-l The contents of the rusage structure are printed.

La struttura rusage è impostata da getrusage() che include i campi

struct rusage {
             struct timeval ru_utime; /* user time used */
             struct timeval ru_stime; /* system time used */
             long ru_maxrss;          /* max resident set size */

e

ru_maxrss the maximum resident set size utilized (in bytes).

quindi time -l ./MyProcess args dovrebbe dare quello che vuoi.

    
risposta data 27.03.2017 - 03:50
fonte

Leggi altre domande sui tag