我应该在Linux上查看VmSize,VmRSS或某些组合的内存统计信息吗?

Jas*_*n V 16 linux

我正在尝试在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中进程内存使用情况的指示吗?

Ant*_*nio 10

我认为答复没有回答你的具体问题.关键在于,您必须注意的重要值是您的过程在系统中使用的RAM内存.

因此:

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

干杯,

安东尼奥


小智 9

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

尝试pmappmap -x

你也可以使用旧的和好的top命令

vmstat也很有用.

  • 如果我使用top,我仍然会得到VIRT和RES,这与VmSize和VmRSS相关.还不确定使用哪个...... (2认同)

Bas*_*tch 5

关于pid 1234的处理的存储器映射的更精确的信息可以通过读取(例如,使用cat命令)/proc/1234/maps/proc/1234/smaps文件来给出.您也可以使用pmap命令,例如pmap 1234

  • 但更重要的是,它会告诉您程序的具体内容,以及与其他进程共享的内容(例如`/ lib/libc.so.6`). (3认同)