在Linux上查看内存统计信息,我应该关注VmSize、VmRSS还是它们的组合?

17

我正在尝试计算Linux系统中某个产品的适当大小数据,并希望确定内存使用情况。 我目前的方法是运行:

cat /proc/<pid>/status

查看输出时,我不确定哪些数字是相关的。 例如:

VmPeak: 19662464 kB
VmSize: 18344416 kB
VmLck:         0 kB
VmHWM:   5942980 kB
VmRSS:   4734832 kB
VmData:  2108608 kB
VmStk:       120 kB
VmExe:      9256 kB
VmLib:    304448 kB
VmPTE:     10316 kB

我认为我应该使用VmSize(虚拟内存,对吗?)或VmRSS(私有内存,对吗?)或一些组合来确定这一点,但我不确定。 在Linux中正确计算进程内存使用情况的任何指针吗?

3个回答

13

我认为回复没有回答你具体的问题。关键点在于你必须关注系统中由你的进程使用的RAM内存重要值。

因此:

  • 在top命令中,残留内存显示为'RES'列
  • 在'/proc//status'文件中,'VmRSS'值
  • 在pmap命令中,'RSS'总列值(位于底部)

干杯,

安东尼奥


9

有一些命令可以帮助您确定给定进程的内存使用情况:

尝试使用pmappmap -x

您还可以使用经典的top命令

vmstat也会很有用。


3
如果我使用top命令,我仍然会得到VIRT和RES,它们对应于VmSize和VmRSS。我仍然不确定该使用哪一个... - Jason V

5

通过读取(例如使用cat命令)/proc/1234/maps/proc/1234/smaps文件,可以提供有关pid 1234进程的内存映射的更精确信息。你也可以使用pmap命令,例如:pmap 1234


pmap 似乎报告的是虚拟大小,所以根据您的建议,我想我会选择它,除非有其他更好的建议。 - Jason V
3
更重要的是,它告诉您关于您的程序特定部分和其他进程共享部分(例如/lib/libc.so.6)的信息。 - Basile Starynkevitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接