AIX系统的CPU性能评估Word文档格式.docx
- 文档编号:16800633
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:16
- 大小:24.69KB
AIX系统的CPU性能评估Word文档格式.docx
《AIX系统的CPU性能评估Word文档格式.docx》由会员分享,可在线阅读,更多相关《AIX系统的CPU性能评估Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
Faults段显示内容(其实这段内容不需太多关注)
'
in在该时间间隔中观测到的每秒设备中断数。
sy在该时间间隔中观测到的每秒系统调用次数。
cs在该时间间隔中观测到的每秒钟上下文切换次数。
Cpu段显示内容
us列显示了用户模式所消耗的CPU时间。
•sy列详细显示了CPU在系统模式所消耗的CPU时间。
-id列显示了没有未决本地磁盘I/O时CPU空闲或等待时间的百分比。
•wa列详细显示了有未决本地磁盘I/O时CPU空闲的时间百分比。
wa的值如果超过25%,就表明磁盘子系统可能没有被正确平衡,或者这也可能是磁盘工作负荷很重的结果。
如果在一个单用户系统中,us+sy时间不超过90%,我们就不认为系统的CPU是受限制的。
如果在一个多用户系统中,us+sy时间超过80%,我们就认为系统的CPU是受限的。
其中的进程将要花时间在运行队列中等待。
响应时间和吞吐量会受损害。
检查cpu,我们主要关注报告中的4个cpu列和2个kthr(内核线程)列。
在上面的示例中,我们可以观察到以下几个主要的信息:
CPUIDLE比较高,比较空闲;
r列为0,表明线程不存在等待;
WA值不高,说明I/O压力不大;
free值比较大,pi,po为0,表明内存非常富裕。
空闲较多。
2、sar
第二个常用的是sar命令,但是sar会增加系统的开销。
当然有些情况下,我们使用sar比较方便。
sar的输出结果与前面的基本类似,这里不再作详细的介绍,关于命令的语法,也不再作详细的介绍,我们常用的命令格式:
#sar13
AIXjsdxh_db023500C2C1EB4C0010/24/07
Systemconfiguration:
lcpu=16
17:
52:
26
%usr
%sys
%wio
%idlephysc
27
19
7
75
8.00
28
6
8.01
29
8.02
Average
在这里,sar命令输出的是一个整体的cpu使用情况的一个统计,统计分项目的内容也比较直观,通过名字就可以理解涵义。
这里有一点比较方便的就是,在最后一行有一个汇总的average行,作为上述统计的一个平均。
另外,补充说明一点的就是,一般来说,第一行统计信息包含了sar命令本身启动的cpu
消耗,所以往往是偏高的,所以导致average值也往往是偏高一点的。
当然,这不会对结果产生多大影响。
当我们有多个cpu的时候,而程序采用的是单线程,有时候会出现一种情况,我们检查发现,cpu总体的使用率不高,但是程序响应却比较慢。
这里有
可能就是单线程只使用了一个cpu,导致这个cpu100%占用,处理不过来,而其他的cpu却闲置。
这时可以对cpu分开查询,统计每个cpu的使用情况。
#sar-PALL12
18:
03:
30cpu%usr%sys%wio%idlephysc
3100690310.00
1
50
1.00
2
100
0.52
3
0.48
4
99
0.54
5
0.46
0.53
0.47
8
9
10
98
11
12
58
31
0.00
13
14
15
-
320
71
290.00
39
41
20
7.98
Average0
70
0300.00
48
24
上面是分cpu统计的情况,结果应该也比较直观吧。
Sar还有其他一些比较特殊的使用方法,比如:
如果希望多个采样和多个报告,可为sar命令指定一个输出文件,这样就方便多了。
将sar命令的标准输出数据定向到/dev/null,并将sar命令作为
后台进程运行。
具体的命令格式为:
sar-A-o/temp/sar_result.log5300>
/dev/null&
关于sar其他的一些使用方法,这里不再详述。
3、iostat
第三个可以用来使用的命令是iostat.
$iostat-t24
tty:
tin
tout
avg-cpu:
%user
%sys
%idle%iowait
0.0
0.1
99.8
81.0
99.9
40.5
100.0
99.1
0.8
TTY的两列信息(tin和tou)显示了由所有TTY设备读写的字符数
CPU统计信息列(%user、%sys、%idle和%iowait)提供了CPU的使用情况。
注意:
第一份报告为系统启动以来的一个累积值。
4、tprof
使用tprof命令用于统计每个进程的CPU使用情况
#tprof-xsleep30
该命令的输岀结果可查看__prof.all文件。
此命令运行30秒钟,在当前目录下创建一个名为_prof.all的文件。
30秒钟内,CPU被调度次数约为3000次。
__prof.all文件中的字段Total为此进程调度到的CPU次数。
如果进程所对应的Total字段的值为1500,即表示该进程在3000次CPU调度中占用了1500次,或理解为使用了一半的CPU时间。
tprof的输出准确地显示出哪个进程在使用CPU时间。
在我下面的这一份示例中,可以看到,大部分的cpu时间都是被wait所占用的。
这里的wait实际上是idle进程,可以表明这个系统是一个完全空闲的系统。
$more_prof.all
ProcessPIDTIDTotalKernelUserSharedOther
wait
40970
40971
2998
32776
32777
2994
24582
24583
2985
16388
16389
2980
syncd
221254
155707
caiUxOs
524540
2294015
netm
73746
73747
hats_nim
1671242
1220665
10
snmpd64
598258
1245291
11
rpc.lockd
639212
1728679
tprof
704622
2277437
trclogio
360524
2408625
trace
1523820
2523145
clinfo
1958102
2760945
sh
1572938
2285709
Total
12000
11994
ProcessFREQTotalKernelUserSharedOther
11957
00
60
在这里,对wait进程作一点补充说明。
在AIX5L下,你用psaux会发现有一些root的wait进程
在AIX5L下,你用psaux会发现有一些root的wait进程
#psaux|head-20
USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMAND
oracle2663545.70.05013627524-A15:
40:
350:
32oracleora92(LOC
root172143.10.04040-AJul0424793:
53wait
root
16946
3.1
40
-A
Jul0424633:
59wait
16678
Jul0424600:
21wait
53274
Jul0424397:
54wait
286
Jul0424371:
55wait
8196
3.0
Jul0424312:
40wait
822
Jul0424303:
36wait
554
Jul0424261:
50wait
20776
2.7
Jul0421502:
46wait
57372
Jul0421439:
31wait
49176
Jul0421423:
47wait
21044
Jul0421398:
24wait
12848
Jul0421357:
07wait
21312
Jul0421324:
26wait
12580
Jul0421293:
06wait
13116
Jul0421195:
oracle
344612
0.3
0.05758834976
-AJul042663:
08ora_j000_ora92
430408
0.05590833296
-AJul042220:
57ora_j001_ora92
wait就是CPU空闲的时候运行的空闲进程,AIX4上叫kproc。
所以这个进程占用越大,表示机器越空闲。
Wait进程的数量是由机器上的逻辑CPU的个
数决定的,有几个逻辑CPU,就有几个wait进程.
5、ps
这个命令使用本身也比较复杂,在这里只介绍如何查看cpu占用最高的进程。
使用举例如下:
#psaux|head-25
USER
PID%CPU%MEM
SZ1
RSS
TTYSTATSTIMETIMECOMMAND
17214
Jul0425578:
42wait
Jul0425415:
Jul0425377:
03wait
Jul0425170:
12wait
Jul0425144:
00wait
Jul0425082:
32wait
Jul0425072:
25wait
Jul0425034:
14wait
Jul0422181:
27wait
Jul0422118:
Jul0422102:
02wait
Jul0422077:
18wait
Jul0422036:
44wait
Jul0421998:
Jul0421967:
17wait
Jul0421865:
51wait
0.05637233852
-AJul042707:
30ora_j000_ora92
0.05591633396
-AJul042266:
20ora_j001_ora92
365092
0.2
0.05618433664
-AJul041765:
58ora_j002_ora92
442430
0.05609233572
Jul041426:
40ora_j003_ora92
385606
0.05598433464
Jul051159:
17ora_j004_ora92
413856
0.05052028000
Jul23543:
31oracleora92(LOC
143668
0.05052828008
Jul13833:
21oracleora92(LOC
369230
0.05660034080
Jul05806:
36ora」005_ora92
在这个输出结果中,排在前面的是16个root用户的wait进程,这其实是CPU空闲的时候运行的空闲进程,之前已作说明。
所以CPU最高的几个进程其实是下面的ORACLE用户的ora_j00*进程,这是ORACLE的job进程。
在这里,这些进程的开销很小。
如果ORACLE的
进程开销比较大,我们可以用如下的方法来查询具体的进程在干什么事情,例如我们要查询进程ora」000_ora92,PID=344612,可以使用下面的方法:
$su-oracle
SQL>
sqlplus“/assysdba”
oradebugsetospid344612
oradebugevent10046tracenamecontextforever,level8
oradebugtracefile_name-这个命令我们获得输出文件的绝对路径和文件名
oradebugevent10046tracenamecontextoff
$tkprof/opt/oracle/app/oracle/admin/ora92/bdump/ora92」000_344612.trctracepid.txt
$moretracepid.txt
在tracepid.txt中,我们就可以看到这个进程中具体运行的语句、过程等,以及所有的SQL的cpu消耗、物理读、逻辑读、执行计划等信息。
另外,我们也可以执行下面的语句查看进程具体运行的SQL语句的文本:
SELECT/*+ORDERED*/sql_textFROMv$sqltexta
WHERE(a.hash_value,a.address)IN(
SELECTDECODE(sql_hash_value,0,prev_hash_value,sql_hash_value),
DECODE(sql_hash_value,0,prev_sql_addr,sql_address)
FROMv$sessionb
WHEREb.paddr=(SELECTaddr
FROMv$processc
WHEREc.spid='
&
pid'
))
ORDERBYpieceASC
6、解决CPU占用的惩罚机制nice和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AIX 系统 CPU 性能 评估