Centos
我是否應該擔心在具有近 40GB 可用記憶體的主機上使用交換?
我有一個生產主機,如下:
系統使用 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
忽略第一行,因為這是系統啟動後的活動。注意;下的
si
和so
列---swap--
如果在大多數情況下不是 0,它們通常應該是相當小的數字。另外值得一提的是,這種搶先交換可以通過核心設置來控制。該文件
/proc/sys/vm/swappiness
包含一個介於 0 和 100 之間的數字,它告訴核心如何積極地換出記憶體。Cat 文件以查看它的設置。預設情況下,大多數 Linux 發行版預設為 60,但如果您不想在記憶體耗盡之前看到任何交換,請將 0 回顯到文件中,如下所示:echo 0 >/proc/sys/vm/swappiness
這可以通過添加永久化
vm.swappiness = 0
到
/etc/sysctl.conf
.