《Aix+Oracle系统性能管理及实战》.docx

上传人:b****7 文档编号:9658189 上传时间:2023-02-05 格式:DOCX 页数:86 大小:166.03KB
下载 相关 举报
《Aix+Oracle系统性能管理及实战》.docx_第1页
第1页 / 共86页
《Aix+Oracle系统性能管理及实战》.docx_第2页
第2页 / 共86页
《Aix+Oracle系统性能管理及实战》.docx_第3页
第3页 / 共86页
《Aix+Oracle系统性能管理及实战》.docx_第4页
第4页 / 共86页
《Aix+Oracle系统性能管理及实战》.docx_第5页
第5页 / 共86页
点击查看更多>>
下载资源
资源描述

《Aix+Oracle系统性能管理及实战》.docx

《《Aix+Oracle系统性能管理及实战》.docx》由会员分享,可在线阅读,更多相关《《Aix+Oracle系统性能管理及实战》.docx(86页珍藏版)》请在冰豆网上搜索。

《Aix+Oracle系统性能管理及实战》.docx

《Aix+Oracle系统性能管理及实战》

Aix+Oracle系统性能管理及实战

更多资料下载,请收藏

http:

//www.D

2010-12-2

目录

AIX5.3主机性能评估3

一、CPU性能评估3

1、vmstat3

2、sar4

3、iostat7

4、tprof7

5、ps9

6、解决CPU占用的惩罚机制nice和renice10

7、小结11

二、Memory性能评估12

1、VMM的管理简介12

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

3、svmon命令15

4、内存的调整16

三、磁盘的I/O性能评估18

1、iostat查看19

2、sar–d查看21

3、使用lslv–llvname来评估逻辑卷的碎片情况23

4、lslv–p评估物理布局24

5、使用vmstat命令评估调页空间的I/O24

6、使用filemon命令监控系统I/O25

7、监视磁盘I/O的小结27

8、案例28

9、RAID10和RAID5的比较29

四、NETWORK性能评估32

1、ping命令查看网络的连通性32

2、netstat–i检查网络的接口33

3、netstat–r检查主机的路由情况33

4、netpmon35

5、其他一些常用的命令37

五、补充:

关于topas的使用说明37

六、主机日常检查脚本40

AIX5.3主机性能评估

对于AIX主机的性能评估,我们从下面的4个方面来逐一介绍:

CPU、MEMORY、I/O系统和网络这4个方面来描述。

一、CPU性能评估

首先,我们还是先来看一下CPU的性能评估。

下面先主要介绍几个看CPU性能的命令。

1、vmstat

使用vmstat来进行性能评估,该命令可获得关于系统各种资源之间的相关性能的简要信息。

当然我们也主要用它来看CPU的一个负载情况。

下面是我们调用vmstat命令的一个输出结果:

$vmstat12

Systemconfiguration:

lcpu=16mem=23552MB

kthrmemorypagefaultscpu

--------------------------------------------------------------------

rbavmfrerepipofrsrcyinsycsussyidwa

0030919882741152000000184926129490781883

00309198927411510000002527320136561152776

对上面的命令解释如下:

Kthr段显示内容

♦r列表示可运行的内核线程平均数目,包括正在运行的线程和等待CPU的线程。

如果这个数字大于CPU的数目,则表明有线程需要等待CPU。

♦b列表示处在非中断睡眠状态的进程数。

包括正在等待文件系统I/O的线程,或由于内存装入控制而被挂起的线程。

Memory段显示内容

♦avm列表示活动虚拟内存的页面数,每页一般4KB

♦fre空闲的页面数,每页一般4KB

Page段显示内容

♦re–该列无效

♦pi从磁盘交换到内存的交换页(调页空间)数量,4KB/页。

调页空间是驻留在硬盘上的虚拟内存的一部分。

当内存使用过量时,会将溢出的工作组页面存储到调页空间中(窃取页)。

当进程访问一个窃取页时,就产生了一个缺页故障,而这一页页必须从调页空间中读入到内存中。

♦po从内存交换到磁盘的交换页数量,4KB/页。

如果窃取的工作也在调页空间中不存在或者已经作了修改,则写入调页空间中。

