sar 命令

用途

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

语法

/usr/sbin/sar [{ -A [ -M ] | [ -a ] [ -b ] [ -c ] [ -d ] [ -k ] [ -m ] [ -q ] [ -r ] [ -u ] [ -v ] [ -w ] [ -y ] [ -M ]}] [ -P processoridentifier ... | ALL | RST [-O {sortcolumn = col_name [, sortorder={asc|desc}] [, topcount = n]}]] [ [ -@ wparname ] [ -e[YYYYYMMDD] hh [ :mm [ :ss ]] [ -ffile ] [ -iseconds ] [ -ofile ] [ -s[YYYYYMMDD] hh [ :mm [:ss ]]][-x] [ Interval [ Number ]]

sar [-X [-o filename]] [interval [count]]

描述

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

当指定了 -X 选项时, sar 命令将生成 XML 文件。

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

没有 -P 标志的 sar 命令报告系统范围(所有处理器)的统计信息,对于以百分比表示的数值计算其平均值,否则计算其总数。 如果给定 -P 标志,那么 sar 命令报告与指定的一个或多个处理器相关的活动。 如果给定 -P ALL 标志,那么 sar 命令依次报告每个处理器的统计信息和系统范围的统计信息。 如果在 工作负载分区 环境中使用 -P ALL ,并且 WPARrset 注册表相关联, 将显示资源集统计信息和系统范围统计信息; 属于该资源集的处理器以星号 (*) 作为前缀。

可以使用标志选择有关特定系统活动的信息。 如果未指定任何标志,那么仅选择系统 WPAR 单元活动。 指定 -A 标志,那么选择所有活动。 在开始打印统计信息之前, sar 命令将打印当前处于活动状态的处理器数和磁盘数。

sar 命令的缺省版本(处理器使用率报告)可能是用户开始系统活动调查首先要运行的工具之一,因为它监视主要的系统资源。 如果处理器使用率接近 100%(用户 + 系统),采样的工作负载为处理器受限。 如果在 I/O 等待中花费了相当大的时间百分比,这意味着处理器执行会阻塞等待磁盘 I/O。 I/O 可能是必需的文件访问,或者由于缺少足够的内存,它可能是与页面调度相关联的 I/O。

注: 系统等待 远程 文件访问所耗用的时间 在 I/O 等待时间中累积。 如果任务的 CPU 利用率和 I/O 等待时间相对较低,并且响应时间不令人满意,请考虑调查等待远程 I/O 所花费的时间。 由于没有高级命令提供有关远程 I/O 等待的统计信息,因此跟踪数据可能有助于观察此情况。 如果系统配置中存在影响 sar 命令输出的更改,那么 sar 将显示直至当前迭代的平均值,然后显示有关配置更改的警告消息。 该命令在显示已更新的系统配置信息之后将继续输出。

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

AIX® 操作系统包含对用于计算等待磁盘 I/O (wio 时间) 的处理器时间百分比的方法的增强功能。 wio 时间是由 sar%wio)命令、vmstatwa)命令和 iostat% iowait)命令报告的。

每个处理器上的每次时钟中断(每个处理器 100 次/秒)时,都须确定要将最后 10 毫秒时间花费在四个类别 (usr/sys/wio/idle) 中的哪个类别上。 如果时钟中断时处理器正处于 usr 方式下繁忙作业,那么会将该时钟信号加入 usr 的类别中。 如果时钟中断时处理器处于内核方式下繁忙作业,那么 sys 类别获取该信号。 如果处理器不忙,那么检查是否有任何磁盘 I/O 正在进行。 如果有正在进行的磁盘 I/O,那么增加 wio 类别。 如果没有正在进行的磁盘 I/O 且处理器不忙,那么 idle 类别取得该信号。 所有空闲处理器的 wio 时间视图都被归类为 wio ,而无论等待 I/O 的线程数是多少。 例如,只有一个线程执行 I/O 的系统可能会报告超过 90% 的 wio 时间,而不管它拥有多少个处理器。

如果在空闲处理器上启动了未完成的 I/O ,那么 AIX 操作系统会将该处理器标记为 wio。 当只有几个线程正在执行 I/O,或者系统为空闲时,此方法所报告的 wio 时间要低得多。 例如,系统中有四个处理器且一个线程正在执行 I/O 时,最多只报告 25% 的 wio 时间。 系统中有十二个处理器且一个线程正在执行 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)。 然后,可以使用 sar 命令使用 -f 选项选择性地显示数据。

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

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

