以下是“top”命令的摘要
顶部 - 20:14:50 启动 18 天,23 分钟,1 个用户,平均负载:0.22、0.20、0.18 任务:总计 99 个,其中 1 个正在运行,98 个正在休眠,0 个已停止,0 个僵尸 CPU:1.1%us、0.1%sy、0.0%ni、94.2%id、3.5%wa、0.0%hi、0.0%si、1.2%st 内存:总计 2092032k,已使用 471684k,可用 1620348k,缓冲区 924k 交换:总计 4194296k,已使用 153940k,可用 4040356k,缓存 42564k
可以看到,2GB 内存中只使用了 461MB 左右。同时显示使用了 150MB 的交换空间。
这怎么可能?如果有可用物理内存,我的服务器为什么会使用交换?
答案1
在正常情况下,即使 RAM 中仍有可用空间,Linux 也会在不使用时将其交换出去。相反,它会保留缓存文件。您可以通过使用 systctl 更改 vm.swappiness 来调整此行为。有关其工作原理的更多详细信息,请参见这里。
答案2
Linux 会积极地交换一段时间内未主动使用的地址空间。这样做是为了让文件系统缓存(实际上是 SLAB 缓存)或使用共享内存、RAM 磁盘等的应用程序有更多 RAM 可用。通常,这正是您想要的。
如需进一步阅读,我建议Linux:调整 Swappiness以获得详细的解释,尽管您可能永远不需要接触那里提到的可调参数。