参考链接:http://www-01.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.performance/detailed_io_analysis_fielmon.htm
通过 filemon 命令进行详细 I/O 分析
filemon 命令跟踪设备来获取一段时间间隔内的 I/O 活动的详细图像,该时间间隔产生于文件系统应用的不同层面,包括本地文件系统、虚拟内存段、LVM 和物理磁盘层。
filemon 命令可用于收集所有层上的数据,或者可通过 -O 层选项指定层。缺省值是在 VM、LVM 和物理层面上收集。总结和详细报告一起生成。既然它使用了跟踪设备,那么 filemon 命令就可以只被 root 用户或一位系统组的成员运行。
为了确认 filemon 命令是否已安装并且可用,您可以运行如下命令:
# lslpp -lI perfagent.tools
# lslpp -lI perfagent.tools
Fileset Level State Description
----------------------------------------------------------------------------
Path: /usr/lib/objrepos
perfagent.tools 6.1.6.15 COMMITTED Local Performance Analysis &
Control Commands
Path: /etc/objrepos
perfagent.tools 6.1.6.15 COMMITTED Local Performance Analysis &
Control Commands
使用 filemon 命令可以启动跟踪,可选用 trcoff 子命令进行暂挂,选用 trcon 子命令继续进行。一旦跟踪被终止,filemon 命令便将报告写入标准输出。
注: 将只收集在 filemon 命令启动之后打开的那些文件的数据(除非指定 -u 标志)。
filemon 命令可以从一个指定的文件中读取 I/O 跟踪的数据,而不是从实时跟踪进程中读取。在这种情况下,filemon 报告总结了系统的 I/O 活动情况和由跟踪文件表示的周期。当需要对远程机器上的跟踪文件进行后处理,或者一段时间执行跟踪数据收集另一段时间用来对它进行后处理,这时这种脱机处理的方法就很有用处。
trcrpt -r 命令必须对跟踪日志文件执行,并且重定向到另一个文件,如下所示:
# gennames > gennames.out
# trcrpt -r trace.out > trace.rpt
在这点上,调整过的跟踪日志文件伺服于 filemon 命令以便报告被先前跟踪会话捕捉到的 I/O 活动,如下所示:
# filemon -i trace.rpt -n gennames.out | pg
本例中,filemon 命令从输入文件 trace.rpt 读取文件系统跟踪事件。因为跟踪数据已经捕捉到文件中,filemon 命令并不将它放到后台以便让应用程序运行。整个文件被读取之后,有关虚拟内存、逻辑卷和物理卷级别的 I/O 活动报告将会在标准输出中显示。(在这个示例中,报告被输送到 pg 命令中)。
如果 trace 命令是带 -C all 标志运行的,那么运行 trcrpt 命令时也要带 -C all 标志(请参阅格式化来自 trace -C 输出的报告)。
下列命令的序列给出了一个有关 filemon 命令使用的示例:
# filemon -o fm.out -O all; cp /smit.log /dev/null ; trcstop
这份报告是按此序列生成的(在另一类空闲系统),如下所示:
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
在系统伴有真实负载的情况下使用 filemon 命令将产生更长的报告并可能需要更多的跟踪缓存空间。filemon 命令的空间和 CPU 时间消耗可能在一定范围内降低系统性能。在生产环境下开始使用之前,先用 filemon 命令在非生产系统中试验。此外,使用脱机处理,并且在多 CPU 系统上将 -C all 标志与trace 命令一起使用。
注: 尽管 filemon 命令以详细的统计信息报告了平均数、最小值、最大值和标准偏差,但是该结果并不能用来形成可信间隔数或其他正式的统计推理。总的来说,数据点的分布既不随机也不对称。