AIX 5.3 开始,"sar命令会报告与微分区同步多线程环境有关的 "physc和 "%entc利用率指标。 这些度量仅在 Micro-Partitioning并发多线程 环境中显示。 physc 指示分区 (对于系统范围的利用率) 或逻辑处理器 (如果指定了 -P 标志) 所使用的物理处理器数, %entc 指示分配的授权容量 (对于系统范围的利用率) 或授予的授权容量 (如果指定了 -P 标志) 所占的百分比。 当分区在限制方式下运行时,分区获取的容量无法比分配到的容量更大。 在未限制方式中,分区可以获取比实际分配更大的容量。 这称为授予的授权容量。 如果指定了 -P 标志并且存在未使用的容量,那么 sar 会将未使用的容量打印为具有 cpu id U 的单独处理器。

AIX 6.1开始, sar 命令报告与 工作负载分区 (WPAR) 环境相关的利用率度量 %resc%resc 度量值指示 WPAR 使用的处理器资源的百分比。 仅当在 WPAR中强制实施处理器资源限制时,才会显示此字段。 sar -P 命令报告 WPAR的资源集 (RSET) 利用率度量 R

限制: sar 命令仅报告本地活动。

也可以使用系统管理界面工具 (SMIT) smit sar 的快速路径来运行此命令。

标志

描述
-@WparName -@ 标志指定命令从全局环境报告 WPAR 中的处理器使用情况。 wparname 参数指定要报告哪些 WPAR 处理器统计信息。
注:工作负载分区中执行时,不支持 -@ 标志。
注: 请勿将 -@ 标志与 -d-r-y配合使用。 -f-X 标志。
-A 未使用 -P 标志时,使用 -A 标志相当于指定 -abckmqruvwy。 当与 -P 标志一起使用时,-A 相当于指定 -acmuw。 如果没有 -M 标志,那么在第一个时间间隔的数据之前,只会在分组在一起的多行中打印一次标题。 当此标志与 -M 标志一起使用时,每个迭代中的每行数据前面都有相应的头。
-a 报告使用文件访问系统例程指定每秒调用各种系统文件访问例程的次数。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
每秒磁盘块数
目录搜索例程为特定文件定位目录条目所读取的 512 字节块数。
iget/s
调用支持多文件系统类型的几个索引节点查询例程中的任何一个例程。 iget 例程返回一个指向文件或设备的索引节点结构的指针。
查找
调用目录搜索例程,根据给定的路径名该例程可以查找 v-node 的地址。
-b 报告缓冲区活动中每秒用于传输、访问以及高速缓存(内核块高速缓存)的命中率。 访问第 3 版本中的大多数文件会忽略内核块缓冲,因此不生成这些统计信息。 然而,如果程序打开块设备或原始字符设备进行 I/O,那么使用传统的访问机制使生成的统计信息变得有意义。 将显示以下数值:
面包/秒, 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
报告读/写系统调用传输的字符总数。
芤/s
报告系统调用总数。
提示: sar 命令本身可以根据运行它的时间间隔生成大量的读和写。 在无工作负载的情况下运行 sar 统计,以了解 sar 命令在总统计信息中的份额。
-d 报告每个块设备(除磁带机外)的活动。 将报告以下数据:
%busy
报告设备忙于执行传输请求所用的那一部分时间。
avque
报告正等待发送到磁盘的请求的平均数量。
read/s , write/s , blk/s
以千字节/秒报告设备之间的读写传输。
avwait 和 avserv
每个请求的平均等待时间和服务时间以毫秒为单位。
限制: -d 标志在 工作负载分区中受限制。
- e [YYYYMMDD] hh [ :mm [ :ss ]] 设置报告的结束时间。 缺省结束时间是 18:00。
  • 如果您按 YYYYMMDD 格式指定年份、月份和日期,那么将隐式启用 -x 标志。
  • 如果您未按 YYYYMMDD 格式指定年份、月份和日期,那么认为年份、月份和日期是活动数据文件中与所指定时间相匹配的第一条记录的年份、月份和日期。
