kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
48260 8125832 99.41 196440 2761852 7197688 1190912 14.20 316044
75504 8098588 99.08 198032 2399460 7197688 1190912 14.20 316032
它显示当前使用的14.2%掉期.有趣的是这个%永远不会减少.它继续增加,达到30-40%.我们每周重启服务器.
我认为%swpused在峰值活动期间增加,在低活动期间减少.或者至少保持不变.这看起来像操作系统从未回收交换空间.
免费输出:
免费-m
缓存的总使用的免费共享缓冲区
记忆:7982 7937 45 0 32 2088
– / buffers / cache:5816 2166
交换:8191 1163 7028
所以至少有2克免费拉姆.所以问题是为什么交换空间继续增加而不被操作系统收回?或者如何调试这个以弄清楚什么是hapenning ..
解决方法
这意味着如果相同的信息需要稍后再次换出并且没有改变,操作系统可以从已分配的RAM中删除页面,而无需向磁盘节省时间.
分配给已经读回内存的东西的交换也将被释放
>当根本不再需要相关页面时(即由应用程序释放)
>更改相关页面时(因此光盘上的副本不再是最新的)
>机器在交换空间上运行不足,因此清除RAM中已有的东西以腾出空间
在/ proc / meminfo中查找名为“SwapCached”的行.此条目计算在RAM和交换分区中找到的页面.例如,随机选择一个小VM,我的一个VM的/ proc / meminfo虚拟文件显示:
SwapTotal: 698816 kB SwapFree: 624520 kB SwapCached: 17232 kB
表示分配了74268K的交换空间,但是这些页面的17232K当前也被映射到RAM中(如果其他东西需要空间,可以立即从交换中解除分配).
毫无疑问,坐在那里的页面很久以前就被换掉了,从那时起就再也没有用过了.内核不会因为有一些空闲的RAM来重新加载来自swap的页面,因为空闲的RAM可能更好地用于缓存或缓冲区 – 写入交换的页面通常只在下次需要时重新读取.
如果你想清除swap中的内容,只要你有足够的空闲和/或可用空间(即免费缓存缓冲区(减去cb计数中那些不可用的权利RightThisInstant)),只需将其关闭然后再打开再次使用swapoff -a&&交换-a.
当然,你也可能在某处发生内存泄漏,但这并不是你所看到的行为的唯一解释.