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é.

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

+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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.