AIX的sar命令详解(原创)

sar概述

sar 命令将 操作系统中选定的累计活动计数器的内容写到标准输出。基于 NumberInterval 参数的值,记帐系统以指定的时间间隔(以秒为单位)和指定间隔次数写入信息。Number 参数的缺省采样时间间隔为 1 秒。收集的数据也可以保存在由 -o File 标志所指定的文件中。

计算等待磁盘 I/O 所花费 CPU 时间(wio 时间)百分比的方法的改进。

在 AIX 4.3.2 及早期操作系统版本中采用的方法在某些情况下会在 SMP 上显示出夸大的 wio 时间。wio 时间是由 sar(%wio)命令、vmstat(wa)命令和 iostat(% iowait)命令报告的。
AIX 4.3.2 及早期版本中使用的方法如下:每个处理器上的每次时钟中断(每个处理器 100 次/秒)时,都须确定要将最后 10 ms 时间花费在四个类别(usr/sys/wio/idle)中的哪个上。如果时钟中断时 CPU 正处于 usr 模式下,则 usr 类别获取该时钟信号加入其中。如果时钟中断时 CPU 处于 kernel 模式下,则 sys 类别获取该信号。如果 CPU 不忙,则检查是否有任何磁盘 I/O 正在进行。如果有正在进行的磁盘 I/O,则增加 wio 类别。如果没有正在进行的磁盘 I/O 且 CPU 不忙,则 idle 类别取得该信号。wio 时间的夸大是由于所有空闲 CPU 都被视为 wio,而不管等待 I/O 的线程数。例如,只有一个线程正在执行 I/O 的系统可能报告大于 90% 的 wio 时间,而不管该系统拥有的 CPU 数量。
操作系统 AIX 4.3.3 及以后版本中使用的方法如下:在操作系统 AIX 4.3.3 中所作的更改是仅当某空闲 CPU 上有未完成的 I/O 开始时才将其标记为 wio。当只有几个线程正在执行 I/O,或者系统为空闲时,此方法所报告的 wio 时间要低得多。例如,系统中有四个CPU 且一个线程正在执行 I/O 时,最多只报告 25% 的 wio 时间。系统中有十二个 CPU 且一个线程正在执行 I/O 时,最多报告 8% 的 wio 时间。NFS客户机通过 VMM 进行读/写,现在将 biod 在 VMM等待 I/O 完成所花费的时间报告为 I/O 等待时间。

sar参数

