sar 命令

上一篇 / 下一篇  2008-07-14 10:36:39

sar 命令

用途

收集、报告或保存系统活动信息。

语法

/usr/sbin/sar[ {-A| [-a] [-b] [-c] [-d][-k] [-m] [-q] [-r] [-u] [-V] [-v] [-w] [-y] } ] [-PProcessorIdentifier,... |ALL] [-ehh[:mm[:ss] ] ] [-XFile] [-fFile] [-iSeconds] [-oFile] [-shh[:mm[:ss] ] ] [Interval[Number] ]

描述

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

sar命令抽取并写入以前保存在文件里的标准输出记录。此文件既可以是由-f标志指定的文件,或者也可以是缺省情况下标准系统活动每日数据文件,即/var/adm/sa/sadd文件,其中dd参数表示当前日期。

没有-P标志的sar命令报告整个系统(所有处理器)的统计信息,对于以百分比表示的数值计算其平均值,否则计算其总数。如果指定-P标志,则sar命令报告与指定处理器相关的活动。如果给定-P ALL,则sar命令报告每个单独的处理器的统计信息,跟在整个系统的统计信息后面。

可以使用标志选择关于特定系统活动的信息。没有指定任何标志,则仅选择系统部件活动。指定-A标志,则选择所有活动。

sar命令的缺省版本(CPU 使用率报告)可能是用户开始系统活动调查首先要运行的工具之一,因为它监视主要的系统资源。如果 CPU 使用率接近 100%(用户 + 系统),采样的工作负荷为 CPU 受限。如果 I/0 等待花费相当大的时间百分比,这意味着 CPU 执行受阻,等待磁盘 I/O。该 I/O 可能是必要的文件存取,也可能与由于内存不足而进行页面调度有关。

注:
系统用于等待远程文件存取的时间没有计入 I/O 等待时间。如果一项任务的 CPU 使用率和 I/O 等待时间相对较低,且响应时间不能令人满意,则可考虑调查有多少时间在等待远程 I/O 。由于没有一个高级命令提供对远程 I/O 等待的统计,所以跟踪数据可能对这种调查有用。

计算 CPU 磁盘 I/O 等待时间的方法

AIX 4.3.3 及以后的版本包含用于计算等待磁盘 I/O 所花费 CPU 时间(wio时间)百分比的方法的改进。在 AIX 4.3.2 及早期操作系统版本中采用的方法在某些情况下会在 SMP 上显示出夸大的 wio 时间。wio 时间是由sar%wio)命令、vmstatwa)命令和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命令指定一个输出文件,这样就方便多了。将sar命令的标准输出数据定向到/dev/null,并将sar命令作为后台进程运行。 以上操作的语法是:

sar -A -o data.file interval count > /dev/null &

以二进制格式获取所有数据并将其保存在文件(data.file)中。然后,使用带有-f选项的sar命令可以有选择地显示数据。

sar命令调用一个称为sadc的进程来存取系统数据。构建两个 shell 脚本(/usr/lib/sa/sa1/usr/lib/sa/sa2),它们由cron命令运行并提供每日统计信息和报告。样本节包括在/var/spool/cron/crontabs/admcrontab 文件中(但被注释掉),用来指定cron守护进程应在何时运行 shell 脚本。以这种方式收集的数据对于描述一段时间内系统的使用特征以及确定使用高峰期是很有用的。

您可以在系统启动时通过取消/etc/rc脚本中相应行的注释将一条哑元记录插入标准系统活动每日数据文件中。对于 CPU 时间小于前一个记录的任何记录,sar 命令都将报告时间变化为负值。如果使用在/etc/rc中注释掉的哑元记录插入行重新引导系统,将出现这种情况。

注:
sar命令只报告本地活动。

可以使用基于 Web 的系统管理器(wsm)中的系统应用程序来运行此命令。

