Механизм Linux для измерения потребления памяти процесса f - PullRequest
3 голосов
/ 11 июля 2011

Каков наиболее эффективный и точный способ / API для измерения потребления памяти кучи от одного и того же запущенного процесса программно?Я хочу оценить (настолько точно, насколько это возможно), сколько памяти было new или malloc с момента запуска, за вычетом памяти, которая была free или delete

.Вопрос в Linux и, возможно, в других средах Linux.Это C или C ++


EDIT Для моих целей достаточно знать фактическое количество (и размер) выделенных / удерживаемых блоков в любой реализации malloc,мне не нужны детали фактической памяти malloc минус освобожденная память

Ответы [ 5 ]

3 голосов
/ 11 июля 2011

Вы можете использовать mallinfo для оценки. Я только что нашел это, не уверен, что это процесс или система ..: /

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

3 голосов
/ 11 июля 2011

Предполагая, что новое использует malloc look here .

Для получения более подробной информации о распределении памяти процессов, смотрите /proc/[pid]/maps.

Также обратите внимание, что в linux реализовано копирование при записи. Это означает, что иногда процессы могут совместно использовать память. Это особенно верно, если процесс был разветвлен без последующего вызова exec.

1 голос
/ 11 июля 2011

Рассматривали ли вы чтение из / proc / u / stat? (где "ты" - твой пид)

0 голосов
/ 12 июля 2011

Вы можете получить совсем немного информации об использовании кучи, связавшись с tcmalloc из Google Perftools .Он предназначен для обнаружения утечек памяти и определения того, «кто, черт возьми, выделил всю эту оперативную память», но предоставляет достаточно инструментов, чтобы ответить на большинство вопросов, которые могут у вас возникнуть о вашей куче.

0 голосов
/ 11 июля 2011

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

http://valgrind.org/

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