проблема с командой GNU "time" для измерения использования памяти - PullRequest
6 голосов
/ 16 июня 2009

Я пытался использовать команду времени / usr / bin / time, чтобы измерить пиковое потребление памяти программой в системе Linux. Независимо от того, с каким исполняемым файлом я экспериментирую, я получаю правильный ответ относительно того, что касается времени выполнения, но показатели использования памяти всегда равны 0.

типичный вывод времени выглядит примерно так:

8.68пользователь 0.04система 0: 08.73 истекла 99% ЦП (0avgtext + 0avgdata 0maxresident) k 0 входов + 16 выходов (0 основных + 20366 минор) pagefaults 0swaps

нули, которые я не понимаю:

0avgtext + 0avgdata 0maxresident

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

Ответы [ 2 ]

5 голосов
/ 16 июня 2009

Пиковое использование памяти не реализовано в Linux, насколько я знаю, поэтому время не сообщает об этом. Большинство людей используют количество незначительных сбоев страниц (1 == 4Kb блок) в качестве показателя объема используемой памяти.

См., Например, здесь как Линус Торвальдс использует его для поиска производительности git.

Единственный способ измерить его иначе - использовать ulimit и бинарный поиск, чтобы найти наименьший объем памяти, который ему нужен:

3 голосов
/ 16 июня 2009

Это правда, что время не всегда поддерживает все расширенные функции.

Существуют альтернативы valgrind, такие как mempatrol и электрический забор, которые не имеют одинаковых накладных расходов (но имеют менее причудливые функции). Valgrind фактически смехотворно одолел за это, и вы платите за это во время выполнения.

Вы также можете использовать сценарии systemtap для достижения аналогичных результатов.

top также очень полезен.

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