我发现有时基于 Linux 的服务器在没有必要的情况下使用交换。尤其是当所有可用 RAM 都用于缓存时。但现在我的专用服务器(具有 16GB RAM)开始交换,尽管有足够的可用 RAM:
$ free -m
total used free shared buffers cached
Mem: 16029 10035 5994 0 421 8508
-/+ buffers/cache: 1104 14925
Swap: 19322 3 19319
服务器正在运行 Web 服务器、php 和数据库,它们永远不会使用全部 16GB。应该不需要交换。但 Linux 仍然这样做。在这种情况下只有 3MB,但这是原则。
答案1
如果内核发现某个内存页面长时间未被触及,它就会趁机将其换出,释放该内存以供其他应用程序或缓存使用。
这样做可以更好地利用您现有的 RAM,使您的系统性能更好。