Commande d'utilisation de la mémoire avec une syntaxe similaire à la commande time

18

Quelle commande montre l'utilisation de la mémoire d'un programme, je recherche une commande simple à utiliser et ayant une syntaxe similaire à la timecommande. J'essaie de trouver l'utilisation de la mémoire d'un programme de hachage md5 qui est écrit en C et prend 7 secondes pour hacher "hello world".

J'utilise le système d'exploitation Android avec busybox installé.

kyle k
la source

Réponses:

24

Ironiquement, il timepourrait y avoir une réponse pour vous, mais cette fois, elle ne devrait pas être intégrée au shell timemais autonome à la place:

$ /usr/bin/time -v uname
Linux
        Command being timed: "uname"
        User time (seconds): 0.00
        System time (seconds): 0.00
        Percent of CPU this job got: 2%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.12
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 896
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 1
        Minor (reclaiming a frame) page faults: 304
        Voluntary context switches: 3
        Involuntary context switches: 3
        Swaps: 0
        File system inputs: 56
        File system outputs: 0
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0

Cependant, il compte MAX RSS, pas VSS, donc cela vous serait utile ou non dépend fortement de votre tâche.

UPD. : Mac OS X "pense" est légèrement différent mais c'est quand même time:

/usr/bin/time -l /Applications/Opera.app/Contents/MacOS/Opera
      244.63 real        54.34 user        26.44 sys
 284827648  maximum resident set size
         0  average shared memory size
         0  average unshared data size
         0  average unshared stack size
    711407  page reclaims
      1272  page faults
         0  swaps
       155  block input operations
       251  block output operations
     98542  messages sent
     68330  messages received
        16  signals received
       699  voluntary context switches
    468999  involuntary context switches
poige
la source
+1, bon de savoir cela. Mais attention, c'est une fonctionnalité spécifique à GNU. Android inclut-il GNU time(1)?
Warren Young
Shell intégré? Ni les pages de manuel bashni zshici ne le mentionnent. Le confondez-vous times?
Warren Young
@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - zsh time est un mot réservé - bash time est un mot clé shell - dash time is / usr / bin / time
poige
@WarrenYoung, et non, Android ne l'a pas par défaut, mais étant donné qu'il /usr/bin/timeest fortement basé sur les appels système wait3ou wait4(je ne me souviens pas exactement), il peut également être facilement mis en œuvre là-bas.
poige
Soit dit en passant, l'heure macOS affiche l'utilisation maximale de la mémoire en octets et Linux en kilo-octets.
user31389
2

Vous pouvez utiliser valgrindpour cela:

$ valgrind myprogram arg1 arg2

Sa sortie aura beaucoup de choses non pertinentes, mais son résumé de tas fait ce que vous voulez:

==91383== HEAP SUMMARY:
==91383==     in use at exit: 157,643 bytes in 364 blocks
==91383==   total heap usage: 2,999 allocs, 2,635 frees, 306,450 bytes allocated
Warren Young
la source
Je n'en ai pas valgrindmais on dirait qu'il y a un port pour android, je vais essayer de l'installer.
kyle k
1
@kylek: Si vous faites un développement de logiciel CPU natif sur Android, vous voulez l'avoir quand même.
Warren Young