现在的位置: 首页 > 综合 > 正文

AIX系统资源检测

2013年08月05日 ⁄ 综合 ⁄ 共 8360字 ⁄ 字号 评论关闭

计算机系统的性能优化是一个综合性较强的话题,它涉及对系统资源以及应用环境(如应用程序及网络环境)的分析。本文将就如何检测RS/6000系统性能,找出引起性能降低的资源瓶颈做一个简单介绍
所谓系统资源包括内存、CPU和输入/输出设备。通过使用以下命令,可以对RS/6000系统资源的负载情况有一个清楚的了解:

vmstat
svmon
ps
tprof
iostat
netpmon
filemon
注:
使用命令vmstat、iostat和sar之前需安装软件包

bos.acct
使用命令ps需安装软件包

bos.rte.control
使用命令tprof、svmon、netpmon和filemon之前,需要安装软件包

perfagent.tools
我们可以从AIX系统盘的第一张光盘上寻找并安装上述软件包。 本文还将引用命令 vmtune 和 schedtune, 使用前需安装软件包

bos.adt.samples

内存瓶颈
本节介绍以下几个用于检测系统的内存使用情况的命令,通过它们可以清楚地了解系统内存的使用及分配情况,确认内存资源是否存在瓶颈。
1. vmstat
vmstat命令用于统计并显示核心线程、虚拟内存、硬盘、中断及CPU的使用情况。
运行命令
# vmstat 2 10
注: 当pi和po为连续非零值时,系统运行速度将会降低。
pi 每秒钟从页空间(Paging Space)调入内存的页面数(4KB/page);
po 每秒钟从内存调入页空间(Paging Space)的页面数;
当进程请求的内存页面数大于内存中可用页面数时, 一些内存页会被换出内存, 存放于系统页空间(Paging Space)中, 以后使用时再调入内存。由于访问页空间中页面的速度远小于对内存页面的访问速度,所以频繁的换页会降低系统运行速度。

注: 当fr和sr的数值增大时,sample明内存负载增大。
fr 为填充内存空闲sample或分配给某进程所需要释放的内存页面;
sr 为得到fr数量的空闲页面所需要检查的页面数;
fr/sr比例为1:4sample明每释放一个内存页面需要检查四个页面。
当po*SYS>;fr(SYS为一系统参数,可用命令schedtune查看)时,系统自身认为已到崩溃边缘。SYS在有128MB或更多内存的系统上默认值为0, sample示禁止内存加载控制,否则默认值为6。系统崩溃sample明此时系统使用大量时间用于内存换入/换出,而没有足够时间处理应用或正常工作。这时一些进程将被临时挂起,系统运行明显减慢。
2. svmon
svmon命令统计并显示虚拟内存的使用情况。
以超级用户(root)身份运行命令
# svmon -Pau 10 | more
输出如下:
Pid Command Inuse Pin Pgspace
13794 dtwm 1603 1 449
Pid: 13794
Command: dtwm
这条命令显示出使用内存最多的前十个进程,并针对每个进程给出了一个详细列sample(上sample为其中一个进程的描述信息)。在每个进程的列sample中,找出Type为"work"及Description为"private"的相应行,查看Pgspace显示的使用页面数(每个页面大小为4096字节),该数值为此段(segment)在虚拟内存空间中占用的工作页面(working pages)数,即占用的页空间中的页面数。如果Pgspace值持续增长,系统则有可能存在内存泄漏(memory leak)。当应用程序不能正常释放内存时会出现内存泄漏的问题。
上述命令格式及输出结果适用于AIX4.3.3之前的版本。在AIX4.3.3的系统上可运行命令
svmon -Pu 10 | more
其输出格式与上条命令基本相同,但字段"Pgspace"用"Pgsp"取代。
3. ps
ps命令显示当前运行的进程状态信息。
运行下列命令
#ps gv | head -n 1; ps gv | egrep -v "RSS" | sort +6b -7 -n -r
SIZE 页空间中分配给该进程的Type为"work", Description为"private"的内存段大小(K字节 为单位)。该数值也可通过命令svmon显示。
RSS 进程当前占用的内存段(物理内存)大小(K字节为单位),包括Type为"work"和Description 为"private"的内存段及Type为"pers"和Description为"code"的内存段。该数值可通 过命令svmon显示。
TRS 进程常驻内存的正文段大小,包括Type为"pers"及Description为"code"的内存段。该 数值可通过命令svmon显示。
%MEM RSS占系统物理内存的百分比(%)。
如上所述,使用ps命令同样可以查看各进程的内存分配情况。
CPU 瓶颈

