一.SWAP 說明
1.1 SWAP 概述
當系統的實體記憶體不夠用的時候,就需要将實體記憶體中的一部分空間釋放出來,以供目前運作的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要運作時,再從Swap中恢複儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行Swap交換。
這個是SWAP 交換分區的作用。實際上,我們更關注的應該是SWAP分區的大小問題。 設定多大才是最優的。
一般來說可以按照如下規則設定swap大小:
- 4G以内的實體記憶體,SWAP 設定為記憶體的2倍。
- 4-8G的實體記憶體,SWAP 等于記憶體大小。
- 8-64G 的實體記憶體,SWAP 設定為8G。
- 64-256G實體記憶體,SWAP 設定為16G。
實際上,系統中交換分區的大小并不取決于實體記憶體的量,而是取決于系統中記憶體的負荷,是以在安裝系統時要根據具體的業務來設定SWAP的值。
1.2 系統在什麼情況下才會使用SWAP?
實際上,并不是等所有的實體記憶體都消耗完畢之後,才去使用swap的空間,什麼時候使用是由swappiness 參數值控制。
[root@localhost ~]# cat /proc/sys/vm/swappiness
60
該值預設值是60.
- swappiness=0的時候表示最大限度使用實體記憶體,然後才是 swap空間,
- swappiness=100的時候表示積極的使用swap分區,并且把記憶體上的資料及時的搬運到swap空間裡面。
現在伺服器的記憶體動不動就是上百G,是以我們可以把這個參數值設定的低一些,讓作業系統盡可能的使用實體記憶體,降低系統對swap的使用,進而提高系統的性能。
1.3 如何修改swappiness參數?
--臨時性修改:
[root@localhost ~]# cat /proc/sys/vm/swappiness
30
[root@localhost ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@localhost ~]#
[root@localhost ~]# cat /proc/sys/vm/swappiness
10
這裡我們的修改已經生效,但是如果我們重新開機了系統,又會變成60.
--永久修改:
在/etc/sysctl.conf 檔案裡添加如下參數:
vm.swappiness=10
或者:
[root@localhost ~]# echo 'vm.swappiness=10'>> /etc/sysctl.conf