sar 命令详解

sar
通过前面的讨论,我们发现:获取实时指标并不是唯一重要的事情;历史趋势也同等重要。

此外,考虑这样一种情况:有人多次报告某个性能问题,但当您进行调查时发现一切都回归正常。
如果没有当时的任何具体数据,则很难诊断过去出现的性能问题。最后,您将希望检查过去几天的性能数据,
以决定某些设置或进行调整。

sar 实用程序实现了这个目标。sar 代表 System Activity Recorder,
它在一个特殊的位置(/var/log/sa 目录)记录 Linux 系统的主要组件(CPU、内存、磁盘、网络等)的指标。
每天的数据记录在一个名为 sa<nn> 的文件中,其中 <nn> 是每月中的第 nn 天(两位数字)。
例如,文件 sa27 包含该月第 27 日的数据。可以通过 sar 命令查询该数据。

使用 sar 的最简单方法是不带任何参数或选项。示例如下:

# sar
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
12:00:01 AM       CPU     %user     %nice   %system   %iowait     %idle
12:10:01 AM       all     14.99      0.00      1.27      2.85     80.89
12:20:01 AM       all     14.97      0.00      1.20      2.70     81.13
12:30:01 AM       all     15.80      0.00      1.39      3.00     79.81
12:40:01 AM       all     10.26      0.00      1.25      3.55     84.93
... and so on ...

输出显示在 10 分钟的间隔内收集的与 CPU 有关的指标。这些列的含义如下:

CPU      CPU 标识符;“all”表示所有 CPU

%user    用户进程使用的 CPU 百分比。Oracle 进程属于这一类。

%nice    在 nice 优先级下执行的 CPU 利用率百分比

%system  执行系统进程的 CPU 百分比

%iowait  等待进行 I/O 操作的 CPU 百分比

%idle    等待工作的 CPU 空闲百分比

从以上输出,您可能以为系统已经得到了很好的平衡;但实际上是严重利用不足(从较高的空闲百分比可以看出)。进一步查看输出,我们看到以下内容:

... continued from above ...
03:00:01 AM       CPU     %user     %nice   %system   %iowait     %idle
03:10:01 AM       all     44.99      0.00      1.27      2.85     40.89
03:20:01 AM       all     44.97      0.00      1.20      2.70     41.13
03:30:01 AM       all     45.80      0.00      1.39      3.00     39.81
03:40:01 AM       all     40.26      0.00      1.25      3.55     44.93
... and so on ...
这告诉我们另外一回事:在 3:00 和 3:40 之间某些用户进程加载了该系统。可能是在执行开销比较大的查询,
也可能是正在运行某个 RMAN 作业,从而消耗了这么多 CPU。这就是 sar 命令非常有用之处,该命令重放记录的数据,
显示从某个特定时间起而不是现在的数据。这样您就完全实现了在该部分开头所述的三个目标:获取历史数据、查找使用模式以及了解趋势。

如果您想查看特定日期的 sar 数据,只需使用下面所示的 -f 选项打开具有该文件名的 sar(打开第 26 日的数据)

# sar -f /var/log/sa/sa26
与 vmstat 或 mpstat 一样,该命令还可以显示实时数据。要每隔 5 秒获取一次数据,共 10 次,请使用:

# sar 5 10
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
01:39:16 PM       CPU     %user     %nice   %system   %iowait     %idle
01:39:21 PM       all     20.32      0.00      0.18      1.00     78.50
01:39:26 PM       all     23.28      0.00      0.20      0.45     76.08
01:39:31 PM       all     29.45      0.00      0.27      1.45     68.83
01:39:36 PM       all     16.32      0.00      0.20      1.55     81.93
… and so on 10 times …
您注意到 CPU 下的“all”值了吗?它意味着是所有 CPU 的总计统计信息。这比较适合单处理器系统,
但在多处理器系统中,您可能希望获取各个 CPU 的统计信息以及总计统计信息。-P ALL 选项可以实现该目标。

#sar -P ALL 2 2
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
01:45:12 PM       CPU     %user     %nice   %system   %iowait     %idle
01:45:14 PM       all     22.31      0.00     10.19      0.69     66.81
01:45:14 PM         0      8.00      0.00     24.00      0.00     68.00
01:45:14 PM         1     99.00      0.00      1.00      0.00      0.00
01:45:14 PM         2      6.03      0.00     18.59      0.50     74.87
01:45:14 PM         3      3.50      0.00      8.50      0.00     88.00
01:45:14 PM         4      4.50      0.00     14.00      0.00     81.50
01:45:14 PM         5     54.50      0.00      6.00      0.00     39.50
01:45:14 PM         6      2.96      0.00      7.39      2.96     86.70
01:45:14 PM         7      0.50      0.00      2.00      2.00     95.50
 
01:45:14 PM       CPU     %user     %nice   %system   %iowait     %idle
01:45:16 PM       all     18.98      0.00      7.05      0.19     73.78
01:45:16 PM         0      1.00      0.00     31.00      0.00     68.00
01:45:16 PM         1     37.00      0.00      5.50      0.00     57.50
01:45:16 PM         2     13.50      0.00     19.00      0.00     67.50
01:45:16 PM         3      0.00      0.00      0.00      0.00    100.00
01:45:16 PM         4      0.00      0.00      0.50      0.00     99.50
01:45:16 PM         5     99.00      0.00      1.00      0.00      0.00
01:45:16 PM         6      0.50      0.00      0.00      0.00     99.50
01:45:16 PM         7      0.00      0.00      0.00      1.49     98.51
 
