Как VmRSS и резидентный размер набора совпадают?
Я анализирую данные из /proc/[pid]/statm
чтобы получить представление об использовании памяти определенного процесса. man proc
утверждает, что резидентов установлена в размере(измеряется в "страницах") совпадает с VmRSS (КБ??) in /proc/[pid]/status
. Поскольку они имеют разные значения, я хотел бы понять связь между этими значениями. Есть ли что-то вроде фактора, который я могу прочитать где-то в /proc
(Я думал о VmPTE, но его sth. еще...)? Какой из них я должен проанализировать, чтобы получить размер используемой памяти для определенный процесс?
#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
3 ответов
Я понимаю, что VM-это объем виртуальной памяти, а RSS-это то, сколько его резидентов в памяти. Итак,
виртуальная память = часть в физической памяти + часть на диске
часть в физической памяти-RSS. Таким образом, VSS должен быть больше, чем RSS. Если они близки к равным, это означает, что ваш процесс удобно сидит в памяти. Если VSS намного больше, это означает, что недостаточно памяти, и ее части должны быть заменены на диск (т. е. о конкурирующем процессе и т. д.).
в моей системе я могу сделать "man proc" , и в нем перечислены следующие:
* VmPeak: Peak virtual memory size.
* VmSize: Virtual memory size.
* VmLck: Locked memory size (see mlock(3)).
* VmHWM: Peak resident set size ("high water mark").
* VmRSS: Resident set size.
* VmData, VmStk, VmExe: Size of data, stack, and text segments.
Если вы хотите сообщить о пиковом использовании памяти, то вам, вероятно, нужна виртуальная память, которая выглядит как VmPeak.
надеюсь, что это помогает!
значение RSS /proc/<pid>/stat
- количество страниц, тогда как значение VmRSS /proc/<pid>/status
в КБ.
в вашем случае 46703 * 4kB (размер страницы) = 186812 КБ.
страница для proc
государств, следующих в statm
контекст
/proc/[pid]/statm
Provides information about memory usage, measured in pages. The columns are:
size (1) total program size
(same as VmSize in /proc/[pid]/status)
resident (2) resident set size
(same as VmRSS in /proc/[pid]/status)
share (3) shared pages (i.e., backed by a file)
text (4) text (code)
lib (5) library (unused in Linux 2.6)
data (6) data + stack
dt (7) dirty pages (unused in Linux 2.6)
но чего он не может сказать, так это то, что size
и resident
выражается в количестве страниц.
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
таким образом, 46703
размер резидентного набора выражается в количестве страниц и 224621
- это размер виртуальной памяти, выраженный в количестве страниц.
теперь, чтобы получить их в КБ, умножьте их на размер страницы. Вы можете получить размер страницы с или