Swap之殇 - Linux内存管理与Swappiness调优
这是一个让无数运维工程师深夜抓狂的经典场景:
告警响起,监控显示数据库服务器性能骤降。你登录服务器,执行
top
或free -h
命令,发现一个“诡异”的现象:服务器总内存64G,程序(used
)只用了30G,明明还有大量“空闲”内存,但系统却偏偏使用了好几个G的Swap(交换分区),导致数据库响应慢如蜗牛。你不禁仰天长问:Linux,你为什么这么“傻”?!
别急,Linux内核可一点也不傻。它这么做,是源于一套深刻但常常被误解的设计哲学。今天,我们就来彻底搞懂它,并学会如何让它变得更“聪明”。
1. 你的内存去哪了?揭秘“buff/cache”
要解开谜题,我们首先要正确地读懂free -h
的输出。
$ free -h
total used free shared buff/cache available
Mem: 62Gi 30Gi 1.0Gi 1.0Gi 31Gi 30Gi
Swap: 8.0Gi