time
это блестящая команда, если вы хотите выяснить, сколько процессорного времени занимает данная команда.
Я ищу что-то подобное, что может измерить максимальное использование оперативной памяти программы и любых детей. Предпочтительно следует различать выделенную память, которая использовалась и не использовалась. Может быть, это может даже дать среднее использование памяти (так что использование памяти вы должны ожидать при работе в течение длительного времени).
Итак, я хотел бы сделать:
rammeassure my_program my_args
и получить вывод, похожий на:
Max memory allocated: 10233303 Bytes
Max memory used: 7233303 Bytes
Median memory allocation: 5233303 Bytes
Я посмотрел на memusg
https://gist.github.com/526585/590293d6527c91e48fcb08edb8de9fd6c88a6d82, но я считаю это несколько взломом.
./tstime -t bash -c 'perl -e "\$a=\"x\"x100000000;\$b=\$a.\$a;\$b=\"\";\$a=\"\";sleep 10;"'
glibc
(и другие разные библиотеки, они для чего-то называются «общими»). Многие демоны загружают конфигурацию в память и потомки fork (2), которые затем делятся данными конфигурации. Затем есть данные в буферах readahead / writebehind, управляемых ядром. Кроме того, существуют сервисы, которые представляют собой стадию слабо связанных процессов (представьте себе среду вашего рабочего стола, все ее апплеты и фоновые компоненты).time
является встроенным в вашей оболочке. Если вам нравится,time
но нужна дополнительная информация, попробуйте GNUtime
в режиме verbose (-v
):Найдите пакет «time» или «gnutime» в вашем менеджере пакетов.
источник
wait3
заполняет структуру, которая описана вgetrusage(2)
: «Не все поля имеют смысл в Linux. [..].tstime
сообщает 10652 КиБ. Снова под Ubuntu 10.04./usr/bin/time -v perl -e '$a="x"x100000000;$b=$a.$a;sleep 10;'
. Топ говорит, что это занимает около 570 МБ, а время говорит о 2,3 ГБ. На практике это число не пригодно для меня.Может быть, излишним, но я только что обнаружил, что
valgrind
есть хороший инструмент под названиемmassif
. Я проверил это наxterm
:И вы получите хороший график использования памяти:
наряду со слишком подробной информацией об использовании памяти. Подробности в руководстве Valgrind .
Программы будут работать примерно в 20 раз медленнее. Кроме того, я выполнил несколько команд внутри
xterm
. Их след памяти был учтен, потому--trace-children=yes
что опция есть!источник
Несмотря на то, что тема довольно старая, я хочу поделиться другим проектом, появившимся в ядре Linux cgroups.
https://github.com/gsauthof/cgmemtime :
источник
Похоже, что tstime больше не работает под не-root под Linux> = 3.0. Вот утилита для опроса, которую я написал для решения этой проблемы: https://github.com/jhclark/memusg/blob/master/memusg
источник
/usr/bin/time -v
дает правильный вывод в новых версиях. В старых версиях вам просто нужно разделить на 4, чтобы получить правильную сумму.