淺談Linux服務器究竟設置多大交換分區合適

http://300second.blog.51cto.com/7582/1131191


年前一客戶來電,說他們信息中心機房一臺Linux服務器運行緩慢,系統服務出現間歇性停止響應,讓過去幫忙處理一下這一問題。

到達現場之後,發現此服務器的物理內存是16G,而最初裝機的時候,系統管理人員卻只分配了2G的虛擬內存。查看內存的使用狀況,物理內存並沒有完全耗盡,但虛擬內存已經耗盡,整個系統CPU負載和磁盤IO都非常高。

知道了問題所在是由於交換分區不足導致,那麼解決方法就是:將虛擬內存通過虛擬文件的方式增加到8G,系統運行狀況明顯好轉。

其實虛擬內存並不是等到物理內存用盡了才使用的,是否儘量的使用或不使用swap,在內核空間有一個參數控制。

[root@server ~]# cat /proc/sys/vm/swappiness
 60 

swappiness=0 的時候表示最大限度使用物理內存,然後纔是swap空間;swappiness=100 的時候表示積極的使用swap分區,並且把內存上的數據及時的搬運到swap空間裏面。

對於現在動輒幾十GB、上百GB物理內存的服務器來說,究竟爲其Linux系統設置多大的交換分區合適呢?爲此,我引用紅帽官方文庫裏的一段文字進行淺析說明。

目前Red Hat(紅帽官方)推薦交換分區的大小應當與系統物理內存的大小保持線性比例關係。不過在小於2GB物理內存的系統中,交換分區大小應該設置爲內存大小的 兩倍,如果內存大小多於2GB,交換分區大小應該是物理內存大小加上2GB。其原因在於,系統中的物理內存越大, 對於內存的負荷可能也越大。

但是,如果物理內存大小擴展到數百GB,這樣做就沒什麼意義了。

實際上,系統中交換分區的大小並不取決於物理內存的量,而是取決於系統中內存的負荷。Red Hat Enterprise Linux 5可以在這樣的情況下工作:完全沒有交換分區,而且系統中匿名內存頁和共享內存頁小於3/4的物理內存量。在這種情況下,系統會將匿名內存頁和共享內存頁鎖定在物理內存中,而使用剩餘的物理內存來緩衝文件系統數據(pagecache),當內存耗盡時,系統內核只會回收利用這些pagecache內存。

考慮到以下情況:
1)安裝系統時難以確定內存的負荷,如何設置交換分區大小
2)系統中物理內存越大,所需交換分區就會越少

因此,在Red Hat Enterprise Linux 5中,以下是設置合適的交換分區大小的規則:
 

注:適用於RHEL 5.x(CentOS 5.x)“5的版本”

發佈了104 篇原創文章 · 獲贊 13 · 訪問量 86萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章