AIX 中 Paging Space 使用率过高的分析与解决(转)

AIX操作系统中Paging Space是很重要的设备,当系统中Paging Space使用率过高、系统内存不足时,
将影响系统的整体性能,甚至会造成系统的挂起。针对这种情况,通常可以靠增加Paging Space来加
以缓解;但是当Paging Space已经相当大,而Paging Space使用率仍旧居高不下时,则需要通过进一
步的分析来找出原因并加以解决。文中分析了几种Paging Space使用率持续增长直至过高的常见原因,
并给出了相应的解决方案,以确保Paging Space使用率被控制在安全的范围内。

1 Paging Space的创建原则
            AIX中Paging Space大小确定的指导原则如下:
                系统实际内存小于64MB, paging space= 2 * RAM ;
                系统实际内存在 64MB to 256MB 之间, Page Space = RAM size + 16MB ;
                系统实际内存大于 256MB , Page Space = 512 + ( RAM - 256 ) * 1.25 ;
                当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB, 然后观察paging space的使用情况,
                如果使用率超过70%, 则需要增加paging space 或把OS中的min_perm%,max_perm%和max_client%
                参数调小一点            。
           
            此外在创建Paging Space时还应遵循以下原则以提高性能:
           
            创建的数量应尽可能的多;
            每个Paging Space的大小应该相同;
            每个Paging Space应尽可能的分配在不同的硬盘上。
           
            AIX中可以通过命令lsps -s查看Paging Space的使用情况。列Total Paging Space给出的是系统总的Paging Space空间大小,Percent Used则表示已被占用的Paging Space的百分比。
           
            eg:
            # lsps -s
            Total Paging Space   Percent Used
                  16384MB               1%
             
            命令lsps -a可以用来查看Paging Space的分布情况
           
            # lsps -a
            Page Space      Physical Volume   Volume Group    Size %Used Active  Auto  Type
            hd6             hdisk0            rootvg       16384MB     1   yes   yes    lv

 
