特别是,是否proc
始终在 中列出 VmRSS 值kB
?我找不到可靠的答案文档,尽管看起来它粘在一个单位上。
答案1
是的,它总是以 kB 为单位。确切地说,KiB(1024 字节,而不是 1000)。
至少在 Linux 4.0 中(并且至少自 2005 年 4 月以来,这段代码基本上没有变化——那时 Linus 切换到了git
,我不想进一步检查)输出来自task_mem
在fs/proc/task_mmu.c
。摘录几行:
seq_printf(m,
"VmPeak:\t%8lu kB\n"
"VmSize:\t%8lu kB\n"
"VmLck:\t%8lu kB\n"
"VmPin:\t%8lu kB\n"
"VmHWM:\t%8lu kB\n"
"VmRSS:\t%8lu kB\n"
"VmData:\t%8lu kB\n"
"VmStk:\t%8lu kB\n"
"VmExe:\t%8lu kB\n"
"VmLib:\t%8lu kB\n"
"VmPTE:\t%8lu kB\n"
"VmPMD:\t%8lu kB\n"
"VmSwap:\t%8lu kB\n",
hiwater_vm << (PAGE_SHIFT-10),
⋮
);
不确定你是否能读懂 C,但“kB”是硬编码在那里的。没有逻辑输出任何其他单位。