2009-06-02 6 views
6

C'è un modo per registrare l'impronta di memoria? In modo che al termine del processo, possiamo ancora accedervi.Memoria di memoria di registrazione in Linux

Il modo tipico posso controllare occupazione di memoria è presente:

$ cat /proc/PID/status 

Ma in nessun modo esistono dopo il processo è terminato.

+0

Domanda simile su Server Fault: http://serverfault.com/questions/11754/running-batch-jobs-and-getting-a-peak-memory-usage-summary-for-each-job/12066 – MikeyB

risposta

5

si può fare qualcosa di simile:

watch 'grep VmSize /proc/PID/status >> log' 

Al termine del programma avrete una lista di impronte di memoria nel tempo log.

+0

@Nathan: grazie. A proposito, come posso rilasciare questo tuo comando allo stesso tempo "insieme" con il mio comando? In modo tale che non ci sia un intervallo di tempo tra i due. – neversaint

+1

probabilmente la tua scommessa è di avere uno script wrapper che chiama il programma e quindi di eseguire il comando che ho suggerito. Avrai ancora un intervallo di tempo, ma sarà più breve di farlo manualmente –

4

Valgrind ha un profiler di memoria chiamato Massif che fornisce informazioni dettagliate circa l'utilizzo della memoria del vostro programma:

Massif è un profiler mucchio. Esegue la profilatura dell'heap dettagliata eseguendo regolari snapshot dell'heap di un programma. Produce un grafico che mostra l'utilizzo dell'heap nel tempo, incluse informazioni su quali parti del programma sono responsabili della maggior parte delle allocazioni di memoria. Il grafico è integrato da un file di testo o HTML che include più informazioni per determinare dove viene allocata la maggior parte della memoria. Massif esegue programmi circa 20 volte più lenti del normale.