RAM几乎是半空闲时使用交换

今天我注意到,我发现了以下事情:

在这里输入图像说明

正如你所看到的,RAM几乎是半免费的,交换空间的使用率非常高。 从我的教科书知识,我曾经认为,Linux操作系统试图使RAM的最佳使用,当它缺乏内存,它会将一些最less使用的页面从RAM移动到交换空间。

有人能解释我,如果我的理论知识是不正确的,并解释我如何在Linux的世界,它实际工作。

虽然内核使用交换是真的,即使可能还有内存,使用超过三分之二的内存可能是一个指标,历史上服务器可能已经用完了内存,这就是为什么它开始交换。 我会将交换使用与sar报告中的内存使用相关联,以推断系统是否具有足够的内存。 我还会检查dmesg或日志,以确定服务器是否已经耗尽内存,并且杀手锏已经被踢出。

即使您有足够的内存空间,Linux内核也会开始换出内存页面。 您可以通过设置自定义swappiness来微调此行为。

http://en.wikipedia.org/wiki/Swappiness

对于服务器,如果您的工作负载总是有足够的内存,我build议将swappiness设置为1。 对于工作站,我build议使用默认值60。

# check the current value cat /proc/sys/vm/swappiness 60 # swappiness = 1 (swap only if necessary) echo 1 > /proc/sys/vm/swappiness # or use sysctl sysctl -w vm.swappiness=1 

通过设置使设置在/etc/sysctl.conf中永久保存

 vm.swappiness=1 

并重新加载

 sysctl -w 

不幸的是,有些应用程序会直接锤击swap,故意跳过RAM。 看着你,铬(和一点Photoshop)。 让这些应用程序不交换的唯一方法是在没有交换分区的情况下运行。 即使是swappiness 0 IIRC仍然会给他们访问,因为他们明确要求。

每改变一次以上的swappiness将会适用于其他任何事情。 我会build议一个值10-20,而不是1。