AIX 5.3主机性能评估-Memory性能评估

Memory 性 能评估

1 VMM 的管理简介

首先,还是简单讲解一 下内存以及的 VMM 的 一点工作原理。

内存和交换空间一般都 是用页面来进行分配和管理的。在内存中存在两种类型的页面:计算页面(一般为可执行文件段中的页面)和文件页面(存储的数据文件的页面)。当我们执行程序 或者读入数据的时候,内存中的页面就逐渐被占用。当空闲的内存只剩 maxfree 的时候, vmm 的调页就被唤醒,通过调页算法,将内存中的页面转移到交换空间中。一直到空闲内存达到 maxfree ,才停止调页。

在这里,我们涉及到两个参数:

1)        Minfree :最小空闲页链表尺寸。一旦低于该值,系统偷页以填充页链表,保证有足够的内存页面。偷页就是将不常 用的页面替换出去。

2)        Maxfree :最大空闲页链表尺寸。一旦高于该值,系统停止偷页。

www.ixdba.net

 

    如果发现空闲列表不足,可以用下面的方法增加 minfree 参数

#vmo -o minfree=1000 -o maxfree=1008

Setting maxfree to 1008

Setting minfree to 1000

#vmo –o minfree=1000 –o maxfree=1008 –P  # -P 参数使修改永久生效

一般情况下, minfree maxfree 通过下面的公式得到:

maxfree=minmum(memory/128,128) ,minfree=maxfree-8

注意:在 AIX 5.2 之前的版本请使用 /usr/samples/kernel/vmtune 命令。

#/usr/samples/kernel/vmtune –f 1000 –F 1008

 

    另外,关于内存的使用,我们还有两个经常碰到的参数需要关注:

Minperm :用户 I/O 文件访问的最小缓冲区页数

Maxperm :用户 I/O 文件访问的最大缓冲区页数

Minperm maxperm 这两个参数的默认值分别为 20 %和 80 %。在这里主要与性能相关的是 maxperm 参数。 maxperm 参数指定了文件页面可以占用内存的上限,因为文件页面不主动释放,所以很容易造成内存的文件页面过 高的占用,导致其他的应用内存使用紧张。调整参数值的方法如下:

#vmo -o maxperm%=80 -o minperm%=20

Setting minperm% to 20

Setting maxperm% to 80

AIX 5.2 之前的版本请使用 /usr/samples/kernel/vmtune 命令。

#/usr/samples/kernel/vmtune -p 20 P 80 min max 的值分别设置为 20 %和 80 %。

 

查看当前的参数设置方法如下:

1 vmo –a 显示当前所有的参数设置

AIX 5.2 之前的版本请使用 # /usr/samples/kernel/vmtune 显示当前所有的参数设置

    #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% = 80

              

maxfree = 1088

                maxperm = 4587812

              maxperm% = 80

                maxpin = 4881650

               maxpin% = 80

       mbuf_heap_psize = 4096

       memory_affinity = 1

         memory_frames = 6029312

         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 = 4

IXDBA.NET技术社区

               minfree = 960

               minperm = 1146952

              minperm% = 20

             nokilluid = 0

               npskill = 49152

             npsrpgmax = 393216

             npsrpgmin = 294912

           npsscrubmax = 393216

           npsscrubmin = 294912

               npswarn = 196608

      num_spec_dataseg = 0

              numpsblks = 6291456

     page_steal_method = 0

          pagecoloring = n/a

       pinnable_frames = 5601758

  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 = 0

  vm_modlist_threshold = -1

      vmm_fork_policy = 1

    vmm_mpsize_support = 1

2 vmstat -v

# vmstat -v

              6029312 memory pages

              5734766 lruable pages

              2801540 free pages

                    4 memory pools

               406918 pinned pages

                 80.0 maxpin percentage

                 20.0 minperm percentage

                 80.0 maxperm percentage

                  2.3 numperm percentage

IXDBA.NET社区论坛

               135417 file pages

                  0.0 compressed percentage

                    0 compressed pages

                  0.0 numclient percentage

                 80.0 maxclient percentage

                    0 client pages

                    0 remote pageouts scheduled

               312417 pending disk I/Os blocked with no pbuf

                    0 paging space I/Os blocked with no psbuf

                 2878 filesystem I/Os blocked with no fsbuf

                    0 client filesystem I/Os blocked with no fsbuf

                    0 external pager filesystem I/Os blocked with no fsbuf

显示 minperm maxperm numperm 的值。 numperm 值给出的是内存中文件页数。

系统调页的规则:

1)        如果 numperm>maxperm ,则只 调出文件页面。

2)        如果 numperm<minperm ,则同 时调出文件页面和计算页面。

