Centos

我是否應該擔心在具有近 40GB 可用記憶體的主機上使用交換?

  • March 24, 2017

我有一個生產主機,如下:

htop

系統使用 1GB 的交換空間,同時保持近 40GB 的空閒、未使用的記憶體空間。我應該擔心這個,還是大部分正常?

這不是問題,很可能是正常的。很少使用大量程式碼(可能還有數據),因此系統會將其換出以釋放記憶體。

如果記憶體不斷地被換入和換出,則交換主要是一個問題。正是這種活動會破壞性能並在系統的其他地方提出問題。

如果你想監控你的交換活動,你可以使用幾個實用程序,但**vmstat**通常非常有用,例如

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 348256  73540 274600    0    0     1     9    9    6  2  0 98  0  0
0  0      0 348240  73544 274620    0    0     0    16   28   26  0  0 100  0  0
0  0      0 348240  73544 274620    0    0     0     0   29   33  0  0 100  0  0
0  0      0 348240  73544 274620    0    0     0     0   21   23  0  0 100  0  0
0  0      0 348240  73544 274620    0    0     0     0   24   26  0  0 100  0  0
0  0      0 348240  73544 274620    0    0     0     0   23   23  0  0 100  0  0

忽略第一行,因為這是系統啟動後的活動。注意;下的siso---swap--如果在大多數情況下不是 0,它們通常應該是相當小的數字。

另外值得一提的是,這種搶先交換可以通過核心設置來控制。該文件/proc/sys/vm/swappiness包含一個介於 0 和 100 之間的數字,它告訴核心如何積極地換出記憶體。Cat 文件以查看它的設置。預設情況下,大多數 Linux 發行版預設為 60,但如果您不想在記憶體耗盡之前看到任何交換,請將 0 回顯到文件中,如下所示:

echo 0 >/proc/sys/vm/swappiness

這可以通過添加永久化

vm.swappiness = 0

/etc/sysctl.conf.

引用自:https://serverfault.com/questions/825911