楼主: BTxigua

[精华] 再发一篇吐血原创:AIX主机性能评估

[复制链接]
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
11#
发表于 2007-10-24 19:21 | 只看该作者
顶起来,斑竹也得加个精华啊

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
12#
发表于 2007-10-24 19:25 | 只看该作者
纯属垃圾贴

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
13#
 楼主| 发表于 2007-10-24 20:10 | 只看该作者
6、解决CPU占用的惩罚机制nice和renice
指定和修改命令的优先级。
系统中运行的每个进程都有一个优先级,我们可以用ps命令看到,这个优先级为PRI,PRI的值越小,优先级越高,能占用更多的CPU时间片。系统默认的PRI为60,我们可以通过nice命令和renice命令来改变一个进程的优先级,从而控制进程对CPU时间片的占用。
任何一个用户都可以使用nice命令来使他的进程以低于系统默认的pri运行。但是只有root用户才可以使进程以高于默认的pri运行。
我们先来看一下nice命令的使用方法:
#nice –n -5 vmstat 2 10 >vmstat.out
# ps -el
F S UID     PID    PPID   C PRI NI ADDR    SZ    WCHAN    TTY  TIME CMD
200001 A 0  704738 1523728   0  55 15 aee1400   544 f100009e63c23e30  pts/1  0:00 vmstat
指定程序以nice值-5开始运行。程序开始后,nice的值为15,PRI的值为55。
nice命令可以指定的范围为-20 (最高优先级)到 20 (最低优先级)。在AIX5.3中,默认的nice为20。
# vmstat 2 10 >vmstat.out
# ps -el
F S UID     PID    PPID   C PRI NI ADDR    SZ    WCHAN    TTY  TIME CMD
200001 A   0  704740 1523728   0  60 20 32ec6400   472 f100009e63c23e30  pts/1  0:00 vmstat64
    可以看到默认的情况下,系统使用的nice=20,pri=60 。

    实际上,在使用nice指定的时候,我们也可以使用超出闭区间[-20,20]的值,比如:
nice –n -33 vmstat 2 10 >vmstat.out
# ps -el
F S UID     PID    PPID   C PRI NI ADDR    SZ    WCHAN    TTY  TIME CMD

200001 A   0  319652 1523728   0  40  0 82ef0400   544 f100009e63c23e30  pts/1  0:00 vmstat64
    上例中,我们指定的nice小于-20,得到最高的优先级(pri=40)。反之,如果我们指定nice的值超过20,比如nice=21,我们将得到最低的优先级值pri=100。

renice不能在具有固定优先级的进程上使用。非root用户可以在一个或多个运行进程的nice值上加一个指定的值,但不能从中减去指定的值。也就是只能降低进程的优先级,而不能增加优先级。
renice -n -10 pidnumber ,将指定的进程nice值减小10。
renice -n +5 pidnumber ,将指定的进程nice值增加5。
根据nice值的不同取值,这里renice的值可以取值的范围是闭区间[-40,40 ]。为什么取值范围是这个呢?我们可以这样来理解,通过ps –l命令,我们可以看到NI的取值范围是闭区间[0,40],我们使用renice需要改变的也就是整个值,考虑两个极端的情况,假如现在为0,我们要把它改到40,就必须得renice –n 40,如果现在是40,我们要把它改为0,则renice的值就得是-40了。
当然,跟nice一样,在这里renice的值在命中使用的时候也可以超出这个闭区间,不会报错,但有效的结果只落在这个闭区间内。
# ps l 1630282
FSUID  PID    PPID  C  PRI NI ADDR  SZ  RSS   WCHAN    TTY  TIME CMD
200001 A   0 1630282  680062   0  100 40 413e8400 472  484   EVENT  pts/1  0:00 v
# renice -n -30 1630282
# ps l 1630282
FSUID  PID    PPID  C  PRI NI ADDR  SZ  RSS   WCHAN    TTY  TIME CMD
200001 A   0 1630282  680062   0  50 10 413e8400 472  484   EVENT  pts/1  0:00 v

我们可以总结一下,pri值的取值公式大概如下:
优先级值(PRI)= 基本优先级(60)+nice损失 + 基于最近CPU使用情况的CPU损失
总的来说nice值越小,进程的优先级越高,能分配到更多的cpu时间片。反之,也成立。

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
14#
 楼主| 发表于 2007-10-24 20:10 | 只看该作者
