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

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

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

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

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

[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的版本
相關文章
相關標籤/搜索