为什么即使缓存了足够的内存,我的服务器也要交换?
该机器正在运行CentOS 7,并配备:
- 755 GB 的RAM
- 32 GB 交换
交换率设置为1
这是meminfo:
MemTotal: 792087296 kB
MemFree: 4465804 kB
MemAvailable: 224683056 kB
Buffers: 24 kB
Cached: 216998152 kB
SwapCached: 17792052 kB
Active: 672773100 kB
Inactive: 104668396 kB
Active(anon): 519239536 kB
Inactive(anon): 41416180 kB
Active(file): 153533564 kB
Inactive(file): 63252216 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 33554428 kB
SwapFree: 398388 kB
Dirty: 364 kB
Writeback: 0 kB
AnonPages: 542653804 kB
Mapped: 50276 kB
Shmem: 212980 kB
Slab: 3968696 kB
SReclaimable: 3769332 kB
SUnreclaim: 199364 kB
KernelStack: 18512 kB
PageTables: 1146652 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 429598076 kB
Committed_AS: 580019976 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 1885084 kB
VmallocChunk: 33948891128 kB
HardwareCorrupted: 0 kB
AnonHugePages: 264464384 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 313660 kB
DirectMap2M: 63309824 kB
DirectMap1G: 741343232 kB
有任何线索吗?
答案 0 :(得分:0)
我不确定“为什么”,但是您可以尝试两种方法:
1-将可交换性设置为零。
2-完全禁用交换。
here上有很好的参考,但重点是:
另一个注意事项,即使禁用了交换功能,有时也可以看到已释放的页面和进入的页面。可执行文件通常是内存映射的。内核知道它可以根据需要从磁盘还原这些代码页,因此可以不受惩罚地释放它们,以便释放RAM用于缓存或其他用途。