7、小结
对于系统cpu的监控,建议:
    1)使用vmstat进行分析
2)sar –P ALL 1 10 分析,多个cpu间的负载是否平衡
3)ps aux 查看
4)tprof查看更详细的信息

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
15#
 楼主| 发表于 2007-10-24 20:31 | 只看该作者
最初由 iamlargelove 发布
[B]纯属垃圾贴 [/B]


靠。太没品了。

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
42
奥运会纪念徽章:跳水
日期:2008-09-08 16:00:45茶鸡蛋
日期:2013-01-18 12:36:552013年新春福章
日期:2013-02-25 14:51:24复活蛋
日期:2013-03-28 19:57:20茶鸡蛋
日期:2013-07-05 08:59:54茶鸡蛋
日期:2013-07-08 10:01:05福特
日期:2013-08-06 10:13:26马上有车
日期:2014-03-26 10:47:51马上有对象
日期:2014-04-28 13:43:04马上有钱
日期:2014-07-19 16:38:11
16#
发表于 2007-10-24 20:39 | 只看该作者
发错地方了吧

楼主不厚道,这么好的文档不共享
上传太大,给大家个链接

http://www.baidu.com/s?ie=gb2312 ... 6%B8%C4%CF&ct=0

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
17#
 楼主| 发表于 2007-10-24 20:42 | 只看该作者
第二部分
二、Memory性能评估        11
1、VMM的管理简介        11
2、使用vmstat确定内存的使用情况        14
3、svmon命令        14
4、内存的调整        15

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
18#
 楼主| 发表于 2007-10-24 20:43 | 只看该作者
1、VMM的管理简介
首先,还是简单讲解一下内存以及的VMM的一点工作原理。
内存和交换空间一般都是用页面来进行分配和管理的。在内存中存在两种类型的页面:计算页面(一般为可执行文件段中的页面)和文件页面(存储的数据文件的页面)。当我们执行程序或者读入数据的时候,内存中的页面就逐渐被占用。当空闲的内存只剩maxfree的时候,vmm的调页就被唤醒,通过调页算法,将内存中的页面转移到交换空间中。一直到空闲内存达到maxfree,才停止调页。
在这里,我们涉及到两个参数:
1)        Minfree:最小空闲页链表尺寸。一旦低于该值,系统偷页以填充页链表,保证有足够的内存页面。偷页就是将不常用的页面替换出去。
2)        Maxfree:最大空闲页链表尺寸。一旦高于该值,系统停止偷页。
    如果发现空闲列表不足,可以用下面的方法增加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
               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
               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值给出的使内存中文件页数。
    如果系统在向调页空间调出页面,可能使因为内存中的文件页数低于maxperm,从而也调出了部分的计算页面以达到maxperm的要求。在这种情况下,可以考虑把maxperm降低到低于numperm的某个值,从而阻止计算页面的调出。
    maxclient通常应该设置为一个小于或者等于maxperm的值。
    增强JFS文件系统为它的缓冲区高速缓存使用客户机文件,这不受maxperm和minperm的影像。为了在限制增强JFS文件系统使用高速缓存,可以指定maxclient的值,避免在它进行页面替换的时候,替换其他类型的页。

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
19#
 楼主| 发表于 2007-10-24 20:44 | 只看该作者
2、使用vmstat确定内存的使用情况
    主要检查vmstat输出的 memory和pages列和faults列。详细的说明见前一节cpu评估说明。

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
20#
 楼主| 发表于 2007-10-24 20:47 | 只看该作者
4、内存的调整
    具体调整需要结合系统运行的应用程序对症下药,如调整minperm/maxperm将改变内存与PAGING SPACE之间的交换算法,调整minpgahead/maxpgahead将改变内存块请求机制,调整minfree/maxfree将改变内存紧张时的内存清理刷新机制,等等。如果数据库使用裸设备,并且没有太多其他的应用,因为裸设备不需要文件系统的缓存,所以可以降低minperm,maxperm,maxclient的默认值,降低操作系统对内存的不必要的占用。
案例:
计费数据库数据库响应变慢,内存16G,裸设备,却存在很多的PI,PO情况。
在检查与内存相关的系统参数,发现如下问题:
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

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表