Я анализирую данные от /proc/[pid]/statm
, чтобы получить представление об использовании памяти определенного процесса. man proc
утверждает, что резидентный размер набора (измеряется в «страницах») совпадает с VmRSS (KB ??) в /proc/[pid]/status
. Поскольку они имеют разные значения, я хотел бы понять связь между этими Значениями. Есть ли что-то вроде фактора, который я могу прочитать где-то в /proc
(я думал о VmPTE, но его еще ...)? Какой из них должен анализировать, чтобы получить размер используемой памяти для определенного процесса?Как VmRSS и размер резидентного набора совпадают?
#ex 1782 = firefox
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
~$ cat /proc/1782/status | grep Vm
VmPeak: 935584 kB
VmSize: 898484 kB
VmLck: 0 kB
VmHWM: 257608 kB
VmRSS: 186812 kB
VmData: 394328 kB
VmStk: 220 kB
VmExe: 44 kB
VmLib: 61544 kB
VmPTE: 1224 kB
VmSwap: 0 kB
Я не знаю, где, чтобы получить значение от прока, но я думаю, что мой размер_страницы является 4KB. Меня смутил VmPTE. Похоже, что это «размер [pid] s части таблицы страниц», затем «размер записи в буфере» :) – lupz
Да, многие из этих значений зависят от системы. В некоторых системах, с которыми я работал, некоторые из этих значений всегда будут давать 0, потому что поддержка не была скомпилирована в ядро. Так что да, не верьте тому, что говорят мои страницы, поскольку они могут не иметь отношения к вашей системе. – Ray
Фактически, виртуальная память = часть в ОЗУ + часть на диске + виртуальное адресное пространство, не отображаемое в физическую память + файлы с отображением памяти + разделяемая память. Поэтому для измерения потребления памяти VmSize довольно бесполезен. Посмотрите первый ответ на http://stackoverflow.com/questions/13308684/increase-of-virtual-memory-without-increse-of-vmsize – vcarel