Linux系統優化(2)---sysctl設置內核參數之VM

爲方便對系統內核參數調節,現根據官方內核包裏的文檔做了一些摘譯。

系統環境:CentOS  5.5 X86

可以使用下面的方法下載內核包:

cd   /usr/src/

wget  http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.8.tar.bz2

tar    xvfj   linux-2.6.18.8.tar.bz2

mv  linux-2.6.18.8   linux

cd /usr/src/linux/Documentation/

 

使用find命令查找sysctl目錄及文件:

cd /usr/src/linux/Documentation/

find . -name "*sysctl*"

Image00234

 

可以看到有一個目錄和兩個文件。進入到sysctl目錄。

cd /usr/src/linux/Documentation/sysctl/

可以看到有以下幾個文件:

Image00235

 

這裏主要記錄一些關於VM調整的一些參數。

可以打開vm.txt文件,看看裏面寫了些什麼,很多重要參數說明都在這裏解釋着呢。

more  vm.txt

Image00237

關於vm的這些參數文件都在/proc/sys/vim/目錄,可以看下,這個目錄下有些什麼文件:

cd      /proc/sys/vm  ;   ls

Image00238

看看這些文件都在vm.txt裏有具體的說明。

上圖中的一些參數的解釋並不在vm.txt,而在proc.txt文件,proc.txt的路徑/usr/src/linux/Documentation/filesystems/proc.txt:

dirty_ratio, dirty_background_ratio, dirty_expire_centisecs,dirty_writeback_centisecs, vfs_cache_pressure, laptop_mode,block_dump, swap_token_timeout, drop-caches

 

好了,說一堆沒用的,下面跟着vm.txt文件,說一些比較重要的參數吧:

可以執行命令,如下圖示:

sysctl  -a|grep  “^vm.*”

Image00240

 

這些參數對應的文件路徑都在這個目錄下:/proc/sys/vm/

修改sysctl裏的參數值等於修改/proc/sys/vm/目錄下的文件值。以下介紹幾個重要的參數:

(1)vm.overcommit_memory

默認值爲:0

從內核文檔裏得知,該參數有三個值,分別是:

0:當用戶空間請求更多的的內存時,內核嘗試估算出剩餘可用的內存。

1:當設這個參數值爲1時,內核允許超量使用內存直到用完爲止,主要用於科學計算

2:當設這個參數值爲2時,內核會使用一個決不過量使用內存的算法,即系統整個內存地址空間不能超過swap+50%的RAM值,50%參數的設定是在overcommit_ratio中設定。

(2)vm.overcommit_ratio

默認值爲:50

這個參數值只有在vm.overcommit_memory=2的情況下,這個參數纔會生效。

(3)vm.page-cluster

默認值爲:3

這個參數用來控制VM的虛擬內存的,讀取大量的page,同時發生page錯誤時,linux VM子系統爲了避免過多的磁盤尋址。讀取大量的page依賴於系統的內存。內核 一次讀取page的數量等於2的page-cluster值的次方即2^page-cluster。當設的值超過2的5次方即2^5,它不會被swap所檢測到。因爲swap的數據page最大爲2的5次方即32-page。

(4)vm.min_free_kbytes

默認值 :3519

這個參數值用來強制linux虛擬內存保留最小值的空閒。

(5)vm.drop_caches

默認值 :0

設置這個參數的值會讓內核清理內存中的caches、denties、inodes,從而釋放更多的內存。

有三個值可以設置,每設一個值都會引發內核釋放不同的內容:

1:釋放pagecache

2:釋放denties、inodes

3:釋放pagecache、denties、inodes

由於這是一個非破壞性操作而且髒對象不會被釋放,因此應當先執行”sync“後再設置這個參數。

(6)vm.dirty_writeback_centisecs

默認值:499

這個參數會觸發pdflush回寫進程定期喚醒並將old數據寫到磁盤。每次的喚醒的間隔,是以數字100算做1秒。

如果將這項值設爲500就相當5秒喚醒pdflush進程。

如果將這項值設爲0就表示完全禁止定期回寫數據。

(7)vm.dirty_ratio

默認值:40

參數意義:控制一個在產生磁盤寫操作的進程開始寫出髒數據到內存緩衝區。緩衝區的值大小是系統內存的百分比。增大會使用更多系統內存用於磁盤寫緩衝,可以提高系統的寫性能。當需要持續、恆定的寫入場合時,應該降低該數值。

(8)vm.dirty_expire_centisecs

默認值:2999

參數意義:用來指定內存中數據是多長時間纔算髒(dirty)數據。指定的值是按100算做一秒計算。只有當超過這個值後,纔會觸發內核進程pdflush將dirty數據寫到磁盤。

(9)vm.dirty_background_ratio

默認值 :10

參數意義:控制pdflush後臺回寫進程開始寫出髒數據到系統內存緩衝區。緩衝區的值大小是系統內存的百分比。增大會使用更多系統內存用於磁盤寫緩衝,可以提高系統的寫性能。當需要持續、恆定的寫入場合時,應該降低該數值。

(10)vm.vfs_cache_pressure

默認值:100

參數意義:控制內核回收再利用用於緩存目錄與inode對象的內存的趁勢。

默認值設爲100表示內核以平等的速度去考慮pagecache和swapcache的回收再利用。

減小它,會觸發內核保持目錄與inodes的緩存內存。

增大它,會觸發內核回收再利用目錄與inodes的緩存內存。

(11)vm.panic_on_oom

默認值 :0

參數意義:當超出內存時,是否開啓內核崩潰特性。

當設爲1時,表示當發生超出內存時,內核會panic

當設爲0時,表示當發生超出內存時,內核會kill掉一些空閒進程從而不讓系統內核崩潰而繼續運行,通常也稱它爲oom_killer

因此一般用它的默認值即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章