-A 没有使用 -P 标志时,使用 -A 标志相当于指定 -abckmqruvwy 。当与 -P 标志一起使用时,-A 相当于指定 -acmuw
-a 报告使用文件存取系统例程指定每秒调用各种系统文件存取例程的次数。当与 -P 标志一起使用时,只为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
dirblk/s
目录搜索例程为特定文件定位目录项所读取的 512 字节块的数量。
iget/s
调用支持多文件系统类型的几个 i-node 查询例程中的任何一个。iget 例程返回一个指向文件或设备的 i-node 结构的指针。
lookuppn/s
调用目录搜索例程,根据给定的路径名该例程可以查找 v-node 的地址。
-b 报告缓冲区活动中每秒用于传输、存取以及高速缓存(内核块高速缓存)的命中率。存取第 3 版本中的大多数文件会忽略内核块缓冲,因此不生成这些统计信息。然而,如果程序打开块设备或裸字符设备进行 I/O,则使用传统的存取机制使生成的统计信息变得有意义。将显示以下数值:
bread/s, bwrit/s
报告 I/O 操作的块的数目。这些 I/O 通常由内核执行来管理块高速缓存区,正如在 lread/s 值的描述中所论述的那样。
lread/s, lwrit/s
报告逻辑 I/O 请求的数量。当执行对块设备的逻辑读或写时,可能请求小于整块大小的逻辑传输大小。系统对所有块的物理设备单元进行存取,并将这些块缓冲在为此目的而留出 的内核缓冲区(块 I/O 高速缓存区)中。这个高速缓存区由内核管理,因此对块设备的多个逻辑读写可以存取以前缓冲在高速缓存中的数据,而且不需要对该设备进行真正的 I/O。应用程序对块的读写请求作为逻辑读写而统计地报告。由管理高速缓存区的内核所执行的对块设备的块 I/O 作为块读写而报告。
pread/s, pwrit/s
报告对裸设备的 I/O 操作的数量。对裸字符设备的 I/O 请求不像对块设备的 I/O 请求那样缓冲。直接对设备执行 I/0。
%rcache, %wcache
报告高速缓存的效率(高速缓存命中百分比)。此百分比由下式计算得出:[(100)x(lreads - breads)/ (lreads)]。
-c 报告系统调用。当与 -P 标志一起使用时,只为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
exec/s, fork/s
报告 forkexec 系统调用的总数。高进程创建会导致较差的性能,并且这是可能需要将一些应用程序转移到其他计算机的信号。
sread/s, swrit/s
报告读/写系统调用的总数。
rchar/s, wchar/s
报告读/写系统调用传送的字符总数。
scall/s
报告系统调用的总数。
注:根据
sar
命令运行的时间间隔,它本身可以生成相当多的读和写。在无工作负荷的情况下运行 sar 统计,以了解 sar 命令在总统计信息中的份额。
-d 报告每个块设备(除磁带驱动器外)的活动。所报告的活动数据是:
%busy, 
报告设备忙于执行传输请求所用的那一部分时间以及该段时间内未完成的请求的平均值。
read/s, write/s, blks/s
报告从/到一个设备的读/写传送的数量(所传送的字节数以 512 字节为单位)。
avwait
        每个I/O请求的平均等待时间,单位是毫秒. 表示 I/O 请求 
        在设备驱动器的I/O队列中等待访问I/O设备的时间.
avque
         访问磁盘的平均I/O 请求数. 表示I/O 队列的平均长度. 
          在以前的版本中此值表示的是瞬间的磁盘 I/O 请求数.
            其值很高则预示着磁盘有较大瓶颈
avserv
每个I/O请求的平均(服务)完成时间,单位是毫秒. 表示 I/O
请求到达I/O 设备后,从设备上得到返回结果的时间
-e hh [:mm [:ss ]] 设置报告的结束时间。缺省结束时间是 18:00。
-X File File 文件中抽取记录,该文件由 sar/sadc 命令的 AIX 4.3 或 AIX 4.2 版本生成。
-f File File (由 -o File 标志创建)文件中抽取记录。File 参数的缺省值是当前每日数据文件,即 /var/adm/sa/sa dd 文件。
-i Seconds 以尽可能接近 Seconds 参数所指定的秒数选择数据记录。否则,sar 命令将报告在该数据文件中找到的所有秒数。
-k 报告内核进程活动。将显示以下数值:
kexit/s
报告每秒内核进程终止数。
kproc-ov/s
报告由于实施进程阈值限制而不能创建内核进程的次数。
ksched/s
报告每秒分配执行任务的内核进程数。
-m 报告每秒消息(发送和接收)以及信号量(创建、使用或破坏)活动。与 -P 标志一起使用时,为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
msg/s
报告 IPC 消息原语的数量。
sema/s
报告 IPC 信号量原语的数量。
-o File 将读取的内容以二进制格式保存在文件里。每个读取为一条单独的记录,而且每个记录都含有一个标识该读取时间的标记。
-P ProcessorIdentifier , ... | ALL 报告指定处理器的每个处理器的统计信息。指定 ALL 关键字报告每个处理器的统计信息以及所有处理器的全部统计信息。在指定要报告的统计信息的标志中,只有 -a-c-m-u-w 标志对 -P 标志有意义。
-q 报告队列统计信息。将显示以下数值:
runq-sz
报告在运行队列中的平均内核线程数。
%runocc
报告运行队列占用的时间百分比。
swpq-sz
报告等待页面调入的内核线程数的平均值。
%swpocc
报告调动队列占用的时间百分比。
注: 任何列为空值表示相关的队列为空。
-r 报告页面调度统计信息。将显示以下数值:
cycle/s
报告每秒页面替换循环的数量。
fault/s
报告每秒缺页故障的数量。它没有对生成 I/O 的缺页故障进行计数,因为一些缺页故障可以在没有 I/O 的情况下解决。
slots
报告在调页空间中空闲页的数量。
odio/s
报告每秒非页面调度磁盘I/O的数量。
-s hh [:mm [:ss ]] 设置数据开始时间,使 sar 命令以(遵循)指定时间抽取有时间标记的记录。缺省开始时间是 08:00。
-u