下面我们将就如何使用命令vmstat、tprof和ps检查系统是否存在CPU瓶颈做一个简单介绍。
1. vmstat
使用命令
# vmstat 1 10
注: 运行队列有进程等待时系统运行速度会降低。
id CPU 空闲时间或无I/O等待时间的百分比;
wa CPU I/O 等待时间的百分比;
r 运行队列中的线程数;
如果 id 和wa 的值持续为接近0的值,sample明CPU此时处于繁忙状态。
下面来看看字段r(运行队列中的线程数)。运行队列中等待的线程数越多,系统性能受到的影响越大。
2. tprof
tprof命令用于统计每个进程的CPU使用情况。
以超级用户root的身份运行下列命令,可以找出进程占用的CPU时间:
# tprof -x sleep 30
此命令运行30秒钟,在当前目录下创建一个名为_prof.all 的文件。30秒钟内, CPU被调度次数约为3000次。__prof.all 文件中的字段Total 为此进程调度到的CPU次数。如果进程所对应的 Total字 段的值为1500,sample示该进程在3000次 CPU调度中占用了1500次,或理解为使用了一半的CPU时间。tprof的输出准确地显示出哪个进程在使用CPU 时间。
__prof.all文件示例:
3. netpmon
netpmon命令用于监控与网络有关的I/0及CPU的使用情况。
以root 身份运行下面的命令,可以找出进程使用的CPU时间,以及其中与网络有关的代码使用的CPU时间:
# netpmon -o /tmp/netpmon.out -O cpu -v; sleep 30; trcstop
此命令运行30 秒钟,并在/tmp目录下生成文件 netpmon.out。其中字段 CPU Time 为进程使用CPU
的时间总值,CPU%对应其百分比,Network CPU% 为进程中与网络有关的代码所占用的CPU百分比。如下所示:
输入输出(I/O)瓶颈

1. iostat
iostat命令用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量。
运行命令:
iostat 5 10
将显示10次统计结果,下面为其中一次的数据:
其中
%iowait 等待本地 I/O 时CPU 空闲时间的百分比
%idle 未等待本地 I/O 时CPU 空闲时间的百分比
当没有需使用CPU的进程但至少有一个进程在等待I/O 时, CPU时间属性标为iowait。如果iowait 时间的百分比很高,sample示该磁盘输入输出(I/O)是导致系统运行速度缓慢的主要原因。
%tm_act 硬盘繁忙的百分比
注: tm_act的值很高,sample明硬盘存在I/O瓶颈。
当%tm_act(硬盘繁忙时间)很高时,可能会感觉到系统运行速度在减慢。有些系统上某个硬盘的%tm_act值为60%或更高时,系统性能就会受到影响。
两点建议:
1. 观察繁忙与空闲的硬盘,将数据从忙的盘移至相对空闲的的盘上,这会在一定程度上减轻由此引起的I/O 瓶颈。

