Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2624853
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: 系统运维

2008-03-06 17:16:53

filemon 命令跟踪设备来获取一段时间间隔内的 I/O 活动的详细图像,该时间间隔产生于文件系统应用的不同层面,包括本地文件系统、虚拟内存段、LVM 和物理磁盘层。数据可以在所有层或所有通过 -O 选项指定的层面上被收集。缺省值是在 VMLVM 和物理层面上收集。总结和详细报告一起生成。既然它使用了跟踪设备,那么 filemon 命令就可以只被 root 用户或一位系统组的成员运行。

为了确认 filemon 命令是否已安装并且可用,您可以运行如下命令:

# lslpp -lI perfagent.tools

跟踪可以由 filemon 命令启动,您也可以通过 trcoff 子命令随意地暂挂,并可通过 trcon 子命令来恢复执行以及使用 trcstop 子命令来终止运行。(既然 filemon 命令正在以优先级 40 的情况下运行,您可能想执行如下命令 nice -n -20 trcstop 来停止 filemon 命令。一旦跟踪被终止,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 标志方式运行,那么同样以带有 -C all 标志方式运行 trcrpt 命令

下列命令的序列给出了一个有关 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:

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 命令以详细的统计信息报告了平均数、最小值、最大值和标准偏差,但是该结果并不能用来形成可信间隔数或其他正式的统计推理。总的来说,数据点的分布既不随机也不对称。

filemon 命令的全局报告

全局报告列出了在测量间隔中最活跃的文件、段、逻辑卷和物理卷。它们在 filemon 报告的开始部分显示。缺省情况下,逻辑文件和虚拟内存报告各自被限制在最多 20 个最活跃的文件和段,衡量标准为总的数据传送量。如果 -v 标志被指定了,那么所有文件和段的活动将被报告。报告中的所有信息按照最活跃到最不活跃依次从上到下列出。

最活跃的文件

#MBs

此文件在测量间隔时间内的传送量(以 MBs 为单位)。各行按照此字段降序排列。

#opns

在测量周期内的文件的打开次数。

#rds

文件读取调用的次数

#wrs

文件写入调用的次数

file

文件名称(文件路径全称在详细报告中)。

volume:inode

文件驻留的逻辑卷和在相连文件系统总的 i-node 数目。此字段可以被用来把文件和在详细的 VM 段报告中显示的其相应的持久段关联起来。此字段对在执行过程中创建和删除的临时文件可以为空。

最活跃的文件是在逻辑卷 hd4 和文件 null smit.log。应用程序使用 terminfo 数据库来管理屏幕;所以 ksh.cat cmdtrace.cat 同样繁忙。任何情况下,shell 需要向屏幕传送一条信息时,它就使用数据源目录。

为了识别未知文件,您可以把逻辑卷的名称 /dev/hd1 转换成文件系统安装点名称 /home,并且使用 find ncheck命令:

# find / -inum 858 -print

/smit.log

或者

# ncheck -i 858 //:858     /smit.log/:

# ncheck -i 858 //:858     /smit.log

最活跃的段

#MBs

此段在测量间隔时间内的传送量(以 MBs 为单位)。各行按照此字段降序排列。

#rpgs

从磁盘读入段中大小为 4-KB 的页面数

#wpgs

从段中写入磁盘大小为 4-KB 的页面数(page out

#segid

内存段的 VMM 标识

segtype

段的类型:工作段、持久段(本地文件)、客户机段(远程文件)、页表段、系统段或者包含文件系统数据的指定持久段(日志、根目录、.inode.inodemap.inodex.inodexmap.indirect.diskmap)。

volume:inode

对持久段来说,包含相关文件的逻辑卷名称和文件的 i-node 数目。此字段可以被用来把段和在详细的文件状态报告中显示的其相应的文件关联起来。对非持久段来说,此字段为空。

如果命令仍是活动的,虚拟内存分析工具 svmon 可以被用来显示有关段的更多的信息。给出它的段标识(segid),如下所示: svmon -D segid

在我们的示例中,这个 segtype ??? 意味着系统不能识别该段类型,并且您必须使用 svmon 命令来获取更多的信息。

最活跃的逻辑卷

util

逻辑卷使用率。

#rblk

从逻辑卷读取的大小为 512-byte 的块数。

#wblk

写入逻辑卷大小为 512-byte 的块数。

KB/s

每秒钟平均传送速率,单位 KB

volume

逻辑卷名称。

description

文件系统安装点或是逻辑卷类型(paging, jfslog, boot, or sysdump)。例如,逻辑卷 /dev/hd2 /usr类型;/dev/hd6 paging 类型以及 /dev/hd8 jfslog 类型。有时也可能出现被压缩的这个字眼。这意味着所有的数据在被写入磁盘前都会以 Lempel-Zev LZ)压缩技术自动压缩,在从磁盘读取时则自动解压缩。

使用率用百分比表示,0.06 是指 6% 的逻辑卷在测量时间间隔内繁忙。

最活跃的物理卷

util

物理卷使用率。

:

逻辑卷 I/O 请求在物理卷 I/O 请求前后启动。总的逻辑卷使用率将会看起来比总的物理卷使用率高。

#rblk

从物理卷读取的大小为 512-byte 的块数。

#wblk

写入物理卷大小为 512-byte 的块数。

KB/s

每秒钟平均传送速率,单位 KB

volume

物理卷名称。

description

有关物理卷类型的简单描述,例如, SCSI 多媒体 CD-ROM 驱动器 或 16 SCSI 磁盘驱动器。

使用率用百分比表示,0.10 是指 10% 的物理卷在测量时间间隔内繁忙。

filemon 命令的详细报告

详细的报告给出了相对全局报告的一些附加信息。对每个报告文件、段或卷来说,在详细报告中都有一个条目。每个条目中字段在下面的四个详细报告中描述。有些字段报告了一个单值;其余的报告了被称为。例如,响应时间的统计信息保存了所有被监视的读写请求。除了报告响应次数的标准偏差外,平均、最小和最大的响应次数也被报告。标准差是用来显示单个响应次数相对平均响应次数而言偏差了多少。大约 2/3 的样本响应次数在平均数减去标准差(avg - sdev)和 平均数加上标准差(avg + sdev)之间。如果响应次数的分布在很大的范围内散射,那么标准差相对平均响应时间而言就会变大。

详细的文件统计信息

在最活跃的文件报告中列出了为每个文件的提供的详细文件统计信息。这些节可以被用来确定该文件的存取情况。除了确定总的传送字节数、openswrites lseeks,用户也可以确定读取/写入的大小和次数。

FILE

文件的名称。如有可能,路径全称将被给出。

volume

逻辑卷/文件系统包括文件的名称。

inode

在文件系统中文件的 I-node 数目。

opens

监视期内文件打开的次数。

total bytes xfrd

总的读/写、进/出文件的字节数。

reads

对文件进行读取调用的次数

read sizes (bytes)

读取传送大小统计信息(avg/min/max/sdev),以字节为单位。

read times (msec)

读取响应时间统计信息(avg/min/max/sdev),单位为毫秒。

writes

对文件进行写入调用的次数

write sizes (bytes)

写入传送大小统计信息。

write times (msec)

写入相应时间的统计信息。

lseeks

lseek()子例程的调用的数目。

read sizes write sizes 将会给您一个有关您的应用程序在读取和写入信息的性能的感性认识。使用 4KB 大小的多重文件为最佳结果。

详细的 VM 段统计信息

每个列在 最活跃段的报告中的元素有相关的一节显示了有关真实的 I/O 进出内存的详细信息。

SEGMENT

内部操作系统的段标识。

segtype

段内容的类型

segment flags

不同的段属性。

volume

对持久段来说,包含相关文件的逻辑卷名称。

inode

对持久段来说,相应文件的 i-node 数目。

reads

读取到段中大小为 4096 字节的页面数(就是,paged in)。

read times (msec)

读取响应时间统计信息(avg/min/max/sdev),单位为毫秒。

read sequences

读取的序列数。一个序列是一连串连续读取的字符串页面。read sequences 的数目是顺序存取量的指示符。

read seq. lengths

描述了 read sequences 的长度的统计信息,以页位单位。

writes

从段写入磁盘的页面数(就是,paged out)。

write times (msec)

写入相应时间的统计信息。

write sequences

写入的序列数。一个序列是一连串连续写入(paged out)的页面。

write seq. lengths

描述了写序列的长度的统计信息,以页位单位。

通过检查 reads read-sequence 计数情况,您可以确定访问是顺序的还是随机的。例如,如果 read-sequence 计数接近 reads 计数,该文件访问更趋于随机化。另一方面,如果 read-sequence 计数在很大程度上比 read 计数小很多并且 read-sequence 长度是一个高值,该文件根趋于顺序化。这个逻辑同样适用于 writes write sequence

详细的逻辑/物理卷统计信息

每个列在最活跃逻辑卷/最活跃物理卷的报告中元素有相应的一节显示了有关逻辑/物理卷的详细信息。除了读取和写入的数量。用户还可以不仅确定逻辑/物理卷的初始和平均的搜索距离,而且确定读取和写入的次数和大小。

VOLUME

卷名。

description

有关卷的描述。(如果对象是逻辑卷则描述内容,物理卷则描述类型。)

reads

对卷进行读取请求的次数

read sizes (blks)

读取传送大小统计信息(avg/min/max/sdev),以 512 字节大小的块为单位。

read times (msec)

读取响应时间统计信息(avg/min/max/sdev),单位为毫秒。

read sequences

读取的序列数。一个序列是一连串连续读取的大小为 512 字节的块。它表明了顺序存取的数量。

read seq. lengths

统计信息描述了读取序列的长度,以块为单位。

writes

对卷进行写入请求的次数。

write sizes (blks)

写入传送大小统计信息。

write times (msec)

写入响应时间统计信息。

write sequences

写入的序列数。一个序列是一连串连续写入的大小为 512 字节的块。

write seq. lengths

有关描述写入序列长度的统计信息,以块为单位。

seeks

在一次读取或写入请求前的寻道数;也可以表达为总的需要寻道的读请求数和写请求数所占的百分比。

seek dist (blks)

寻道距离统计信息,以 512 字节一块为单位。除了一些平常的统计信息(avg/min/max/sdev),初始化寻道操作(假设 0 号块为开始位置)的距离是分开报告的。有时候,寻道距离会很长;分开报告是为了避免是其他统计信息偏移。

seek dist (cyls)

(只有物理卷)寻到距离统计信息以磁盘柱面为单位。

time to next req

有关(avg/min/max/sdev)描述对卷执行读或写请求之间的时间长度的统计信息,单位为毫秒。这一列表明了该卷的存取速率。

throughput

每秒总的卷吞吐量,单位为 KB

utilization

卷繁忙的时间比重。在此报告中的各条目按照此字段降序排列。

一个长的寻道时间可以增加 I/O 响应时间,结果降低了应用程序的性能。通过检查读取请求数和写入请求数的计数情况,您可以确定访问是顺序的还是随机的。这个逻辑同样适用于写请求数和写序列。

 

    /etc/inittab 文件总是很活跃。指定在 /etc/inittab 中的守护程序经常被检查以确定它们是否要被重新生成。

    /etc/passwd 文件也很活跃。因为许多文件和目录的存取许可性要被核实。

    一个长的寻道时间增加了 I/O 的响应时间并且降低了系统的性能。

    如果大部分读写请求要求寻道,您可能在同一个物理磁盘上拥有碎片文件和过分活跃的文件系统。然而,对联机事务处理或是数据库系统来说,这种行为可能是正常的。

    如果读写请求的数目接近序列数,物理磁盘存取方式较顺序而言更加随机化。一个序列是一连串连续读取(paged in)或连续写入(paged out)的页面。seq. lengths 是序列以页为单位的长度。一个随机文件存取也有可能涉及许多寻道数。在这种情况下,您不能区分 filemon 命令的输出结果是表明文件的存取方式为随机还是文件是碎裂的。使用 fileplace 命令来进一步调查。

    远程文件列在 volume:inode 列中,并带有远系统的名称。

阅读(7695) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~