淺談linux效能調優之二:最佳化swap分區 淺談linux效能調優之一:磁碟分割策略http://www.bkjia.com/os/201307/226371.html 先說說什麼是swap分區以及它的作用? Swap分區,即交換區,Swap空間的作用可簡單描述為:當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前啟動並執行程式 使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要運行時,再從Swap中恢 複儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行Swap交換。 其實,Swap的調整對Linux伺服器,特別是Web伺服器的效能至關重要。通過調整Swap,有時可以越過系統效能瓶頸,節省系統升級費用。 分配太多的Swap空間會浪費磁碟空間,而Swap空間太少,則系統會發生錯誤。 如果系統的實體記憶體用光了,系統就會跑得很慢,但仍能運行;如果Swap空間用光了,那麼系統就會發生錯誤。例如,Web伺服器能根據不同的請求數量衍生 出多個服務進程(或線程),如果Swap空間用完,則服務進程無法啟動,通常會出現“application is out of memory”的錯誤,嚴重時會造成服務進程的死結。因此Swap空間的分配是很重要的。 通常情況下,Swap空間應大於或等於實體記憶體的大小,最小不應小於64M,通常Swap空間的大小應是實體記憶體的2-2.5倍。但根據不同的應用,應有 不同的配置:如果是小的案頭系統,則只需要較小的Swap空間,而大的伺服器系統則視情況不同需要不同大小的Swap空間。特別是資料庫伺服器和Web服 務器,隨著訪問量的增加,對Swap空間的要求也會增加,具體配置參見各伺服器產品的說明。 另外,Swap分區的數量對效能也有很大的影響。因為Swap交換的操作是磁碟IO的操作,如果有多個Swap交換區,Swap空間的分配會以輪流的方式 操作於所有的Swap,這樣會大大均衡IO的負載,加快Swap交換的速度。如果只有一個交換區,所有的交換操作會使交換區變得很忙,使系統大多數時間處 於等待狀態,效率很低。用效能監控工具就會發現,此時的CPU並不很忙,而系統卻慢。這說明,瓶頸在IO上,依靠提高CPU的速度是解決不了問題的 看了這麼多,再想想有時在論壇中的有的人說的他們的記憶體很大而沒必要使用swap分區,別人10台機器能解決的問題,我們若合理使用swap分區,使用8台機器能解決的問題,何樂而不為呢 ? 下面來看看紅帽官方的建議: 圖1 下面說說swap分區的最佳化: 1.首先,做到盡量使用分區而非檔案,記住除非萬不得已 2.當然也可能是空間太小,那麼就自己添加swap分區 3.特別注意的的是使用分區號較小的分區(我在‘淺談linux效能最佳化之一:分區策略’中強調過) 4.分布到不同裝置上可以實現輪循 5.若真的有多個swap分區,也可以指定優先順序,意思也就是優先使用效能較好的分區 注意在設定檔/etc/fstab中的書寫:(數字越大,優先順序越高,也可以使用swapon -p 來指定) /dev/hda1 swap swap defaults,pri=10 0 0 /dev/hda5 swap swap defaults,pri=5 0 0 6.一個重要的參數: [root@desktop31 ~]# sysctl -a | grep vm.swa vm.swappiness = 60 linux核心調優過程有幾個特殊的值,包括這個,不是具體的百分比,而是一個期望值,在這裡越接近0盡量使用cache,越接近100盡量使用swap,只是個趨向值 7.兩個一般不調節的值: vm.swap_token_timeout = 300 時間間隔 vm.page-cluster = 3 一次性寫入swap的頁面數2^3*4K = 32K