2. 依照上面"内存瓶颈"中介绍的方法检查内存换页的频繁程度。大量的换页操作会增加I/O负载。
2. filemon
filemon 命令用于查看哪些文件/逻辑卷/硬盘处于繁忙状态。在系统I/O 处于繁忙状态时运行下面的命令:
# filemon -u -O all -o /tmp/fmon.out; sleep 30; trcstop
30秒钟后会生成记录跟踪信息的文件 /tmp/fmon.out。从该文件中可以找出:
1. 最为繁忙的虚拟内存段(segment)、逻辑卷和物理卷;
2. 对页空间(paging space)的读写次数,确认硬盘I/O 是由于应用程序操作还是频繁的换页操作;
3. 最为活跃的文件或逻辑卷,如果它们存放在繁忙的物理卷上,可以考虑将数据移至相对空闲 的硬盘上,这样有助于提高系统性能。最为繁忙的段的报sample里列示出最繁忙的文件所对应的文件系统和i节点。文件系统的安装点(mount point)及文件的i节点(inode)可与命令ncheck一起使用,来找出相对应的文件。这个报sample可用来判断该I/O操作是针对文件系统、JFS Log 还是系统页空间的。
通过检查字段"reads"和"read sequences"的值,可以判断该操作是顺序读取还是随机读取。当 "read sequences"接近"reads"时,对该文件的访问则以随机读取方式居多。(附录A为命令 filemon 的输出 示 例)
结束语
在这里有一个极有用的工具值得给大家一提,就是RS/6000性能诊断工具包-Performance Toolbox, 一个用来检测系统性能的功能非常完善的软件包。其中包括基于X-Windows的图形 界面诊断工具 xmperf,用于实时检测系统资源的使用情况。(注:该软件包不在AIX操作系统光盘中提供。)
我们在上面的文字中讨论了有关RS/6000系统的资源瓶颈问题,其中涉及到的系统命令的具体用法可以查找AIX联机命令手册。此外,一个系统的性能如何还与网络因素及应用程序有着密切的关系,分析这诸多因素的方法及工具还有很多,在此不做一一介绍了。希望大家在实际工作中逐步摸索,成为RS/6000系统性能分析专家
附录A (filemon 输出文件示例)
---------------------------------------
Thu Aug 19 11:30:49 1999
System: AIX texmex Node: 4 Machine: 000691854C00
0.369 secs in measured interval
Cpu utilization: 9.0%
Most Active Files
-----------------------------------------------------------------------------
#MBs #opns #rds #wrs file volume:inode
-----------------------------------------------------------------------------
0.1 1 14 0 smit.log /dev/hd4:858
0.0 1 0 13 null
0.0 2 4 0 ksh.cat /dev/hd2:16872
0.0 1 2 0 cmdtrace.cat /dev/hd2:16739
Most Active Segments
------------------------------------------------------------------------------
#MBs #rpgs #wpgs segid segtype volume:inode
------------------------------------------------------------------------------
0.1 13 0 5e93 ???
0.0 2 0 22ed ???
0.0 1 0 5c77 persistent
Most Active Logical Volumes
------------------------------------------------------------------------------
util #rblk #wblk KB/s volume description
------------------------------------------------------------------------------
0.06 112 0 151.9 /dev/hd4 /
0.04 16 0 21.7 /dev/hd2 /usr
Most Active Physical Volumes
------------------------------------------------------------------------------
util #rblk #wblk KB/s volume description
------------------------------------------------------------------------------
0.10 128 0 173.6 /dev/hdisk0 N/A
------------------------------------------------------------------------------
Detailed File Stats
------------------------------------------------------------------------------
file: /smit.log volume: /dev/hd4 (/) inode: 858
opens: 1
total bytes xfrd: 57344
reads: 14 (0 errs)
read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0
read times (msec): avg 1.709 min 0.002 max 19.996 sdev 5.092
file: /dev/null
opens: 1
total bytes xfrd: 50600
writes: 13 (0 errs)
write sizes (bytes): avg 3892.3 min 1448 max 4096 sdev 705.6
write times (msec): avg 0.007 min 0.003 max 0.022 sdev 0.006
file: /usr/lib/nls/msg/en_US/ksh.cat volume: /dev/hd2 (/usr) inode: 16872
opens: 2
total bytes xfrd: 16384
reads: 4 (0 errs)
read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0
read times (msec): avg 0.042 min 0.015 max 0.070 sdev 0.025
lseeks: 10
file: /usr/lib/nls/msg/en_US/cmdtrace.cat volume: /dev/hd2 (/usr) inode:
16739
opens: 1
total bytes xfrd: 8192
reads: 2 (0 errs)
read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0
read times (msec): avg 0.062 min 0.049 max 0.075 sdev 0.013
lseeks: 8
------------------------------------------------------------------------------
Detailed VM Segment Stats (4096 byte pages)
------------------------------------------------------------------------------
SEGMENT: 5e93 segtype: ???
segment flags:
reads: 13 (0 errs)
read times (msec): avg 1.979 min 0.957 max 5.970 sdev 1.310
read sequences: 1
read seq. lengths: avg 13.0 min 13 max 13 sdev 0.0
SEGMENT: 22ed segtype: ???
segment flags: inode
reads: 2 (0 errs)
read times (msec): avg 8.102 min 7.786 max 8.418 sdev 0.316
read sequences: 2
read seq. lengths: avg 1.0 min 1 max 1 sdev 0.0
SEGMENT: 5c77 segtype: persistent
segment flags: pers defer
reads: 1 (0 errs)
read times (msec): avg 13.810 min 13.810 max 13.810 sdev 0.000
read sequences: 1
read seq. lengths: avg 1.0 min 1 max 1 sdev 0.0