如果不被再次访问,它会留在调度空间中直到进程终止或者放弃空间。

♦fr根据页面替换算法每秒释放的页数。

当VMM页面替换例程扫描页面帧表(PageFrameTable,PFT)时,它会根据一些条件选取需要窃取的页面以补充空闲列表。

该条件中包含工作页面和计算页面,释放的页面中,计算页面不产生I/O,工作页面如果数据没有发生修改,也不需要写回磁盘,也不会产生I/O。

♦sr根据页面替换算法每秒所检查的页数。

sr值比fr值高的越多,说明替换算法要查找可以替换的页面就越困难。

♦cy每秒页面替换代码扫描了PFT多少次。

因为增加空闲列表达到maxfree值,不一定需要完全扫描PFT表,而所有vmstat输出都为整数,所以通常cy列值为0。

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

17:

52:

271970758.00

17:

52:

281960758.01

17:

52:

291970758.02

Average1970758.01

在这里,sar命令输出的是一个整体的cpu使用情况的一个统计,统计分项目的内容也比较直观,通过名字就可以理解涵义。

这里有一点比较方便的就是,在最后一行有一个汇总的average行,作为上述统计的一个平均。

另外,补充说明一点的就是,一般来说,第一行统计信息包含了sar命令本身启动的cpu消耗,所以往往是偏高的,所以导致average值也往往是偏高一点的。

当然,这不会对结果产生多大影响。

当我们有多个cpu的时候,而程序采用的是单线程,有时候会出现一种情况,我们检查发现,cpu总体的使用率不高,但是程序响应却比较慢。

这里有可能就是单线程只使用了一个cpu,导致这个cpu100%占用,处理不过来,而其他的cpu却闲置。

这时可以对cpu分开查询,统计每个cpu的使用情况。

#sar-PALL12

AIXjsdxh_db023500C2C1EB4C0010/24/07

Systemconfiguration:

lcpu=16

18:

03:

30cpu%usr%sys%wio%idlephysc

18:

03:

3100690310.00

15050001.00

20001000.52

30001000.48

4010990.54

50001000.46

60001000.53

70001000.47

80001000.53

90001000.47

10020980.54

110001000.46

1211580310.00

131000001.00

140001000.53

150001000.47

-1970758.01

18:

03:

3200710290.00

15050001.00

20001000.52

30001000.48

4010990.54

50001000.47

60001000.52

70001000.47

80001000.53

90001000.47

10020980.54

110001000.46

1239410200.00

131000001.00

140001000.52

150001000.47

-1970757.98

Average00700300.00

15050001.00

20001000.52

30001000.48

4010990.54

50001000.46

60001000.53

70001000.47

80001000.53

90001000.47

10020980.54

110001000.46

1228480240.00

131000001.00

140001000.52

150001000.47

-1970758.00

上面是分cpu统计的情况,结果应该也比较直观吧。

Sar还有其他一些比较特殊的使用方法,比如:

如果希望多个采样和多个报告,可为sar命令指定一个输出文件,这样就方便多了。

将sar命令的标准输出数据定向到/dev/null,并将sar命令作为后台进程运行。

具体的命令格式为:

sar-A-o/temp/sar_result.log5300>/dev/null&

关于sar其他的一些使用方法,这里不再详述。

3、iostat

第三个可以用来使用的命令是iostat.

$iostat-t24

tty:

tintoutavg-cpu:

%user%sys%idle%iowait

0.00.00.00.199.80.1

0.081.00.00.199.90.0

0.040.50.00.0100.00.0

0.040.50.00.199.10.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

=======================================

wait409704097129982998000

wait327763277729942994000

wait245822458329852985000

wait163881638929802980000

syncd2212541557073131000

caiUxOs524540229401530030

netm737467374711000

hats_nim1671242122066510010

snmpd64598258124529111000

rpc.lockd639212172867911000

tprof704622227743710010

trclogio360524240862511000

trace1523820252314510010

clinfo1958102276094511000

sh1572938228570911000

=======================================

Total1200011994060

 

ProcessFREQTotalKernelUserSharedOther

====================================

wait41195711957000

syncd13131000

caiUxOs130030

netm111000

hats_nim110010

snmpd64111000