2 文件型内存对Paging Space使用率的影响

        AIX系统中,内存可以简单的分为两类:计算型内存和文件型内存。类似大量文件类操作,如压缩、
        数据库的dump/load等操作会大量占用文件型内存。如果按照系统缺省的配置,文件型内存最多会占
        用到内存总量的80%,由于文件型内存占用并不主动释放,从而可能造成内存资源的短缺及Paging Space
        使用率过高。
        命令topas可以用来查看文件型内存占用内存情况,在MEMORY一栏中的%Noncomp显示的是文件型内存的占用百分比。

            如果文件型内存所占比例很高,而Paging Space使用率居高不下时,
            可以通过降低minperm、maxperm的参数值来进行调优,减少文件型内存可占用的份额。
           
            在进行调整前,首先通过命令vmo -a/vmtune -a来查看目前的参数值;minperm及maxperm的缺省值分别是30%和80%。
           
            # vmo -a
            cpu_scale_memp = 8
            data_stagger_interval = 161
            defps = 1
            force_relalias_lite = 0
            framesets = 2
            htabscale = n/a
            kernel_heap_psize = 4096
            large_page_heap_size = 0
            lgpg_regions = 0
            lgpg_size = 0
            low_ps_handling = 1
            lru_file_repage = 1
            lru_poll_interval = 10
            lrubucket = 131072
            maxclient% = 10
            maxfree = 1088
            maxperm = 192213
            maxperm% = 10
            maxpin = 1613727
            maxpin% = 80
            mbuf_heap_psize = 4096
            memory_affinity = 1
            memory_frames = 1998848
            memplace_data = 2
            memplace_mapped_file = 2
            memplace_shm_anonymous = 2
            memplace_shm_named = 2
            memplace_stack = 2
            memplace_text = 2
            memplace_unmapped_file = 2
            mempools = 0
            minfree = 960
            minperm = 96106
            minperm% = 5
            nokilluid = 0
            npskill = 32768
            npsrpgmax = 262144
            npsrpgmin = 196608
            npsscrubmax = 262144
            npsscrubmin = 196608
            npswarn = 131072
            num_spec_dataseg = 0
            numpsblks = 4194304
            page_steal_method = 0
            pagecoloring = n/a
            pinnable_frames = 637301
            pta_balance_threshold = n/a
            relalias_percentage = 0
            rpgclean = 0
            rpgcontrol = 2
            scrub = 0
            scrubclean = 0
            soft_min_lgpgs_vmpool = 0
            spec_dataseg_int = 512
            strict_maxclient = 1
            strict_maxperm = 0
            v_pinshm = 1
            vm_modlist_threshold = -1
            vmm_fork_policy = 1#
           
           
            说明:
            (1) minperm%
            如果由文件页面占有的实际内存的百分比低于这个级别,则页面替换算法既替换文件页面也替换计算页面,而不管repage rate。
            # vmo -a |grep minperm%
            minperm% = 20
           
            (2) maxperm%
            如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换文件页面。
            # vmo -a |grep maxperm%
            maxperm% = 80
           
            (3) maxclient%
            如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换客户机页面。
            # vmo -a |grep maxclient%
            maxclient% = 80
           
            这三个参数,可以根据内存总量大小,进行适度调节。计算型内存与文件型内存,在实际的应用中,
            需要遵循以下一些原则(这些原则是自己归纳的):
                 1.使用的文件型内存百分比 + 使用的计算型内存百分比 < 100%
                 2.计算型内存中的pinned memory设置要合理,即sga大小要设置合理,要留一部份给OS,OS也需要pinned memory.当系统资源紧张时,OS的pinned memory具有最高的优先级.
                 3.保证系统非pinned 计算型 memory有一个合理的成长空间,这部份主要是给ORACLE PGA使用,
                   当连接数增长过快时,此内存的使用增长也相当的明显,而此增长很有可能会导致操作系统的交换。
                   当系统的使用的文件型内存百分比 + 使用的计算型内存百分比 >= 100%,系统便开始产生交换,系统的PAGING SPACE会持续的增长,
                   影响到产品库的安全。
                   恰当的设置OS内存参数,控制操作系统的交换,可以减少很多系统不稳定的情况发生。比如说操作系统执行重启命令都执行不了:
           
                 shutdown -Fr
           
             当由文件页面占有的实际内存的百分比处于 minperm 和 maxperm 之间时,VMM通常只替换文件页面,
             但是如果文件页面的重新调页(repaging)率高于计算页面的重新调页率的话,计算页面也被替换。
             页面替换算法的主要意图是确保计算页面得到合理的待遇。例如,对于可能会很快再次使用的程序文本页,
             顺序读取长的数据文件到内存中应该不会使它们丢失。对阈值和重新调页率使用页面替换算法可确保合理地
             对待这两种类型的页面,但仍稍微偏向有利于计算页面的一方。
           
            通过vmstat -v可以看到当前persistent或者client page的数目和百分比,可以作为系统调优的依据.
            # vmstat -v
            4079616 memory pages
            3870685 lruable pages
            601736 free pages
            2 memory pools
            535883 pinned pages
            80.0 maxpin percentage
            20.0 minperm percentage
            80.0 maxperm percentage
            66.2 numperm percentage
            2565739 file pages
            0.0 compressed percentage
            0 compressed pages
            66.7 numclient percentage
            80.0 maxclient percentage
            2583086 client pages
            0 remote pageouts scheduled
            28222 pending disk I/Os blocked with no pbuf
            0 paging space I/Os blocked with no psbuf
            2740 filesystem I/Os blocked with no fsbuf
            0 client filesystem I/Os blocked with no fsbuf
            106338 external pager filesystem I/Os blocked with no fsbuf
           
            List-based LRU (page_steal_method)
           
           
            在AIX 5.3, LRU算法可以用lists或者page frame. table,在AIX 5.3之前,只有page frame
            table的算法, The list-based algorithm provides a list of pages to scan for
            each type of segment. 下面是段类型的列表:
            Working
            Persistent
            Client
            Compressed
           
             
            # vmo -a |grep page_steal_method
            page_steal_method = 0
            如果page_steal_method = 1, 将采用list-based LRU算法, 如果page_steal_method
            parameter 为 0, 将采用physical-address-based scanning的方式.
            page_steal_method参数值只有在bosboot and reboot后生效.
           
            # vmo -L page_steal_method
            NAME CUR DEF BOOT MIN MAX UNIT TYPE
            DEPENDENCIES
            -------------------------------------------------------------------------------
            page_steal_method 0 0 0 0 1 boolean B
            -------------------------------------------------------------------------------
            strict_maxperm
            缺省为0. 当strict_maxperm 设置成 1, places a hard limit on how much memory
            is used for a persistent file cache by making the maxperm value be the
            upper limit for this file cache. 当达到上线的时候least recently used
            (LRU)将执行在persistent pages上.
           
           
            # vmo -a |grep strict_maxperm
            strict_maxperm = 0
            Enhanced JFS file system cache 相关的参数: maxclient, strict_maxclient和lru_file_repage
            Enhanced JFS file system cache使用client page来作为buffer
            cache,通过maxclient%来控制page stealing. 如果strict_maxlient设置为0,
            maxclient%将用来作为一个soft limit. 也就是说client
            pages可以超过maxclient参数,如果超过这个值,只有client file page被stolen.
            当lru_file_repage设置为1的时候,如果client pages的数目介于minperm和maxclient之间,
            LRU算法将参考repage的计数. 最近没有被referenced的page将被stolen. If the value of the
            file repage counter is higher than the value of the computational
            repage counter, computational pages, which are the working storage, are
            selected for replacement. If the value of the computational repage
            counter exceeds the value of the file repage counter, file pages are
            selected for replacement.
           
           
            当lru_file_repage设置为0的时候, 如果client pages的数目大于minperm,将选择file pages被替换.
            如果小于minperm,任何没有被referenced的page将被替换.
            注意:maxclient同样影响NFS client和compressed pages.
            # vmo -a |grep lru_file_repage
            lru_file_repage = 1
            # vmo -a |grep strict_maxclient
            strict_maxclient = 1
           
             
           
             
           
            工程经验
            内存调优主要集中在几个关键参数中,往往这几个关键参数就能很大地提高系统的内存使用性能.
            这几个参数是minperm%, maxperm%, maxclient%和lru_file_repage.
            原则:首先了解你的应用类型,是文件读写型还是数据库类型. 尽量保证你的应用运行所需要的数据充分地利用物理内存.
            具体的工程Tips例子请参见内存调优的工程经验篇
           
           
           
            3 应用程序内存泄露对Paging Space使用率的影响
            应用程序的内存泄露也是造成Paging Space使用率不断增长的另一常见原因,此类情况的解决方法主要是找出内存泄露的应用,然后进行修正或安装补丁。
           
            以下方法可用来找出发生内存泄露的应用:
           
            该命令每m秒钟按降序列出前n个最耗内存进程。为了便于分析,可以将结果输出到文件中,然后对内容进行分析,从而找出内存泄露的应用。
            下例中命令svmon -P -t 10 -i 5的结果被输出到文件svmonresult.txt中,该命令每5秒种输出一次最耗内存的前10个进程。
             svmon -P -t 10 -i 5 > svmonresult.txt
            找出发生内存泄露的应用后可自行进行修正或查找相关的补丁进行安装。
             
           
            4 数据库参数配置对Paging Space使用率的影响
            在装有数据库的系统环境中,数据库相关参数的设置不当也容易造成Paging Space的占用率过高

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/759027/viewspace-752506/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/759027/viewspace-752506/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值