Determinando o uso máximo de memória para um processo extremamente curto

5

Eu tenho um programa que estou testando e preciso determinar a memória máxima usada pelo processo. Eu sei que em geral %código% pode me dar essa informação, mas o processo é executado em menos de 1/10 segundos, então ficar com o ps para pegá-lo não é uma boa opção.

Existem outras boas opções para obter esse tipo de informação? Estou executando alguns benchmarks em um programa para ver se consigo melhorar seu uso de memória.

    
por dnraikes 11.04.2015 / 22:50

2 respostas

4

valgrind fornecerá esta informação, juntamente com outras estatísticas sobre o uso da memória (e informar-lhe-á sobre vazamentos de memória, etc.). Isso diminuirá o programa um pouco, mas como o seu processo é de curta duração, não deve ser um problema.

Aqui está o exemplo de saída da execução de ls :

==7051== 
==7051== HEAP SUMMARY:
==7051==     in use at exit: 351,689 bytes in 838 blocks
==7051==   total heap usage: 1,049 allocs, 211 frees, 688,325 bytes allocated
==7051== 
==7051== LEAK SUMMARY:
==7051==    definitely lost: 0 bytes in 0 blocks
==7051==    indirectly lost: 0 bytes in 0 blocks
==7051==      possibly lost: 0 bytes in 0 blocks
==7051==    still reachable: 351,689 bytes in 838 blocks
==7051==         suppressed: 0 bytes in 0 blocks
==7051== Rerun with --leak-check=full to see details of leaked memory
==7051== 
==7051== For counts of detected and suppressed errors, rerun with: -v
==7051== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

As informações específicas que você procura são fornecidas pela linha "uso total do heap".

    
por 11.04.2015 / 23:26
2

Use tempo GNU (que tem muitos mais recursos que o "tempo" do builtin do bash):

$ sudo apt-get install time
$ \time prog >/dev/null 
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 2380maxresident)k
0inputs+0outputs (0major+119minor)pagefaults 0swaps

O \time de escape solicita explicitamente que não use o builtin, /usr/bin/time também funcionaria. Existem muitas outras possibilidades de exibição, use 'man time'.

    
por 12.04.2015 / 17:13