pra*_*tri 12 linux memory swap
今天我注意到我发现了以下事情:

正如您所看到的,RAM 几乎是一半空闲,并且交换空间的使用率非常高。根据我的教科书知识,我曾经认为 Linux 操作系统会尽量充分利用 RAM,当 RAM 不足时,它会将一些最少使用的页面从 RAM 移动到交换空间。
如果我的理论知识不正确,有人可以向我解释一下,并向我解释它在 linux 世界中的实际工作原理。
Pet*_*r H 10
虽然内核确实会使用交换,即使可能有剩余内存,但使用超过三分之二可能表明服务器在历史上可能已经耗尽内存,这就是它开始交换的原因。我会将交换使用与 sar 报告中的内存使用相关联,以推断系统是否有足够的内存。我还会检查 dmesg 或日志,以确定服务器实际上是否已耗尽内存,并且 oom-killer 启动了。
即使您有足够的可用内存,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)