我有两台服务器,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