2009-06-02 2 views
6

Есть ли способ записи памяти? Таким образом, после завершения процесса мы все равно можем получить к нему доступ.Запись памяти в Linux

Типичный способ проверить объем памяти, это:

$ cat /proc/PID/status 

Но ни в коей мере его существование после завершения процесса.

+0

Аналогичный вопрос о неисправности сервера: http://serverfault.com/questions/11754/running-batch-jobs-and-getting-a-peak-memory-usage-summary-for-each-job/12066 – MikeyB

ответ

5

вы можете сделать что-то вроде:

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

когда программа заканчивается, вы будете иметь список следов памяти с течением времени в log.

+0

@Nathan: спасибо. Кстати, как я могу отпустить эту команду в то же время «вместе» с моей командой? Таким образом, это не будет промежуток времени между ними. – neversaint

+1

Ваша лучшая ставка, вероятно, должна иметь сценарий оболочки, вызывающий программу, а затем запустить команду, которую я предложил. У вас все еще будет отставание во времени, но оно будет короче, чем делать вручную –

2

Вы можете записать его с помощью munin + пользовательского плагина.

Это позволит вам легко отслеживать и сохранять необходимую информацию о процессе и легко ее графически.

Here's a related answer I gave at serverfault.com

4

Valgrind имеет профайлер памяти под названием Massif, который предоставляет подробную информацию об использовании памяти вашей программы:

массив куча профайлер. Он выполняет подробное профилирование кучи, выполняя регулярные снимки кучи программы. Он создает график, показывающий использование кучи с течением времени, включая информацию о том, какие части программы отвечают за большинство распределений памяти. График дополняется текстовым или HTML-файлом, который содержит дополнительную информацию для определения того, где выделяется большая часть памяти. Massif запускает программы примерно в 20 раз медленнее, чем обычно.

Смежные вопросы