3)        如果 minperm<numperm<maxperm ,则只调出文件页面,除非新调入的文件页面大于计算页面的总和。

    如果系统在向调页空间调出页面,可能使因为内存中的文件页数低于 maxperm ,从而也调出了部分的计算页面 以达到 maxfree 的要求。在这种情况下,可以考虑把 maxperm 降低到低于 numperm 的某个值,从而阻止计算页面的调出。在 5.2 ML4 以后的版本中,为了防止计算页面被调出,可以采用另外一个方法, 就是设置参数 lru_file_repage=0 。将该参数设为 0 ,则告诉 vmm 在进行页面替换的时候,优先替换文件页面。

    maxclient 通常应该设置为一个小于或者等于 maxperm 的值。

    增强 JFS 文件系统为它的缓冲区高速缓存使用客户机文件,这不受 maxperm minperm 的影响。为了在限制增强 JFS 文件系统使用高速缓存,可以指定 maxclient 的值,避免在它进行页面 替换的时候,替换其他类型的页。

IXDBA.NET社区论坛

 

 

2 、使用 vmstat 确定内存的使用情况

     主要检查 vmstat 输出的 memory pages 列和 faults 列。详细的说明见前一节 cpu 评估说明。

  

3 svmon 命令

# svmon -G -i 2 2

               size      inuse       free        pin    virtual

memory      2097136     236845    1860291     152150     194943

pg space    1048576        960

 

                work       pers       clnt      lpage

pin          151904        246          0          0

in use       194960      41885          0          0

               size      inuse       free        pin    virtual

memory      2097136     236853    1860283     152150     194947

pg space    1048576        960

 

               work       pers       clnt      lpage

pin          151904        246          0          0

in use       194964      41889          0          0

 

memory

¨         size 物理内存总页数。 4KB/

¨         inuse 物理内存中正在使用的内存页面数。包含活动进程和已经终止的进程的持久 文件页面。

¨         free 空闲列表中的页面数量

¨         pin 锁定在内存中的页面数量(锁定的意思就是不能被替换出去)

¨         virtual

pg space

www.ixdba.net

 

¨         size 调页空间总大小

¨         inuse 已经分配页的总数,也就是已经使用的调页空间页数

pin

¨         work 物理内存中的工作页面数

¨         pers 物理内存中的持久页面数

¨         clnt 物理内存中的客户机页面数(客户机页面就是一个远程文件页面)

inuse

¨         work 物理内存中的工作页面数

¨         pers 物理内存中的持久页面数

¨         clnt 物理内存中的客户机页面数(客户机页面就是一个远程文件页面)

 

 

3 ps 命令显示当前运行的进程状态信息。

运行下列命令,显示内 存占用前 10 位的 进程。

# ps gv |sort +6b -nr |head -10

  2490538      - A    191:56    0 11840 32748    xx 45762 20924  0.1  0.0 ora_j00

  2039970      - A    592:59   11 11728 32648    xx 45762 20924  0.3  0.0 ora_j00

  2588922      - A    1118:31   22 11712 32632    xx 45762 20924  0.6  0.0 ora_j0

  2523168      - A    305:01    1 11688 32608    xx 45762 20924  0.2  0.0 ora_j00

  2474214      - A     0:01    0 11588 32512    xx 45762 20924  0.1  0.0 ora_j00

  2007282      - A     0:01    0 10384 31308    xx 45762 20924  0.0  0.0 ora_j00

  508120      - A    32:58  662  9344 27164    xx 45762 20924  0.0  0.0 ora_dbw

  1351908      - A     0:02    1  5668 26560    xx 45762 20924  0.0  0.0 oracleo

  3801250      - A    203:22    0  5648 26556    xx 45762 20924  0.1  0.0 oracleo

4 、内 存的调整

    具体调整需要结合系统运行的应用程序对症下药,如调整 minperm/maxperm 将改变内存与 PAGING SPACE 之间的交换算法, 调整 minpgahead/maxpgahead 将改变内存块请求机制,调整 minfree/maxfree 将改变内存紧张时的内存清理刷新机制,等等。如果数据库使用裸设备,并且没有太多其他的应用,因为 裸设备不需要文件系统的缓存,所以可以降低 minperm maxperm maxclient 的默认值,降低操作系统对内存的不必要的占用。

案例:

计费数据库数据库响应 变慢,内存 16G ,裸设 备,却存在很多的 PI,PO 情况。

www.ixdba.net

 

在检查与内存相关的系统参数,发现 如下问题:

minperm% = 20   maxperm% = 80 maxclient% = 80

说明:以上三个参数为 系统缺省配置,其表示,使用文件系统时,最多可使用 80% * 16G=10.8G ,用于缓存所访问的文件。

结论:由于以上参数采 用系统缺省配置,文件系统缓存最大可以达到 10.8G , 在执行大量的文件 cp 操作后,系统的可用内存量迅速下降,在 其后的计费过程中,由于大量 page in/page out 操作引起系统严重性能瓶颈。

优化:

maxperm% = 30 maxclient% = 30

#vmo –o maxperm%=30 –P

#vmo –o maxclient%=30 –P

5.2 以前 版本

/usr/samples/kernel/vmtune –p 20 –P 30

/usr/samples/kernel/vmtune –t 30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值