-f 文件 file(由 -o file 标志创建)中抽取记录。 file 参数的缺省值为当前每日数据文件,即 /var/adm/sa/sadd 文件。
限制: 如果指定 [ interval [ number ]] 参数,那么将忽略 -f 标志。 -f 标志在 工作负载分区中受限制。
-i 以尽可能接近 Seconds 参数所指定的秒数选择数据记录。 否则,sar 命令将报告在该数据文件中找到的所有秒数。
-k 报告内核进程活动。 将显示以下数值:
kexit/s
报告每秒内核进程终止数。
kproc-ov/s
报告由于实施进程阈值限制而不能创建内核进程的次数。
ksched/s
报告每秒分配执行任务的内核进程数。
-M 当与至少两个 [abckmqruvwy] 组合或与 -A 标志配合使用时,在输出中启用多个头。 在这种方式下,每个迭代的每行数据前都有相应的标题。
限制: 在不使用 [interval [number]] 时,将忽略此标志。
-M 报告每秒消息(发送和接收)以及信号量(创建、使用或破坏)活动。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
毫秒/秒
报告 IPC 消息原语数。
半价
报告 IPC 信号量原语数。
-o 文件 将读取的内容以二进制格式保存在文件里。 每个读取为一条单独的记录,而且每个记录都含有一个标识该读取时间的标记。
-P processoridentifier ... | 所有 |RST 报告指定的一个或多个处理器的每个处理器的统计信息。 指定 ALL 关键字报告每个处理器的统计信息以及所有处理器的全部统计信息。 指定 RST 选项将报告与 WPAR关联的 rset 注册表中存在的处理器的统计信息。 对于指定要报告的统计信息的标志,在全局环境中,仅 -a-c-m-u-w 标志对于 -P 标志有意义。 在 WPAR 环境中,请勿将任何标志与 -P 标志一起使用。
注: sar 命令针对 WPAR 报告的每个处理器的统计信息始终在系统范围内。
-q 报告队列统计信息。 将显示以下数值:
runq-sz
采样间隔内可运行内核线程的平均数量。 可运行内核线程包括已准备就绪但仍在等待运行的线程以及正在运行的线程。
%runocc
报告运行队列占用的时间百分比。
swpq-sz
报告虚拟内存管理器队列中正在等待资源、输入或输出的平均内核线程数。
%s wpocc
报告交换队列占用的时间百分比。
提示: 任何列中的空白值都指示关联的队列为空。
-r 报告页面调度统计信息。 将显示以下数值:
个循环
报告每秒页面替换循环数。
故障/秒
报告每秒缺页故障数。 它没有对生成 I/O 的缺页故障进行计数,因为一些缺页故障可以在没有 I/O 的情况下解决。
slots
报告在调页空间中空闲页数。
ODIO/S
报告每秒非页面调度磁盘 I/O 数。
限制: -r 标志在 工作负载分区中受限制。
- s [YYYYMMDD] hh [ :mm [ :ss ]]] 设置数据开始时间,使 sar 命令以(遵循)指定时间抽取有时间标记的记录。 缺省开始时间是 08:00。
  • 如果您按 YYYYMMDD 格式指定年份、月份和日期,那么将隐式启用 -x 标志。
  • 如果您未按 YYYYMMDD 格式指定年份、月份和日期,那么认为年份、月份和日期是活动数据文件中与所指定时间相匹配的第一条记录的年份、月份和日期。
-U 报告每个处理器或整个系统的统计信息。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 因为 -u 标志信息以百分比表示,所以系统范围信息只是每个处理器统计信息的平均值。 并且,I/O 等待状态是以整个系统而不是每个处理器来定义的。 将显示以下数值:
%idle
报告处理器为空闲(且没有未完成的磁盘 I/O 请求)所占的时间百分比。
%s个
报告处理器在系统(或内核)级别上执行所花费的时间的百分比。
%u个
报告处理器在用户(或应用程序)级别上执行所花费的时间的百分比。
%wio
报告处理器空闲(但系统有未完成的磁盘/NFS I/O 请求)所占的时间的百分比。 请参阅上面的详细描述。
physc
报告物理处理器的消耗数量。 如果分区是专用分区并启用了捐赠,或者正在共享处理器或启用了 同时多线程 的情况下运行,那么将报告此数据。
%entc
报告消耗的授权容量的百分比。 仅当在共享处理器的情况下运行分区,才会作此报告。 因为计算该数据所依赖的时基可以变化,所以授权容量百分比可能有时会超过 100%。 这种超过只在采样时间间隔很小时才会比较明显。
%resc
报告已消耗的处理器资源百分比。 此度量仅适用于 WPAR 环境。 仅当 WPAR 强制实施处理器资源限制时,才会报告此消息。
提示:
  • 如果没有请求其他特定内容选项,那么 sar 命令将报告系统部件的活动情况。 如果使用了 -P 标志,并且分区正在使用共享处理器运行,并且分区容量使用情况是分配的,那么将报告带有 cpuid U 的处理器行以显示系统范围内未使用的容量。 如果分区在共享处理器的情况下以未限制方式运行,那么 %entc 将报告就每个处理器行所授予的授权容量的百分比,以及在系统范围的处理器行中分配的授权容量的百分比。 将根据实际物理消耗量(physc)计算每个处理器的利用统计信息。 将根据授权及非物理消耗计算系统的全部统计信息。 但是,在未限制分区中,系统全部统计信息将仍按物理消耗计算。
  • 因为时间库超过了数据计算变化的范围,所有的 %utilization 字段(%user%sys%idle%wait)之和可超过 100%。
