我使用的服务器有 128 GB RAM。在运行某些作业时,我发现交换空间使用频繁。
顶部输出
top - 05:14:51 up 16:52, 2 users, load average: 3.99, 5.16, 5.37
Tasks: 760 total, 1 running, 759 sleeping, 0 stopped, 0 zombie
Cpu(s): 10.9%us, 0.2%sy, 0.0%ni, 88.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%
Mem: 132050336k total, 130871212k used, 1179124k free, 387620k buffers
Swap: 4194300k total, 64396k used, 4129904k free, 117989588k cached
免费的输出
$ free -g
total used free shared buffers cached
Mem: 125 124 1 0 0 112
-/+ buffers/cache: 11 113
Swap: 3 0 3
从此我才明白12GB 内存目前正在被进程使用,113GB 是操作系统缓存。
我的理解是缓存使用的内存是不必要的,并且在内存使用率高时,此缓存会被释放并提供给需要内存的进程。
然而我在监控工具中看到了警告1260 pages were swapped to disk in the previous 15 minute(s)
。
操作系统是否会交换页面只是为了增加内存中的文件系统缓存?如果是这样,这会影响系统性能吗(由于频繁交换)?