我应该看看VmSize、VmRSS,还是linux上内存统计的一些组合?

我应该看看VmSize、VmRSS,还是linux上内存统计的一些组合?,linux,Linux,我试图在linux系统上为产品计算适当的大小数据,并希望确定内存使用情况。到目前为止,我的方法是通过跑步: cat /proc/<pid>/status cat/proc//状态 当看输出时,我不确定哪些数字是相关的。例如: VmPeak: 19662464 kB VmSize: 18344416 kB VmLck: 0 kB VmHWM: 5942980 kB VmRSS: 4734832 kB VmData: 2108608 kB VmStk:

我试图在linux系统上为产品计算适当的大小数据,并希望确定内存使用情况。到目前为止,我的方法是通过跑步:

cat /proc/<pid>/status cat/proc//状态 当看输出时,我不确定哪些数字是相关的。例如:

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 峰值:19662464 kB VmSize:18344416KB 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中正确计算进程内存使用情况的任何指针?

可以通过读取
/proc/1234/smap
文件(例如,使用
cat
命令)来提供关于pid 1234进程内存映射的更精确信息。您也可以使用
pmap
命令,例如
pmap 1234
有一些命令可以帮助您确定给定进程的内存使用情况:

尝试使用pmap或pmap-x

您还可以使用古老而优秀的top命令


vmstat也会很有用。

我认为这些答复没有回答您的具体问题。关键的一点是,您必须注意的重要值是您的进程在系统中使用的RAM内存

因此:

  • 顶部显示为剩余内存:“RES”列
  • 在'/proc//satus:'VmRSS'值中
  • 在pmap命令中:“RSS”总列值(在底部)
干杯


Antonio

如果我使用top,我仍然会得到与VmSize和VmRSS相关的VIRT和RES。仍然不确定使用哪一个…pmap似乎在报告虚拟大小,因此我想我会根据您的建议使用它,除非其他人有更好的建议,但更重要的是,它会告诉您哪些是特定于您的程序的,以及哪些是与其他进程共享的(例如
/lib/libc.so.6
)。