Average:          CPU     %user     %nice   %system   %iowait     %idle
Average:          all     20.64      0.00      8.62      0.44     70.30
Average:            0      4.50      0.00     27.50      0.00     68.00
Average:            1     68.00      0.00      3.25      0.00     28.75
Average:            2      9.77      0.00     18.80      0.25     71.18
Average:            3      1.75      0.00      4.25      0.00     94.00
Average:            4      2.25      0.00      7.25      0.00     90.50
Average:            5     76.81      0.00      3.49      0.00     19.70
Average:            6      1.74      0.00      3.73      1.49     93.03
Average:            7      0.25      0.00      1.00      1.75     97.01
这表示 CPU 标识符(以 0 开头)以及每个 CPU 的统计信息。在输出的结尾处,您将看到每个 CPU 的平均运行情况。

命令 sar 不仅用于获取与 CPU 有关的统计信息。对于获取与内存有关的统计信息也非常有用。-r 选项显示大量利用内存的情况。

# sar -r
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
12:10:01 AM    712264  32178920     97.83   2923884  25430452  16681300     95908      0.57       380
12:20:01 AM    659088  32232096     98.00   2923884  25430968  16681300     95908      0.57       380
12:30:01 AM    651416  32239768     98.02   2923920  25431448  16681300     95908      0.57       380
12:40:01 AM    651840  32239344     98.02   2923920  25430416  16681300     95908      0.57       380
12:50:01 AM    700696  32190488     97.87   2923920  25430416  16681300     95908      0.57       380

让我们看一看每个列的含义:

kbmemfree    此时可用内存的数量,以 KB 为单位

kbmemused    此时已使用的内存数量,以 KB 为单位

%memused     已使用内存的百分比

kbbuffers    用作缓冲区的内存百分比

kbcached     用作缓存的内存百分比

kbswpfree    此时可用交换区空间的大小,以 KB 为单位

kbswpused    此时已使用的交换空间大小,以 KB 为单位

%swpused     此时已使用交换区的百分比

kbswpcad     此时缓存的交换区大小,以 KB 为单位

在输出的结尾处,您将看到该时间段内的平均数字。

还可以获取与特定内存有关的统计信息。-B 选项显示与分页有关的活动。

# sar -B
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
12:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s
12:10:01 AM    134.43    256.63   8716.33      0.00
12:20:01 AM    122.05    181.48   8652.17      0.00
12:30:01 AM    129.05    253.53   8347.93      0.00

该列显示当时 而不是现在的指标。

pgpgin/s    每秒从磁盘分到内存中的页面数

pgpgout/s   每秒从内存分到磁盘的页面数

fault/s     每秒的页面故障数

majflt/s    每秒的主要页面故障数

要获得与交换有关活动的类似输出,可以使用 -W 选项。

# sar -W
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
12:00:01 AM  pswpin/s pswpout/s
12:10:01 AM      0.00      0.00
12:20:01 AM      0.00      0.00
12:30:01 AM      0.00      0.00
12:40:01 AM      0.00      0.00
... and so on ...
尽管这些列可能无需加以说明,下面还是提供了每列的说明:

pswpin/s    每秒从磁盘交换回内存的内存页数

pswpout/s   每秒从内存交换到磁盘的内存页数


如果您看到交换很多,则表示可能有内存不足问题。这不是定论,而是出现问题的可能性比较大。

要获得磁盘设备的统计,请使用 -d 选项:

# sar -d
Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008
 
12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s
12:10:01 AM    dev1-0      0.00      0.00      0.00
12:10:01 AM    dev1-1      5.12      0.00    219.61
12:10:01 AM    dev1-2      3.04     42.47     22.20
12:10:01 AM    dev1-3      0.18      1.68      1.41
12:10:01 AM    dev1-4      1.67     18.94     15.19
... and so on ...
Average:      dev8-48      4.48    100.64     22.15
Average:      dev8-64      0.00      0.00      0.00
Average:      dev8-80      2.00     47.82      5.37
Average:      dev8-96      0.00      0.00      0.00
Average:     dev8-112      2.22     49.22     12.08
下面是对各列的说明。同样,它们也表示当时的指标。

tps

每秒进行的传输数。传输数就是 I/O 操作数。注:这只是操作数量,每个操作可能很大,也可能很小。
因此,单独这个并不能说明全部问题。

rd_sec/s   每秒从磁盘读取的扇区数

wr_sec/s   每秒写入磁盘的扇区数

要获得历史网络统计信息,使用 -n 选项:

# sar -n DEV | more
Linux 2.6.9-42.0.3.ELlargesmp (prolin3)     12/27/2008
 
12:00:01 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM        lo      4.54      4.54    782.08    782.08      0.00      0.00      0.00
12:10:01 AM      eth0      2.70      0.00    243.24      0.00      0.00      0.00      0.99
12:10:01 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      eth4    143.79    141.14  73032.72  38273.59      0.00      0.00      0.99
12:10:01 AM      eth5      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      eth6      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      eth7      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM     bond0    146.49    141.14  73275.96  38273.59      0.00      0.00      1.98
… and so on …
Average:        bond0    128.73    121.81  85529.98  27838.44      0.00      0.00      1.98
Average:         eth8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth9      3.52      6.74    251.63  10179.83      0.00      0.00      0.00
Average:         sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

总而言之,使用 sar 命令的这些选项可以获得组件的指标:

使用该选项 …

… 获得有关以下组件的统计信息:

-P   特定 CPU

-d   磁盘

-r   内存
 
-B   分页

-W   交换

-n   网络


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值