免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1860 | 回复: 0
打印 上一主题 下一主题

如何通过sar快速定位制约系统性能的瓶颈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-19 08:34 |只看该作者 |倒序浏览

在系统运行效率慢之前和运行效率慢的时候分别执行sar操作,
对比二者的结果可以比较快的判断出问题所在
第1步:
# sar 1 5
09:35:13    %usr    %sys    %wio   %idle (-u)
09:35:14      17       0       0      83
09:35:15       5       0       0      95
09:35:16       5       0       0      95
09:35:17       5       0       0      95
09:35:18       5       1       0      94
Average        7       0       0      92
对比系统变慢之前和慢之间分别执行上述命令的结果可以初步定位系统主要的瓶颈
如果%usr的平均值高,表示系统等待用户程序的比例高
(比如排序,数据处理,数据计算等)
罪魁祸首:高峰期不必要的程序运行,CPU速度慢或数量不足,
效率低下的用户程序或守护处理进程以及错误的进程优先级nice
如果%sys高,表示系统等待设备驱动系统调用的比例高
罪魁祸首:效率低下的设备驱动程序,硬件故障导致的假中断,
CPU速度慢或数量不足
如果%usr和%sys都高,表示系统等待用户或内核产生的系统调用比例高
罪魁祸首:CPU速度慢或数量不足
如果%wio高,表示系统等待硬盘io存取数据的比例高
罪魁祸首:硬盘缓存不足(NBUF/NHBUF配置不足),硬盘慢,
内存不足,运行程序有内存泄漏或占用过多内存
第2步:
一 如果%usr高:
1)检查占用CPU的进程
# ps -el | more
  F S    UID   PID  PPID  C PRI NI     ADDR   SZ  TTY       TIME CMD
71 S      0     0     0  0  95 20 fb117000    0    ?   00:00:01 sched
20 S      0     1     0  0  66 20 fb117158  148    ?   00:00:00 init
...
20 S      0   347     1  0  76 24 fb119db0  312    ?   00:00:00 snmpd
20 S     17   349     1  1  66 20 fb119f08  156    ?   01:05:53 deliver
20 S      0   413   410  0  75 20 fb11a060  128    ?   00:00:00 lockd
检查C和TIME列的值,如果哪行TIME(单位是分:秒:百分之一秒)异常的高,并且C是>0的数字,
那么这个CMD显示的进程程序就是太耗费资源的元凶,
上面所是的例子deliver表示累计占了1分钟CPU,还算正常,假如是1000:05:53那么它就是问题所在了
也可用who命令检查,比如
# w
   4:41pm  up  5:04,  3 users,  load average: 0.00 0.00 0.00
User     tty            login@   idle    JCPU    PCPU  what
root     tty01         11:51am          21:38          bash
root     tty03          4:31pm      9                  -sh
root     ttyp1          1:55pm                         w
# who -u | sort -k 6 -r
root       tty03        Jul  6 16:31  0:09   1774
root       ttyp1        Jul  6 13:55  0:01   3902
root       tty01        Jul  6 11:51   .     1773
2) 检查系统调用的情况
# sar -c 1 5
SCO_SV tuvok 3.2v5.0.5 i80386    06/21/2001
09:55:08 scall/s sread/s swrit/s  fork/s  exec/s  rchar/s  wchar/s (-c)
09:55:09    1216      67      12    0.99    0.99   178441     3988
09:55:10     147      31       6    0.00    0.00   168723     8421
09:55:11      74      27       4    0.00    0.00   163644     3342
09:55:12     245      37       6    0.00    0.00   171821     8928
09:55:13     151      29       4    0.00    0.00   163770     3468
Average      367      38       6    0.20    0.20   169280     5629
对比系统变慢之前和慢之间分别执行上述命令的结果,
如果系统变慢之后scall/s列的值增大很多,表示
    .程序突然被频繁使用
    .系统运行的程序太多了,可用ps命令确认.
如果系统变慢之后fork/s,exec/s或sread/s,swrit/s异常的高,
检查fork过多,读写操作频繁的程序,优化代码降低资源占用
二 如果%sys高
如果是多CPU系统且系统有SMP支持,执行下列命令查看是否有设备在发送成千上万的中断
OpenServer5执行: #sar -j 1 5
UnixWare7/OpenUnix8执行: #sar -P ALL 1 5
检查访问磁带机,第3方smart boards以及非硬盘设备的设备的程序
三 如果%usr和%sys都高
1) 检查系统队列
# sar -q 1 5
SCO_SV lunasco 3.2v5.0.4 Pentium    06/21/2001
10:46:29 runq-sz %runocc swpq-sz %swpocc (-q)
10:46:30     3.0     100
10:46:31
10:46:32     1.0     100
10:46:33     1.0     100
10:46:34     1.0     100
Average      1.5     100
其中time平均值应该

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21863/showart_142451.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP