我如何测量我正在运行的进程的实际内存使用情况?

可能重复:
缓冲区/caching线在输出中的含义是免费的

我有两个服务器,server1和server2。 两者都是相同的惠普刀片,运行完全相同的操作系统(RHEL 5.5)。 这是他们两人的free输出:

 ### server1: total used free shared buffers cached Mem: 8017848 2746596 5271252 0 212772 1768800 -/+ buffers/cache: 765024 7252824 Swap: 14188536 0 14188536 ### server2: total used free shared buffers cached Mem: 8017848 4494836 3523012 0 212724 3136568 -/+ buffers/cache: 1145544 6872304 Swap: 14188536 0 14188536 

如果我理解正确,server2正在使用更多的内存用于磁盘I / Ocaching,这仍然被视为内存使用。

但是两者都运行相同的操作系统,如果我没有记错的话,我在安装时都使用相同的参数进行configuration。 我在/etc/sysctl.conf上做了一个diff ,它们是相同的。

问题是,我在一段时间内收集内存使用情况和其他指标(例如:vmstat,iostat等),同时在系统上生成负载。 用于caching的内存将对结果进行计算。

我如何从运行的进程中测量实际的内存使用情况,而不是由操作系统进行caching的内存使用情况? 是used - (buffers + cached)一个有效的方式来衡量这一点?

这真的不是问题…你想解决什么问题吗?

关于通过VM子系统的drop_caches参数释放页面caching,inode和dentries的其他build议是适当的。 先试试。

有关背景和上下文,请参见: http : //www.linuxinsight.com/proc_sys_vm_drop_caches.html 。

如果您对使用内存或磁盘caching的内容感到好奇,可以查看vmtouch实用程序,或者查看顶部的内容并按内存使用情况进行sorting(键入“M”)。 运行pmap -x对付最终的PID,可能会让您知道虚拟内存(caching)系统中的内容。

你可以通过使用清除caching吗?

同步; echo 3> / proc / sys / vm / drop_caches

然后使用它进行testing

 free -t -m