Linux

為什麼在大量記憶體仍然可用時使用交換?

  • April 4, 2014

在下面的 2.6.18 Linux Kernel (Red Hat) 伺服器中,有很多可用記憶體,但我看到使用了一些交換。當記憶體耗盡時,我一直認為交換是溢出。為什麼它會與大約 7GB (50%) 的可用記憶體進行交換?Swappiness 為 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

僅當沒有空閒記憶體時才進行交換,僅當您設置swappiness為 0 時才會發生這種情況。否則,在空閒時間,核心將交換記憶體。在這樣做時,數據不會從記憶體中刪除,而是在交換分區中製作一個副本。

這意味著,如果出現記憶體耗盡的情況,它不必當場寫入磁碟。在這種情況下,核心可以只覆蓋已經被交換的記憶體頁面,它知道它有一份數據副本。

swappiness參數基本上只是控制它執行此操作的程度。

引用自:https://unix.stackexchange.com/questions/123168