当 RAM 几乎有一半空闲时正在使用交换

pra*_*tri 12 linux memory swap

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

在此处输入图片说明

正如您所看到的,RAM 几乎是一半空闲,并且交换空间的使用率非常高。根据我的教科书知识,我曾经认为 Linux 操作系统会尽量充分利用 RAM,当 RAM 不足时,它会将一些最少使用的页面从 RAM 移动到交换空间。

如果我的理论知识不正确,有人可以向我解释一下,并向我解释它在 linux 世界中的实际工作原理。

Pet*_*r H 10

虽然内核确实会使用交换,即使可能有剩余内存,但使用超过三分之二可能表明服务器在历史上可能已经耗尽内存,这就是它开始交换的原因。我会将交换使用与 sar 报告中的内存使用相关联,以推断系统是否有足够的内存。我还会检查 dmesg 或日志,以确定服务器实际上是否已耗尽内存,并且 oom-killer 启动了。


mga*_*iel 8

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

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

对于服务器,如果您的工作负载始终有足够的内存,我建议将 swappiness 设置为 1。对于工作站,我建议使用默认值 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
Run Code Online (Sandbox Code Playgroud)

通过设置使 /etc/sysctl.conf 中的设置永久化

vm.swappiness=1
Run Code Online (Sandbox Code Playgroud)

并重新加载它

sysctl -w
Run Code Online (Sandbox Code Playgroud)