oracle:swap性能調優

目標:解決大量Log寫入佔用大量的File Cache,內容利用不充分致使swapnode


基本原則:儘可能使用內存,減小swap,同時,儘早flush到外存,早點釋放內存給寫cache使用。---特別在持續的寫入操做中,此優化很是有效。linux


調優措施:api


vm.swapiness :60 改爲 10
vm.dirty_ratio:90 改爲 10
vm.dirty_background_ratio:60 改爲 5
vm.dirty_expire_centisecs:3000改爲500
vm.vfs_cache_pressure:100 改爲 500


下面重點解釋一下各個配置的含義:緩存


一,vm.swappiness優化:bash


swappiness的值的大小對如何使用swap分區是有着很大的聯繫的。swappiness=0的時候表示最大限度使用物理內存,而後纔是 swap空間,swappiness=100的時候表示積極的使用swap分區,而且把內存上的數據及時的搬運到swap空間裏面。linux的基本默認設置爲60,具體以下:app


cat /proc/sys/vm/swappiness
60


也就是說,你的內存在使用到100-60=40%的時候,就開始出現有交換分區的使用。你們知道,內存的速度會比磁盤快不少,這樣子會加大系統io,同時造的成大量頁的換進換出,嚴重影響系統的性能,因此咱們在操做系統層面,要儘量使用內存,對該參數進行調整。異步


臨時調整的方法以下,咱們調成10:ide


sysctl vm.swappiness=10
vm.swappiness = 10
cat /proc/sys/vm/swappiness
10


這只是臨時調整的方法,重啓後會回到默認設置的性能


要想永久調整的話,須要將在/etc/sysctl.conf修改,加上:優化


cat /etc/sysctl.conf
vm.swappiness=10

 


二,vm.dirty_ratio: 同步刷髒頁,會阻塞應用程序


這個參數控制文件系統的同步寫寫緩衝區的大小,單位是百分比,表示當寫緩衝使用到系統內存多少的時候(即指定了當文件系統緩存髒頁數量達到系統內存百分之多少時(如10%),),開始向磁盤寫出數據,即系統不得不開始處理緩存髒頁(由於此時髒頁數量已經比較多,爲了不數據丟失須要將必定髒頁刷入外存),在此過程當中不少應用進程可能會由於系統轉而處理文件IO而阻塞。


增大之會使用更多系統內存用於磁盤寫緩衝,也能夠極大提升系統的寫性能。可是,當你須要持續、恆定的寫入場合時,應該下降其數值,通常啓動上缺省是 10。


 


三,vm.dirty_background_ratio:異步刷髒頁,不會阻塞應用程序 


這個參數控制文件系統的後臺進程,在什麼時候刷新磁盤。單位是百分比,表示系統內存的百分比,意思是當寫緩衝使用到系統內存多少的時候,就會觸發pdflush/flush/kdmflush等後臺回寫進程運行,將必定緩存的髒頁異步地刷入外存。增大之會使用更多系統內存用於磁盤寫緩衝,也能夠極大提升系統的寫性能。可是,當你須要持續、恆定的寫入場合時,應該下降其數值,通常啓動上缺省是 5。


注意:若是dirty_ratio設置比dirty_background_ratio大,可能認爲dirty_ratio的觸發條件不可能達到,由於每次確定會先達到vm.dirty_background_ratio的條件,然而,確實是先達到vm.dirty_background_ratio的條件而後觸發flush進程進行異步的回寫操做,可是這一過程當中應用進程仍然能夠進行寫操做,若是多個應用進程寫入的量大於flush進程刷出的量那天然會達到vm.dirty_ratio這個參數所設定的坎,此時操做系統會轉入同步地處理髒頁的過程,阻塞應用進程。


 


四,vm.dirty_expire_centisecs:


   這個參數聲明Linux內核寫緩衝區裏面的數據多「舊」了以後,pdflush進程就開始考慮寫到磁盤中去。單位是 1/100秒。缺省是 3000,也就是 30 秒的數據就算舊了,將會刷新磁盤。對於特別重載的寫操做來講,這個值適當縮小也是好的,但也不能縮小太多,由於縮小太多也會致使IO提升太快。建議設置爲 1500,也就是15秒算舊。固然,若是你的系統內存比較大,而且寫入模式是間歇式的,而且每次寫入的數據不大(好比幾十M),那麼這個值仍是大些的好。


 


五,Vm.dirty_writeback_centisecs:


   這個參數控制內核的髒數據刷新進程pdflush的運行間隔。單位是 1/100 秒。缺省數值是500,也就是 5 秒。若是你的系統是持續地寫入動做,那麼實際上仍是下降這個數值比較好,這樣能夠把尖峯的寫操做削平成屢次寫操做。設置方法以下:

 echo "200" > /proc/sys/vm/dirty_writeback_centisecs


若是你的系統是短時間地尖峯式的寫操做,而且寫入數據不大(幾十M/次)且內存有比較多富裕,那麼應該增大此數值:


 


六,Vm.vfs_cache_pressure:


增大這個參數設置了虛擬內存回收directory和inode緩衝的傾向,這個值越大。越易回收


該文件表示內核回收用於directory和inode cache內存的傾向;缺省值100表示內核將根據pagecache和swapcache,把directory和inode cache保持在一個合理的百分比;下降該值低於100,將致使內核傾向於保留directory和inode cache;增長該值超過100,將致使內核傾向於回收directory和inode cache。


This variable controls the tendency of the kernel to reclaim thememory which is used for caching of VFS caches, versus pagecache and swap.Increasing this value increases the rate at which VFS caches are reclaimed.Itis difficult to know when this should be changed, other than byexperimentation. The slabtop command (part of the package procps) shows topmemory objects used by the kernel. The vfs caches are the "dentry"and the "*_inode_cache" objects. If these are consuming a largeamount of memory in relation to pagecache, it may be worth trying to increasepressure. Could also help to reduce swapping. The default value is 100.

相關文章
相關標籤/搜索