- 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 网络
Linux - sar 命令详解
最新推荐文章于 2024-07-09 10:52:45 发布