Performance

當 RAM 中有足夠的可用空間時,為什麼要使用交換?

  • April 21, 2021

使用交換空間而不是 RAM 會大大降低PC 的速度。

那麼,為什麼當我有足夠多的可用 RAM 時,我的 Linux 系統(Arch)會使用交換?

在下面查看我的 conky 輸出:

輸出

另外,這可能是我遇到的速度和系統響應問題的原因嗎?

輸出free -m

$ free -m
            total       used       free     shared    buffers     cached
Mem:          1257       1004        252          0         51        778
-/+ buffers/cache:        174       1082
Swap:          502        144        357

即使仍有可用 RAM ,Linux 系統使用*一些交換也是正常的。*Linux 核心將轉移到很少使用的記憶體頁面(例如,getty僅使用 X11 的實例和其他一些不活動的守護程序)。

*僅當沒有足夠的可用 RAM 時,*交換空間使用才會成為問題,並且核心被迫不斷地將記憶體頁面移動到交換空間並返回到 RAM,以保持應用程序執行。在這種情況下,系統監視器應用程序會顯示大量磁碟 I/O 活動。

作為比較,我的 Ubuntu 10.04 系統,兩個使用者使用 X11 會話登錄,都執行 GNOME 桌面,使用約 600MB 的交換和約 1GB 的 RAM(不包括緩衝區和 fs 記憶體),所以我會說你的交換數據使用看起來很正常。

可以通過設置以下值來配置此行為:

/proc/sys/vm/swappiness

預設值為 60。將其設置為 0 表示當仍有 RAM 剩餘時從不使用交換,而 100 表示盡快換出記憶體。

臨時更改值(重新啟動時失去):

sudo sysctl vm.swappiness=10

要永久更改值,請編輯文件:

/etc/sysctl.conf

作為根(例如sudoedit /etc/sysctl.conf)並更改或添加(如果不存在)該行:

vm.swappiness

到所需的值 ( vm.swappiness=10)。如果此文件不存在(例如在 Arch Linux 中),請嘗試/etc/sysctl.d/99-sysctl.conf

關於用可用記憶體換出是好是壞一直存在一些爭論,但Ubuntu 幫助確實建議桌面系統的值為 10。另請參閱有關CentOS 的 Digital Ocean 的本教程

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