也可以使用“系统管理界面工具”(SMIT)smit 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, avque
报告设备忙于执行传输请求所用的那一部分时间以及该段时间内未完成的请求的平均值。
read/s, write/s, blks/s
报告从/到一个设备的读/写传送的数量(所传送的字节数以 512 字节为单位)。
avwait, avserv
不执行,总是设置为 0.0。
-ehh[:mm[:ss]]设置报告的结束时间。缺省结束时间是 18:00。
-XFileFile文件中抽取记录,该文件由sar/sadc命令的 AIX 4.3 或 AIX 4.2 版本生成。
-fFileFile(由-oFile标志创建)文件中抽取记录。File参数的缺省值是当前每日数据文件,即/var/adm/sa/sadd文件。
-iSeconds以尽可能接近Seconds参数所指定的秒数选择数据记录。否则,sar命令将报告在该数据文件中找到的所有秒数。
-k报告内核进程活动。将显示以下数值:
kexit/s
报告每秒内核进程终止数。
kproc-ov/s
报告由于实施进程阈值限制而不能创建内核进程的次数。
ksched/s
报告每秒分配执行任务的内核进程数。
-m报告每秒消息(发送和接收)以及信号量(创建、使用或破坏)活动。与-P标志一起使用时,为每个指定处理器提供此信息;否则,只在系统范围内提供此信息。将显示以下数值:
msg/s
报告 IPC 消息原语的数量。
sema/s
报告 IPC 信号量原语的数量。
-oFile将读取的内容以二进制格式保存在文件里。每个读取为一条单独的记录,而且每个记录都含有一个标识该读取时间的标记。
-PProcessorIdentifier,... |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 的数量。
-shh[:mm[:ss]]设置数据开始时间,使sar命令以(遵循)指定时间抽取有时间标记的记录。缺省开始时间是 08:00。
-u报告每个处理器或整个系统的统计信息。当与-P标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。因为-u标志信息以百分比表示,所以系统范围信息只是每个处理器统计信息的平均值。并且,I/O 等待状态是以整个系统而不是每个处理器来定义的。将显示以下数值:
%idle
报告 CPU 为空闲(且没有未完成的 I/O 请求)所占的时间百分比。
%sys
报告 CPU 在系统(或内核)级别上执行所花费的时间的百分比。
%usr
报告 CPU 在用户(或应用程序)级别上执行所花费的时间的百分比。
%wio
报告 CPU 空闲(但系统有未完成的磁盘/NFS I/O 请求)所占的时间的百分比。请参阅以上的详细描述。
注:如果没有请求其它特定的内容选项,则sar命令报告系统部件的活动。
-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 发送中断。

安全性

访问控制:这些命令应只将执行(x)访问权授予adm组的成员。

示例

  1. 要报告系统部件活动,请输入:
    sar
  2. 要在随后的 20 秒内每隔 2 秒报告当前的 tty 活动,请输入:
    sar-y  -r2 20
  3. 要观察系统部件 10 分钟,并对数据进行排序,请输入:
    sar  -otemp 60 10
  4. 要报告最前面的两个处理器的 cpu 活动,请输入:
    sar  -u  -P0,1
    这样将产生与以下类似的输出:
    cpu  %usr  %sys  %wio  %idle
    0 45 45 5 5
    1 27 65 3 5
  5. 要报告所有处理器和系统范围内的消息、信号量及 CPU 活动,请输入:
    sar  -mu  -PALL
    而在一个有四个处理器的系统上,将产生与以下类似的输出(最后一行表示对所有处理器的系统范围内的统计):
    cpu  msgs/s  sema/s  %usr  %sys  %wio  %idle
    0 7 2 45 45 5 5
    1 5 0 27 65 3 5
    2 3 0 55 40 1 4
    3 4 1 48 41 4 7
    - 19 3 44 48 3 5
  6. 要读取在以前操作系统版本上生成的名为File的系统活动文件,请输入:
    sar  -V  -fFile

文件

/usr/sbin/sar包含sar命令。
/bin/sar表示与sar命令的符号链接。
/var/adm/sa/sadd表示每日数据文件,其中dd参数是表示该月的第几日的数字。

TAG:

 

评分:0

我来说两句

Open Toolbar