rpc.lockd111000

tprof110010

trclogio111000

trace110010

clinfo111000

sh111000

====================================

Total151200011994060

在这里,对wait进程作一点补充说明。

在AIX5L下,你用psaux会发现有一些root的wait进程

#psaux|head-20

USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMAND

oracle2663545.70.05013627524-A15:

40:

350:

32oracleora92(LOC

root172143.10.04040-AJul0424793:

53wait

root169463.10.04040-AJul0424633:

59wait

root166783.10.04040-AJul0424600:

21wait

root532743.10.04040-AJul0424397:

54wait

root2863.10.04040-AJul0424371:

55wait

root81963.00.04040-AJul0424312:

40wait

root8223.00.04040-AJul0424303:

36wait

root5543.00.04040-AJul0424261:

50wait

root207762.70.04040-AJul0421502:

46wait

root573722.70.04040-AJul0421439:

31wait

root491762.70.04040-AJul0421423:

47wait

root210442.70.04040-AJul0421398:

24wait

root128482.70.04040-AJul0421357:

07wait

root213122.70.04040-AJul0421324:

26wait

root125802.70.04040-AJul0421293:

06wait

root131162.70.04040-AJul0421195:

47wait

oracle3446120.30.05758834976-AJul042663:

08ora_j000_ora92

oracle4304080.30.05590833296-AJul042220:

57ora_j001_ora92

wait就是CPU空闲的时候运行的空闲进程,AIX4上叫kproc。

所以这个进程占用越大,表示机器越空闲。

Wait进程的数量是由机器上的逻辑CPU的个数决定的,有几个逻辑CPU,就有几个wait进程.

5、ps

这个命令使用本身也比较复杂,在这里只介绍如何查看cpu占用最高的进程。

使用举例如下:

#psaux|head-25

USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMAND

root172143.10.04040-AJul0425578:

42wait

root169463.10.04040-AJul0425415:

54wait

root166783.10.04040-AJul0425377:

03wait

root532743.10.04040-AJul0425170:

12wait

root2863.10.04040-AJul0425144:

00wait

root81963.00.04040-AJul0425082:

32wait

root8223.00.04040-AJul0425072:

25wait

root5543.00.04040-AJul0425034:

14wait

root207762.70.04040-AJul0422181:

27wait

root573722.70.04040-AJul0422118:

00wait

root491762.70.04040-AJul0422102:

02wait

root210442.70.04040-AJul0422077:

18wait

root128482.70.04040-AJul0422036:

44wait

root213122.70.04040-AJul0421998:

53wait

root125802.70.04040-AJul0421967:

17wait

root131162.70.04040-AJul0421865:

51wait

oracle3446120.30.05637233852-AJul042707:

30ora_j000_ora92

oracle4304080.30.05591633396-AJul042266:

20ora_j001_ora92

oracle3650920.20.05618433664-AJul041765:

58ora_j002_ora92

oracle4424300.20.05609233572-AJul041426:

40ora_j003_ora92

oracle3856060.10.05598433464-AJul051159:

17ora_j004_ora92

oracle4138560.10.05052028000-AJul23543:

31oracleora92(LOC

oracle1436680.10.05052828008-AJul13833:

21oracleora92(LOC

oracle3692300.10.05660034080-AJul05806:

36ora_j005_ora92

在这个输出结果中,排在前面的是16个root用户的wait进程,这其实是CPU空闲的时候运行的空闲进程,之前已作说明。

所以CPU最高的几个进程其实是下面的ORACLE用户的ora_j00*进程,这是ORACLE的job进程。

在这里,这些进程的开销很小。

如果ORACLE的进程开销比较大,我们可以用如下的方法来查询具体的进程在干什么事情,例如我们要查询进程ora_j000_ora92,PID=344612,可以使用下面的方法:

$su–oracle

SQL>sqlplus“/assysdba”

SQL>oradebugsetospid344612

SQL>oradebugevent10046tracenamecontextforever,level8

SQL>oradebugtracefile_name–这个命令我们获得输出文件的绝对路径和文件名

SQL>oradebugevent10046tracenamecontextoff

$tkprof/opt/oracle/app/oracle/admin/ora92/bdump/ora92_j000_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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1