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

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

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

系統環境: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*"

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

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

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

這裡主要記錄一些關於VM調整的一些參數.

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

more vm.txt

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

cd /proc/sys/vm ; ls

看看這些文件都在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.*”

這些參數對應的文件路徑都在這個目錄下:/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

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

本文出自 「寧靜致遠」 博客,請務必保留此出處http://skyou.blog.51cto.com/2915693/558461





[火星人 ] Linux系統優化(2)---sysctl設置內核參數之VM已經有767次圍觀

http://coctec.com/docs/linux/show-post-48254.html