Comando de uso de memória com sintaxe semelhante ao comando time
18
Qual comando mostra o uso de memória de um programa? Estou procurando um comando que seja simples de usar e tenha sintaxe semelhante ao timecomando. Eu estou tentando encontrar o uso da memória de um programa de hash md5 que está escrito em C e leva 7 segundos para o hash "hello world".
Estou usando o sistema operacional Android com o busybox instalado.
Ironicamente, timepode ter uma resposta para você, mas desta vez não deve ser embutida no shell, timemas autônoma:
$ /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
No entanto, conta com o MAX RSS, e não o VSS; portanto, seria útil para você ou não, depende muito da sua tarefa.
UPD. : Mac OS X '' think '' é um pouco diferente, mas ainda é 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, bom saber disso. Mas cuidado, esse é um recurso específico ao GNU. O Android inclui o GNU time(1)?
22713 Warren Young
Shell embutido? Nem as páginas de manual bashnem as zshmencionam isso. Você está confundindo isso times?
22713 Warren Young
@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - tempo zsh é uma palavra reservada - tempo de festa é uma palavra-chave shell - tempo de colisão é / usr / bin / hora
poige
@WarrenYoung, e não, o Android não o tem por padrão, mas como /usr/bin/timeé construído com base em chamadas do sistema wait3ou wait4(não me lembro exatamente), ele pode ser facilmente colocado em ação também.
poige
A propósito, o tempo do macOS mostra o uso máximo de memória em bytes e o Linux em kilobytes.
Sua saída terá muitas coisas irrelevantes, mas seu resumo de heap faz o que você deseja:
==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
time(1)
?bash
nem aszsh
mencionam isso. Você está confundindo issotimes
?for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done
- tempo zsh é uma palavra reservada - tempo de festa é uma palavra-chave shell - tempo de colisão é / usr / bin / hora/usr/bin/time
é construído com base em chamadas do sistemawait3
ouwait4
(não me lembro exatamente), ele pode ser facilmente colocado em ação também.Você pode usar
valgrind
para isso:Sua saída terá muitas coisas irrelevantes, mas seu resumo de heap faz o que você deseja:
fonte
valgrind
mas parece que existe uma porta para o Android, vou tentar instalá-lo.