Как я могу определить максимальное использование памяти процессом в Linux? - PullRequest
11 голосов
/ 25 февраля 2009

У меня есть программа, которая работает в двух разных режимах. Я хочу сравнить два режима с точки зрения времени выполнения и требований к памяти. Определить время выполнения легко с помощью time. На самом деле, в этом случае действительно просто, потому что программа сообщает как о времени ЦП, так и о времени настенных часов в конце теста. Однако определить использование памяти немного сложнее.

Как я могу получить подробную информацию об использовании памяти процессом в течение всего времени его существования? Я хочу знать как максимальное использование, так и среднее. На самом деле, в идеале, я бы хотел, чтобы какой-то график использования памяти на протяжении всей жизни.

Ответы [ 2 ]

9 голосов
/ 02 декабря 2013

time имеет подробный режим, который дает вам максимальный и средний размер резидентного набора.

(Размер резидентного набора - это часть памяти процесса, которая хранится в оперативной памяти).

$ /usr/bin/time -v command_that_needs_to_measured |& grep resident
    Maximum resident set size (kbytes): 6596
    Average resident set size (kbytes): 0

Не забудьте использовать двоичный файл /usr/bin/time, который имеет опцию -v. Вы можете просмотреть его документацию, запустив man time. Если вы не укажете его путь, вместо него будет работать встроенный в bash time, который не имеет опцию -v. Вы можете просмотреть его документацию на странице руководства bash или запустив help time.

9 голосов
/ 25 февраля 2009

Инструмент массива Valgrind может дать вам график использования памяти с течением времени. Смотри http://valgrind.org/docs/manual/ms-manual.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...