------------------------------------------------------------------------------
Detailed Logical Volume Stats (512 byte blocks)
------------------------------------------------------------------------------
VOLUME: /dev/hd4 description: /
reads: 5 (0 errs)
read sizes (blks): avg 22.4 min 8 max 40 sdev 12.8
read times (msec): avg 4.847 min 0.938 max 13.792 sdev 4.819
read sequences: 3
read seq. lengths: avg 37.3 min 8 max 64 sdev 22.9
seeks: 3 (60.0%)
seek dist (blks): init 6344,
avg 40.0 min 8 max 72 sdev 32.0
time to next req(msec): avg 70.473 min 0.224 max 331.020 sdev 130.364
throughput: 151.9 KB/sec
utilization: 0.06

VOLUME: /dev/hd2 description: /usr
reads: 2 (0 errs)
read sizes (blks): avg 8.0 min 8 max 8 sdev 0.0
read times (msec): avg 8.078 min 7.769 max 8.387 sdev 0.309
read sequences: 2
read seq. lengths: avg 8.0 min 8 max 8 sdev 0.0
seeks: 2 (100.0%)
seek dist (blks): init 608672,
avg 16.0 min 16 max 16 sdev 0.0
time to next req(msec): avg 162.160 min 8.497 max 315.823 sdev 153.663
throughput: 21.7 KB/sec
utilization: 0.04

------------------------------------------------------------------------------
Detailed Physical Volume Stats (512 byte blocks)
------------------------------------------------------------------------------
VOLUME: /dev/hdisk0 description: N/A
reads: 7 (0 errs)
read sizes (blks): avg 18.3 min 8 max 40 sdev 12.6
read times (msec): avg 5.723 min 0.905 max 20.448 sdev 6.567
read sequences: 5
read seq. lengths: avg 25.6 min 8 max 64 sdev 22.9
seeks: 5 (71.4%)
seek dist (blks): init 4233888,
avg 171086.0 min 8 max 684248 sdev 296274.2
seek dist (%tot blks):
init 48.03665,
avg 1.94110 min 0.00009 max 7.76331 sdev 3.36145
time to next req(msec):
avg 50.340 min 0.226 max 315.865 sdev 108.483
throughput: 173.6 KB/sec
utilization: 0.10

 

抱歉!评论已关闭.