在下面的 2.6.18 Linux Kernel (Red Hat) 服务器中,有很多可用内存,但我看到一些交换被使用。我一直认为交换是内存耗尽时的溢出。为什么它会与大约 7GB (50%) 的可用内存进行交换?交换度为 60(默认)。
内存信息输出:
MemTotal: 16436132 kB
MemFree: 7507008 kB
Buffers: 534804 kB
Cached: 2642652 kB
SwapCached: 39084 kB
Active: 6001828 kB
Inactive: 2532028 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 16436132 kB
LowFree: 7507008 kB
SwapTotal: 2097144 kB
SwapFree: 1990096 kB
Dirty: 236 kB
Writeback: 0 kB
AnonPages: 5353644 kB
Mapped: 45764 kB
Slab: 330660 kB
PageTables: 34020 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 10315208 kB
Committed_AS: 14836360 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 264660 kB
VmallocChunk: 34359472735 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
答案1
如果设置为 0,则仅在没有可用内存时才进行交换。swappiness
否则,在空闲期间,内核将交换内存。在此过程中,数据不会从内存中删除,而是会在交换分区中创建一个副本。
这意味着,如果出现内存耗尽的情况,则不必立即写入磁盘。在这种情况下,内核可以只覆盖已经交换的内存页面,因为它知道它拥有数据的副本。
该swappiness
参数基本上只是控制它执行此操作的程度。