我有一个带有 28GB RAM 和 2GB 交换空间的虚拟 linux(Fedora 17)服务器。服务器正在运行一个 MySQL 数据库,该数据库设置为使用大部分 RAM。
运行一段时间后,服务器开始使用 swap 来换出未起诉的页面。这很好,因为我的 swappiness 默认为 60,这是预期的行为。
奇怪的是 top/meminfo 中的数字与来自进程的信息不对应。即服务器报告这些数字:
/proc/meminfo:
SwapCached: 24588 kB
SwapTotal: 2097148 kB
SwapFree: 865912 kB
top:
Mem: 28189800k total, 27583776k used, 606024k free, 163452k buffers
Swap: 2097148k total, 1231512k used, 865636k free, 6554356k cached
Run Code Online (Sandbox Code Playgroud)
如果我使用https://serverfault.com/a/423603/98204 中的脚本,它会报告合理的数字(bash'es、systemd 等交换的几 MB)和 MySQL 的一大笔分配(我省略了很多输出行):
892 [2442] qmgr -l -t fifo -u
896 [2412] /usr/libexec/postfix/master
904 [28382] mysql -u root
976 [27559] -bash
984 [27637] -bash
992 [27931] …
Run Code Online (Sandbox Code Playgroud)