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.

相关文章
相关标签/搜索