报告每个处理器或整个系统的统计信息。当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。因为 -u 标志信息以百分比表示,所以系统范围信息只是每个处理器统计信息的平均值。并且,I/O 等待状态是以整个系统而不是每个处理器来定义的。将显示以下数值:

  %idle

报告 CPU 为空闲(且没有未完成的 I/O 请求)所占的时间百分比。
  %sys
报告 CPU 在系统(或内核)级别上执行所花费的时间的百分比。
  %usr
报告 CPU 在用户(或应用程序)级别上执行所花费的时间
的百分比。
  %wio
报告 CPU 空闲(但系统有未完成的磁盘/NFS I/O 请求)所占的时间的百分比。请参阅以上的详细描述。
注: 如果没有请求其它特定的内容选项,则sar 命令报告系统部件的活动。

  physc           

        消耗物理处理器的数目,只在共享处理器或启用同时多线

           程的分区上报告

-V 读取在以前操作系统版本中创建的 sar 文件。此标志只能与 -f 标志一起使用。
-v 报告进程、内核线程、i-node 和文件表的状态。将显示以下数值:
file-sz, inod-sz , proc-sz , thrd-sz 报告每个表中正在使用的条目数。
-w 报告系统切换的活动。当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
pswch/s
报告每秒上下文转接的数量。 高的数值表示计算机上运行的内容过多,该计算机在切换任务上花费了比实际工作更多的时间。
-y 报告每秒 tty 设备的活动。
canch/s
报告 tty 规范输入队列字符。对于 AIX V4 及以后的版本,本字段总是 0(零)。
mdmin/s
报告 tty 调制解调器中断。
outch/s
报告 tty 输出队列字符。
rawch/s
报告 tty 输入队列字符。
revin/s
报告 tty 接收中断。
xmtin/s
报告 tty 发送中断。

使用示例

1、要在随后的 20 秒内每隔 2 秒报告当前的 tty 活动和页面调度统计信息:
sar -y  -r 2 20
2、要观察系统部件 10 分钟,并以保存为二进制文件temp:
sar  -o temp 60 10
3、要报告最前面的两个处理器的 cpu 活动:
sar  -u  -P 0,1

sar命令的缺省参数为-u参数,故不加-u参数亦可

4、要报告所有处理器和系统范围内的消息、信号量及 CPU 活动:
sar  -mu  -P ALL
5、要读取在以前操作系统版本上生成的名为 File 的系统活动文件中聪14:20开始到15:00结束的内容中系统切换和队列统计信息的那部分。其中,-s 并不是包含性的,所以必须从所选择的开始时间中多减去十分钟。

sar  -f File -s 14:20 -e 15:00 -w -q


参考至:http://www.ibm.com/developerworks/cn/aix/library/es-unix-perfmonsar.html

             http://hi.baidu.com/h_sn999/blog/item/413c97b755c0b4e530add156.html

             http://www.wangchao.net.cn/bbsdetail_532003.html

             http://www.kuqin.com/aixcmds/aixcmds5/sar.htm#a26891631

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:[email protected]








猜你喜欢

转载自czmmiao.iteye.com/blog/1155184