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 命令将操作系统中选定的累计活动计数器的内容写到标准输出。 基于 number 和 interval 参数的值,记帐系统按指定次数,以指定的时间间隔(以秒为单位)写入信息。 number 参数的缺省采样时间间隔为 1 秒。 收集的数据也可以保存在由 -o file 标志指定的文件中。
当指定了 -X 选项时, sar 命令将生成 XML 文件。
sar 命令抽取并写入以前保存在文件里的标准输出记录。 此文件既可以是由 -f 标志指定的文件,或者也可以是缺省情况下标准系统活动每日数据文件,即 /var/adm/sa/sadd 文件,其中 dd 参数表示当前日期。
没有 -P 标志的 sar 命令报告系统范围(所有处理器)的统计信息,对于以百分比表示的数值计算其平均值,否则计算其总数。 如果给定 -P 标志,那么 sar 命令报告与指定的一个或多个处理器相关的活动。 如果给定 -P ALL 标志,那么 sar 命令依次报告每个处理器的统计信息和系统范围的统计信息。 如果在 工作负载分区 环境中使用 -P ALL ,并且 WPAR 与 rset 注册表相关联, 将显示资源集统计信息和系统范围统计信息; 属于该资源集的处理器以星号 (*) 作为前缀。
可以使用标志选择有关特定系统活动的信息。 如果未指定任何标志,那么仅选择系统 和 WPAR 单元活动。 指定 -A 标志,那么选择所有活动。 在开始打印统计信息之前, sar 命令将打印当前处于活动状态的处理器数和磁盘数。
sar 命令的缺省版本(处理器使用率报告)可能是用户开始系统活动调查首先要运行的工具之一,因为它监视主要的系统资源。 如果处理器使用率接近 100%(用户 + 系统),采样的工作负载为处理器受限。 如果在 I/O 等待中花费了相当大的时间百分比,这意味着处理器执行会阻塞等待磁盘 I/O。 I/O 可能是必需的文件访问,或者由于缺少足够的内存,它可能是与页面调度相关联的 I/O。
用于计算 CPU 磁盘 I/O 等待时间的方法
AIX® 操作系统包含对用于计算等待磁盘 I/O (wio 时间) 的处理器时间百分比的方法的增强功能。 wio 时间是由 sar(%wio)命令、vmstat(wa)命令和 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 。
也可以使用系统管理界面工具 (SMIT) smit sar 的快速路径来运行此命令。
标志
| 项 | 描述 |
|---|---|
| -@WparName | -@ 标志指定命令从全局环境报告 WPAR 中的处理器使用情况。 wparname 参数指定要报告哪些 WPAR 处理器统计信息。 注: 在 工作负载分区中执行时,不支持 -@ 标志。
注: 请勿将 -@ 标志与 -d, -r, -y配合使用。 -f或 -X 标志。
|
| -A | 未使用 -P 标志时,使用 -A 标志相当于指定 -abckmqruvwy。 当与 -P 标志一起使用时,-A 相当于指定 -acmuw。 如果没有 -M 标志,那么在第一个时间间隔的数据之前,只会在分组在一起的多行中打印一次标题。 当此标志与 -M 标志一起使用时,每个迭代中的每行数据前面都有相应的头。 |
| -a | 报告使用文件访问系统例程指定每秒调用各种系统文件访问例程的次数。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
|
| -b | 报告缓冲区活动中每秒用于传输、访问以及高速缓存(内核块高速缓存)的命中率。 访问第 3 版本中的大多数文件会忽略内核块缓冲,因此不生成这些统计信息。 然而,如果程序打开块设备或原始字符设备进行 I/O,那么使用传统的访问机制使生成的统计信息变得有意义。 将显示以下数值:
|
| -c | 报告系统调用。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
提示: sar 命令本身可以根据运行它的时间间隔生成大量的读和写。 在无工作负载的情况下运行 sar 统计,以了解 sar 命令在总统计信息中的份额。
|
| -d | 报告每个块设备(除磁带机外)的活动。 将报告以下数据:
限制: -d 标志在 工作负载分区中受限制。
|
| - e [YYYYMMDD] hh [ :mm [ :ss ]] | 设置报告的结束时间。 缺省结束时间是 18:00。
|
| -f 文件 | 从 file(由 -o file 标志创建)中抽取记录。 file 参数的缺省值为当前每日数据文件,即 /var/adm/sa/sadd 文件。 限制: 如果指定 [ interval [ number ]] 参数,那么将忽略 -f 标志。 -f 标志在 工作负载分区中受限制。
|
| -i 秒 | 以尽可能接近 Seconds 参数所指定的秒数选择数据记录。 否则,sar 命令将报告在该数据文件中找到的所有秒数。 |
| -k | 报告内核进程活动。 将显示以下数值:
|
| -M | 当与至少两个 [abckmqruvwy] 组合或与 -A 标志配合使用时,在输出中启用多个头。 在这种方式下,每个迭代的每行数据前都有相应的标题。 限制: 在不使用 [interval [number]] 时,将忽略此标志。
|
| -M | 报告每秒消息(发送和接收)以及信号量(创建、使用或破坏)活动。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
|
| -o 文件 | 将读取的内容以二进制格式保存在文件里。 每个读取为一条单独的记录,而且每个记录都含有一个标识该读取时间的标记。 |
| -P processoridentifier, ... | 所有 |RST | 报告指定的一个或多个处理器的每个处理器的统计信息。 指定 ALL 关键字报告每个处理器的统计信息以及所有处理器的全部统计信息。 指定 RST 选项将报告与 WPAR关联的 rset 注册表中存在的处理器的统计信息。 对于指定要报告的统计信息的标志,在全局环境中,仅 -a、-c、-m、-u 和 -w 标志对于 -P 标志有意义。 在 WPAR 环境中,请勿将任何标志与 -P 标志一起使用。 注: sar 命令针对 WPAR 报告的每个处理器的统计信息始终在系统范围内。
|
| -q | 报告队列统计信息。 将显示以下数值:
提示: 任何列中的空白值都指示关联的队列为空。
|
| -r | 报告页面调度统计信息。 将显示以下数值:
限制: -r 标志在 工作负载分区中受限制。
|
| - s [YYYYMMDD] hh [ :mm [ :ss ]]] | 设置数据开始时间,使 sar 命令以(遵循)指定时间抽取有时间标记的记录。 缺省开始时间是 08:00。
|
| -U | 报告每个处理器或整个系统的统计信息。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 因为 -u 标志信息以百分比表示,所以系统范围信息只是每个处理器统计信息的平均值。 并且,I/O 等待状态是以整个系统而不是每个处理器来定义的。 将显示以下数值:
提示:
|
| -v | 报告进程、内核线程、索引节点和文件表的状态。 将显示以下数值:
|
| -w | 报告系统切换的活动。 当与 -P 标志一起使用时,为每个指定的处理器提供此信息;否则,只在系统范围内提供此信息。 将显示以下数值:
|
| -y | 报告每秒 tty 设备的活动。
限制: -y 标志在 工作负载分区中受限制。
|
| -x | 显示每个条目的日期和时间。 每当用户为 -s 标志或 -e 标志指定采用 YYYYMMDD 格式的数据时,就会隐式启用 -x 标志。 |
| -O选项 | 允许用户指定命令选项。 -O options=value ... 以下是受支持的选项:
|
| -X | 生成 XML 输出。 除非用户使用 -o 选项指定其他文件名,否则缺省文件名为 sar_DDMMYYHHMM.xml 。 |
| -O | 为 XML 输出指定文件名。 |
安全性
访问控制:这些命令应该只将执行 (x) 访问权 授予 adm 组的成员。
示例
- 要报告系统部件活动,请输入以下命令:
sar - 要在随后的 40 秒内每隔 2 秒报告当前的 tty 活动,请输入以下命令:
- 要观察系统部件 10 分钟,并对数据进行排序,请输入以下命令:sar -o temp 60 10
- 要报告前两个处理器的处理器活动,请输入以下命令:这将产生与以下类似的输出:
cpu %usr %sys %wio %idle 0 45 45 5 5 1 27 65 3 5 - 要报告所有处理器和系统范围内的消息、信号量及处理器活动,请输入以下命令:而在一个有四个处理器的系统上,将产生与以下类似的输出(最后一行表示对所有处理器的系统范围内的统计):
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 - 要查看系统范围内所有处理器使用的物理处理器和使用的权利,请在共享处理器逻辑分区机器中运行 sar 命令,如下所示:
在双逻辑处理器系统上,它会产生类似以下的输出(最后一行表明所有处理器的系统范围的统计信息,带有sar -P ALLcpuid 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 - 要在随后的 40 秒内每隔 2 秒以单独的标题报告每次迭代的 3 行数据中各行数据的系统调用、内核进程和页面调度活动,请输入以下命令:
sar -Mckr 2 20 - 要在随后的 40 秒内每隔 2 秒以多组标题报告所有活动,请输入以下命令:
sar -MA 2 20 - 要从全局环境报告 WPAR 中的处理器使用情况统计信息,请输入以下命令:
sar -@ wparname - 要从 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 - 要从 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 - 要使用 -w 标志显示列 cswch/s 的排序输出,请输入以下命令:
sar -w -P ALL -O sortcolumn=cswch/s 1 1 - 要列示前十个 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 参数是表示该月的第几日的数字。 |