Performance
當 RAM 中有足夠的可用空間時,為什麼要使用交換?
使用交換空間而不是 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 的本教程。