Пользовательская область 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

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