vmware下内存丢失查找
有台服务器,4G内存的。 可以显示可用的内存数字有1070MB, 可机器上没有什么进程占用大量的内存啊,于是就慢慢开始找原因了。 然后用了之前yufeng提供的一段内存检查的代码来进行检查,看是否有slapinfo和pagetable占用的多。http://blog.yufeng.info/archives/2456
1 | #/bin/bash |
可执行下来的结果,显示已用的vmrss+pagetable+slapinfo总共才1.4GB左右 于是想是不是一些inode占用了比较多的内存,于是在sysctl.conf中加入了如下参数将内存的caches,denties和inodes等信息sync到磁盘上
1 | vm.drop_caches = 3 |
可执行了sysctl后也就清理了50MB内存,那剩下的内存呢。 然后就查看/proc/meminfo,看看是否free命令有bug啊 看来这里也没有啊,这个结果跟free出来的结果是一致的。 于是就开始 /proc/PID/status 里面的vm部分进行累加计算,发现vmsize的累加的值跟这个内存使用的大小还是很接近的。
1 | for PROC in `ls /proc/|grep "^[0-9]"` |
这个时候想到,这个虚拟机是在vmware之上的,会不会是vmware的一个bug呢。放狗搜索了一把,还真果然很多人提到了这个问题。 https://access.redhat.com/site/solutions/43729 http://forums.opensuse.org/showthread.php/466043-memory-usage-problem-11-4-vmware 无论是opensuse还是rhel都有这个问题啊。 里面也说到最终的解决办法了,它是直接就关闭了,不过由于vmware-tools带了一些比较好的驱动等等,所以我这边还是先重启一下,后期再改一下guest memory manager部分。