oracle&linux環境vm相關的調整

zhanglincon發表於2012-02-01

oracle&linux環境vm相關的調整

由於linux記憶體管理傾向先將記憶體分配到cache裡,經常導致系統記憶體free值很低,這個時候如果系統發生頻繁的記憶體申請,例如資料庫login或者需要申請比較多的記憶體時,可能會導致系統嚴重swap,影響系統的穩定性。對於不使用檔案系統cache來運算元據庫檔案的環境,檔案系統cache其實並不起太大作用,linux下沒有像aix下直接控制檔案系統記憶體使用比例的引數,只能通過配置基於內容大小和記憶體駐留時間的兩種重新整理兩種策略來管理髒資料的寫回。

為了系統能夠平穩執行,希望能夠通過對系統vm管理上做些調整,防止swap造成的系統不穩定局面,根據同事的建議,又參考了些原來收集vm管理的資料,初步整理了一些調整內容。

1.設定lock_sga為true,確保sga部分記憶體不被swap出去。

2.適當增大min_free_kbytes值,使系統保證一定的free mem,這樣可以很大程度上緩解session衝擊帶來的swap負面效應,具體保留多大,也沒有什麼經驗,256/512M對於64G實體記憶體可以參考下。

3.適當減小swapiness值,使系統儘量不要使用swap,可以設定為10。

4.調整dirty_background_ratio&dirty_expire_centisecs&dirty_ratio
&dirty_writeback_centisecs這4個引數,從而調整後臺pdflush程式的回寫策略。

通過上面調整,基本上不會出現swap情況,但是相應系統的效能會有一定程度的下降,特別是如果涉及大量檔案操作如匯出資料到系統檔案的時候。

大家在linux上是否也有這樣的問題?對這樣的情況,應該怎麼處理?

附上網上查到關於vm優化的一些資料,出處忘記了,如果侵犯到您的版權,請及時通知我,我會盡快處理,謝謝!

proc/sys/vm/優化
1) /proc/sys/vm/block_dump
該檔案表示是否開啟Block Debug模式,用於記錄所有的讀寫及Dirty Block寫回動作。

預設設定:0,禁用Block Debug模式
2) /proc/sys/vm/dirty_background_ratio
該檔案表示髒資料到達系統整體記憶體的百分比,此時觸發pdflush程式把髒資料寫回磁碟。

預設設定:10
3) /proc/sys/vm/dirty_expire_centisecs
該檔案表示如果髒資料在記憶體中駐留時間超過該值,pdflush程式在下一次將把這些資料寫回磁碟。

預設設定:3000(1/100秒)
4) /proc/sys/vm/dirty_ratio
該檔案表示如果程式產生的髒資料到達系統整體記憶體的百分比,此時程式自行把髒資料寫回磁碟。

預設設定:40
5) /proc/sys/vm/dirty_writeback_centisecs
該檔案表示pdflush程式週期性間隔多久把髒資料寫回磁碟。

預設設定:500(1/100秒)
6) /proc/sys/vm/vfs_cache_pressure
該檔案表示核心回收用於directory和inode cache記憶體的傾向;預設值100表示核心將根據pagecache和swapcache,把directory和inode cache保持在一個合理的百分比;降低該值低於100,將導致核心傾向於保留directory和inode cache;增加該值超過100,將導致核心傾向於回收directory和inode cache。

預設設定:100
7) /proc/sys/vm/min_free_kbytes
該檔案表示強制Linux VM最低保留多少空閒記憶體(Kbytes)。

預設設定:724(512M實體記憶體)
8) /proc/sys/vm/nr_pdflush_threads
該檔案表示當前正在執行的pdflush程式數量,在I/O負載高的情況下,核心會自動增加更多的pdflush程式。

預設設定:2(只讀)
9) /proc/sys/vm/overcommit_memory
該檔案指定了核心針對記憶體分配的策略,其值可以是0、1、2。
0, 表示核心將檢查是否有足夠的可用記憶體供應用程式使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程式。
1, 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體(參照overcommit_ratio)。

預設設定:0
10) /proc/sys/vm/overcommit_ratio
該檔案表示,如果overcommit_memory=2,可以過載記憶體的百分比,通過以下公式來計算系統整體可用記憶體。
系統可分配記憶體=交換空間+實體記憶體*overcommit_ratio/100

預設設定:50(%)
11) /proc/sys/vm/page-cluster
該檔案表示在寫一次到swap區的時候寫入的頁面數量,0表示1頁,1表示2頁,2表示4頁。

預設設定:3(2的3次方,8頁)
12) /proc/sys/vm/swapiness
該檔案表示系統進行交換行為的程度,數值(0-100)越高,越可能發生磁碟交換。

預設設定:60
13) legacy_va_layout
該檔案表示是否使用最新的32位共享記憶體mmap()系統呼叫,Linux支援的共享記憶體分配方式包括mmap(),Posix,System VIPC。
0, 使用最新32位mmap()系統呼叫。
1, 使用2.4核心提供的系統呼叫。

預設設定:0
14) nr_hugepages
該檔案表示系統保留的hugetlb頁數。
15) hugetlb_shm_group
該檔案表示允許使用hugetlb頁建立System VIPC共享記憶體段的系統組ID。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8554499/viewspace-715427/,如需轉載,請註明出處,否則將追究法律責任。

相關文章