Пользовательская область Linux C: посмотрите, сколько памяти использует текущий процесс.Linux

Ответить
Anonymous
 Пользовательская область Linux C: посмотрите, сколько памяти использует текущий процесс.

Сообщение Anonymous »

Я пытаюсь определить максимальный объем памяти, который использует моя текущая многопоточная программа, изнутри себя (поэтому Valgrind или время бесполезны).
Я видел много мест, где рекомендуется выполнить обход /proc; однако монтирование procfs не является обязательным, и ваша система (в основном) будет работать без него.
ПРЕДУПРЕЖДЕНИЕ: при слепом выполнении этого действия могут возникнуть риски
ВНИМАНИЕ! сильный>

Код: Выделить всё

umount -l /proc
Поэтому я хочу избегать использования /proc. Я знаю, что getrusage(2) доступен; однако нет никакой гарантии, что эти поля будут заполнены (и, скорее всего, не будут):

Код: Выделить всё

long   ru_ixrss;         /* integral shared memory size */
long   ru_idrss;         /* integral unshared data size */
long   ru_isrss;         /* integral unshared stack size */
Выглядит как hiwater_vm в mm_struct в Task_struct (

Код: Выделить всё

task_struct -> mm -> highwater_vm
) приведет меня к нужному количеству страниц, и я смогу с этим смириться; однако я не знаю, возможно ли получить собственную Task_struct процесса из ядра.
Я знаю, что всегда могу написать модуль для предоставления Task_struct , но я готов поспорить, что есть способ сделать это, не заходя так далеко.
Связано:
Использование памяти текущим процессом в C

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-is-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»