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

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

可能重复:
free 输出中的 buffers/cache 行的含义

我有两台服务器,server1 和 server2。它们都是相同的 HP 刀片,运行完全相同的操作系统 (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/O 缓存,这仍然算作内存使用。

但两者都运行相同的操作系统,如果我没记错的话,我在安装时使用相同的参数配置了它们。我进行了测试,diff发现/etc/sysctl.conf它们是相同的。

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

如何测量正在运行的进程的实际内存使用量,而不是操作系统用于缓存的内存使用量? 有used - (buffers + cached)有效的测量方法吗?

答案1

这确实不是一个问题...您想解决什么问题吗?

另一个建议是通过 VM 子系统的 drop_caches 参数释放页面缓存、inode 和 dentry,这个建议也不错。先试一下。

看:http://www.linuxinsight.com/proc_sys_vm_drop_caches.html背景和上下文。

如果你真的好奇是什么消耗了你的 RAM 或磁盘缓存,你可以看看vmtouch 实用程序或者查看 top 并按内存使用情况排序(输入“M”)。pmap -x针对结果最顶部的 PID 运行可能会让您了解虚拟内存(缓存)系统中的内容。

答案2

您可以使用来清除缓存吗

同步;回显 3 > /proc/sys/vm/drop_caches

然后使用测试

free -t -m

相关内容