Linux sysstat工具的用法(附带实例)
sysstat 工具包含检测系统性能及效率的一组工具,例如 CPU 的使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于判断系统是否正常运行。
下面开始安装 sysstat 工具包,如下所示:
直接运行 iostat 命令,结果如下所示:
结果中关于磁盘 I/O 性能参数的含义如下:
使用 -x 参数可以获得更多的统计信息,如下所示(请读者执行命令对照结果):
此外可以通过如下命令查询 CPU 的部分信息,如下所示:
也可以通过以下命令查询某个具体的设备块的信息,如下所示:
下面通过示例来理解一下该命令的具体用法。
1) 显示所有 CPU 的信息,每秒钟执行一次:
2) 显示 ID 为 0 的 CPU 的信息,每秒钟执行一次:
sar 的语法格式如下:
options 为命令行选项,选项的含义如下:
下面通过一个示例来理解 sar 工具的使用方法,如下所示:
提示,如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈;如果 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。
Sysstat 软件包集成如下工具:如果是通过源码包安装,请到官方下载源码包,地址为 http://perso.wanadoo.fr/sebastien.godard。
- iostat 工具:提供 CPU 使用率及硬盘吞吐效率的数据。
- mpstat 工具:提供单个处理器或多个处理器相关数据。
- sar 工具:负责收集、报告并存储系统活跃的信息。
- sa1 工具:负责收集并存储每天系统动态信息到一个二进制的文件中。
- sa2 工具:负责把每天的系统活跃信息写入总结性的报告中。
- sadc 工具:系统动态数据收集工具,收集的数据被写一个二进制的文件中。
- sadf 工具:显示被 sar 工具通过多种格式收集的数据。
下面开始安装 sysstat 工具包,如下所示:
[root@localhost ~]# tar zxvf sysstat-10.0.0.tar.gz [root@localhost sysstat-10.0.0]# ./configure [root@localhost sysstat-10.0.0]# make [root@localhost sysstat-10.0.0]# make install
Sysstat iostat工具
iostat 工具用于输出 CPU 和磁盘 I/O 相关的统计信息,具体语法格式如下:iostat [-c|-d] [-k] [-t] [-V] [-x] [-p device|ALL] [间隔描述] [检测次数]上述参数的含义如下:
- -c:表示仅显示 CPU 的状态。
- -d:仅显示存储设备的状态,不允许和 -c 一起使用。
- -k:默认显示读入读出的块信息。
- -t:显示搜集数据的时间。
- -V:显示版本号和帮助信息。
- -x:显示扩展信息。
- -p device|ALL:device 为某个设备或者某个分区,如果使用 ALL,就表示要显示所有分区和设备的信息。
直接运行 iostat 命令,结果如下所示:
[root@localhost ~]# iostat Linux 2.6.25-14.fc9.i686 (localhost.localdomain) 11/23/2012 _i686_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 3.60 0.04 1.53 0.49 0.00 94.34 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.66 2.47 32.28 800397 10474295 dm-0 8.34 2.46 32.28 797729 10473872 dm-1 0.00 0.00 0.00 592 404 sdb 0.00 0.01 0.00 4433 1结果中关于 CPU 性能参数的含义如下:
- %user:在用户级别运行所使用的 CPU 百分比;
- %nice:nice 操作所使用的 CPU 百分比;
- %system:在系统级别(kernel)运行所使用的 CPU 百分比;
- %iowait:CPU 等待硬件 I/O 时,所占用的 CPU 百分比;
- %idle:表示 CPU 空闲时间所占比例。
结果中关于磁盘 I/O 性能参数的含义如下:
- Device:表示设备块的名字;
- tps:表示每秒钟发送到的 I/O 请求数;
- kB_read/s:表示从该设备每秒读取的数据块数量;
- kB_wrtn/s:表示从该设备每秒写入的数据块数量;
- kB_read:表示从该设备读取的数据块总数;
- kB_wrtn:表示从该设备写入的数据块总数。
使用 -x 参数可以获得更多的统计信息,如下所示(请读者执行命令对照结果):
[root@localhost init.d]# iostat -d -x -k 1 10 Linux 2.6.25-14.fc9.i686 (localhost.localdomain) 11/23/2012 _i686_ (1 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.03 6.65 0.25 1.42 2.47 32.28 41.81 0.16 98.24 28.60 110.40 6.41 1.07 dm-0 0.00 0.00 0.27 8.07 2.46 32.28 8.33 1.35 161.51 34.13 165.77 1.28 1.06 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 53.71 52.81 55.04 7.02 0.00 sdb 0.02 0.00 0.00 0.00 0.01 0.00 37.26 0.00 16.76 15.00 225.50 9.53 0.00结果中各个的参数的含义如下:
- rrqm/s:表示每秒这个设备相关的读取请求有多少被合并。
- wrqm/s:表示每秒这个设备相关的写入请求有多少被合并。
- r/s:表示每秒请求读该设备的数量。
- w/s:表示每秒请求写该设备的数量。
- await:表示每一个 IO 请求的处理的平均时间。
- %util:表示在统计时间内所有处理 I/O 时间,除以总共统计时间。
此外可以通过如下命令查询 CPU 的部分信息,如下所示:
[root@localhost ~]# iostat -c 1 10 avg-cpu: %user %nice %sys %iowait %idle 1.98 0.00 0.35 11.45 86.22 avg-cpu: %user %nice %sys %iowait %idle 1.62 0.00 0.25 34.46 63.67
也可以通过以下命令查询某个具体的设备块的信息,如下所示:
[root@localhost ~]# iostat -d -k 1 |grep sda10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda10 60.72 18.95 71.53 395637647 1493241908 sda10 299.02 4266.67 129.41 4352 132 sda10 483.84 4589.90 4117.17 4544 4076 sda10 218.00 3360.00 100.00 3360 100 sda10 546.00 8784.00 124.00 8784 124 sda10 827.00 13232.00 136.00 13232 136
Sysstat mpstat工具
mpstat 是系统实时监控工具,主要报告 CPU 的一些信息,该命令的语法如下:mpstat [-P {|ALL}] [internal [count]]下面分析一下具体参数的含义:
- -P {|ALL}:表示需要监控哪个 CPU;
- internal:表示相邻的两次采样的时间间隔;
- count:表示采样的次数。
下面通过示例来理解一下该命令的具体用法。
1) 显示所有 CPU 的信息,每秒钟执行一次:
[root@localhost ~]# mpstat -P ALL 1 Linux 2.6.25-14.fc9.i686 (localhost.localdomain) 11/23/2012 _i686_ (1 CPU) 07:49:21 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 07:49:22 AM all 0.99 0.00 0.99 0.00 0.00 0.00 0.00 0.00 98.02 07:49:22 AM 0 0.99 0.00 0.99 0.00 0.00 0.00 0.00 0.00 98.02 07:49:22 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 07:49:23 AM all 3.03 0.00 3.03 0.00 0.00 1.01 0.00 0.00 92.93 07:49:23 AM 0 3.03 0.00 3.03 0.00 0.00 1.01 0.00 0.00 92.93
2) 显示 ID 为 0 的 CPU 的信息,每秒钟执行一次:
[root@localhost ~]# mpstat -P 0 1 Linux 2.6.25-14.fc9.i686 (localhost.localdomain) 11/23/2012 _i686_ (1 CPU) 10:42:38 PM CPU %user %nice %system %iowait %irq %soft %idle intr/s 10:42:43 PM all 6.89 0.00 44.76 0.10 0.10 0.10 48.05 1121.60 10:42:43 PM 0 9.20 0.00 49.00 0.00 0.00 0.20 41.60 413.00 10:42:43 PM 1 4.60 0.00 40.60 0.00 0.20 0.20 54.60 708.40 10:42:43 PM CPU %user %nice %system %iowait %irq %soft %idle intr/s 10:42:48 PM all 7.60 0.00 45.30 0.30 0.00 0.10 46.70 1195.01 10:42:48 PM 0 4.19 0.00 2.20 0.40 0.00 0.00 93.21 1034.53 10:42:48 PM 1 10.78 0.00 88.22 0.40 0.00 0.00 0.20 160.48 Average: CPU %user %nice %system %iowait %irq %soft %idle intr/s Average: all 7.25 0.00 45.03 0.20 0.05 0.10 47.38 1158.34 Average: 0 6.69 0.00 25.57 0.20 0.00 0.10 67.43 724.08 Average: 1 7.69 0.00 64.44 0.20 0.10 0.10 27.37 434.17该结果的具体参数项的含义如下所示:
- %user:表示处理用户进程所使用 CPU 的百分比;
- %nice:表示使用 nice 命令对进程进行降级时 CPU 的百分比;
- %sys:表示内核进程使用 CPU 的百分比;
- %iowait:表示表示等待进行 I/O 所使用的 CPU 百分比;
- %irq:表示用于处理系统中断的 CPU 百分比;
- %soft:表示用于软件中断的 CPU 百分比;
- %idle:显示 CPU 的空闲时间;
- %intr/s:显示每秒 CPU 接收的中断总数。
Sysstat sar工具
sar 是目前 Linux 最为全面的系统性能分析工具之一,它可以从多方面对系统的活动进行报告,提供文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等信息。sar 的语法格式如下:
sar [options] [-A] [-o file] t [n]其中,t 为采样间隔,n 为采样次数,默认值是 1;-o file 表示将命令结果以二进制格式存放在文件中,file 是文件名。
options 为命令行选项,选项的含义如下:
- -A:所有报告的总和;
- -u:输出 CPU 使用情况的统计信息;
- -v:输出 inode、文件和其他内核表的统计信息;
- -d:输出每一个块设备的活动信息;
- -r:输出内存和交换空间的统计信息;
- -b:显示 I/O 和传送速率的统计信息;
- -a:文件读写情况;
- -c:输出进程统计信息,每秒创建的进程数;
- -R:输出内存页面的统计信息;
- -y:终端设备活动情况;
- -w:输出系统交换活动信息。
下面通过一个示例来理解 sar 工具的使用方法,如下所示:
[root@localhost ~]# sar -u 1 5 Linux 2.6.25-14.fc9.i686 (localhost.localdomain) 11/24/2012 _i686_ (1 CPU) 02:33:56 AM CPU %user %nice %system %iowait %steal %idle 02:33:57 AM all 2.06 0.00 5.15 0.00 0.00 92.78 02:33:58 AM all 3.00 0.00 6.00 0.00 0.00 91.00 02:33:59 AM all 41.41 0.00 9.09 0.00 0.00 49.49 02:34:00 AM all 96.77 0.00 3.23 0.00 0.00 0.00结果中具体参数的含义如下所示:
- CPU:all 表示统计信息为所有 CPU 的平均值。
- %user:显示在用户级别(Application)运行使用 CPU 总时间的百分比;
- %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比;
- %system:在核心级别(Kernel)运行所使用 CPU 总时间的百分比;
- %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比;
- %steal:管理程序(Hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比;
- %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
提示,如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈;如果 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。