-v 报告进程、内核线程、索引节点和文件表的状态。 将显示以下数值:
file-sz , inod-sz proc-sz 和 thrd-sz
报告每个表中正在使用的条目数。
-w 报告系统切换的活动。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
pswch/s
报告每秒上下文转接数。
-y 报告每秒 tty 设备的活动。
坎奇/秒
报告 tty 规范输入队列字符。 此字段始终为 0(零)。
每分钟英尺/秒
报告 tty 调制解调器中断。
输出/秒
报告 tty 输出队列字符。
rawch/s
报告 tty 输入队列字符。
revin/s
报告 tty 接收中断。
xmtin/s
报告 tty 发送中断。
限制: -y 标志在 工作负载分区中受限制。
-x 显示每个条目的日期和时间。 每当用户为 -s 标志或 -e 标志指定采用 YYYYMMDD 格式的数据时,就会隐式启用 -x 标志。
-O选项 允许用户指定命令选项。

-O options=value ...

以下是受支持的选项:

  • sortcolumn = sar 命令输出中的度量值名称
  • sortorder = [升序|降序]
  • topcount = 要显示在 sar 命令排序的输出中的 CPU 数
-X 生成 XML 输出。 除非用户使用 -o 选项指定其他文件名,否则缺省文件名为 sar_DDMMYYHHMM.xml
-O 为 XML 输出指定文件名。

安全性

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

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要报告系统部件活动,请输入以下命令:
    sar
  2. 要在随后的 40 秒内每隔 2 秒报告当前的 tty 活动,请输入以下命令:
    sar  -y  -r 2 20
  3. 要观察系统部件 10 分钟,并对数据进行排序,请输入以下命令:
    sar  -o temp 60 10
  4. 要报告前两个处理器的处理器活动,请输入以下命令:
    sar  -u  -P 0,1
    这将产生与以下类似的输出:
    cpu  %usr  %sys  %wio  %idle
    0      45    45     5      5
    1      27    65     3      5
  5. 要报告所有处理器和系统范围内的消息、信号量及处理器活动,请输入以下命令:
    sar  -mu  -P ALL
    而在一个有四个处理器的系统上,将产生与以下类似的输出(最后一行表示对所有处理器的系统范围内的统计):
    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. 要查看系统范围内所有处理器使用的物理处理器和使用的权利,请在共享处理器逻辑分区机器中运行 sar 命令,如下所示:
    sar -P ALL
    在双逻辑处理器系统上,它会产生类似以下的输出(最后一行表明所有处理器的系统范围的统计信息,带有 cpuid U 的行表明系统范围未使用的容量):
    cpu    %usr    %sys    %wio   %idle   physc   %entc
     0        0       0       0     100    0.02     3.1
     1        0       0       0     100    0.00     1.0
     U        -       -       0      96    0.48    96.0
     -        0       0       0     100    0.02     4.0
  7. 要在随后的 40 秒内每隔 2 秒以单独的标题报告每次迭代的 3 行数据中各行数据的系统调用、内核进程和页面调度活动,请输入以下命令:
    sar -Mckr 2 20
  8. 要在随后的 40 秒内每隔 2 秒以多组标题报告所有活动,请输入以下命令:
    sar -MA 2 20
  9. 要从全局环境报告 WPAR 中的处理器使用情况统计信息,请输入以下命令:
    sar -@ wparname
  10. 要从 WPAR内部报告与 WPAR 相关联的 rset 注册表中存在的所有处理器的处理器活动,请输入以下命令:
    sar -P RST 1 1
    在与两个逻辑处理器的 RSET 相关联的 WPAR 中,先前的命令生成类似于以下内容的报告:
    19:34:39 cpu    %usr    %sys    %wio   %idle   physc
    19:34:40  0        0       2       0      98    0.54
              1        0       0       0     100    0.46
              R        0       1       0      99    1.00
  11. 要从 WPAR内部报告所有处理器活动,请输入以下命令:
    sar -P ALL 1 1
    在与两个逻辑处理器的 RSET 相关联的 WPAR 中,先前的命令生成类似于以下内容的报告:
    19:34:39 cpu    %usr    %sys    %wio   %idle   physc
    19:34:40 *0        0       2       0      98    0.54
             *1        0       0       0     100    0.46
              R        0       1       0      99    1.00
              -        0       1       0      99    1.00
  12. 要使用 -w 标志显示列 cswch/s 的排序输出,请输入以下命令:
    sar -w -P ALL  -O sortcolumn=cswch/s 1 1 
  13. 要列示前十个 CPU(在 scall/s 列上排序),请输入以下命令:
    sar -c -O sortcolumn=scall/s,sortorder=desc,topcount=10 -P ALL 1

文件数

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