在说命令之前先查看liunx环境有没有安装,查看命令 rpm -qa |grep sysstat
显示 sysstat-9.0.4-27.el6.x86_64 说明已经安装,如果没有安装用yum工具安装一下,命令:如果是 CentOS,那么用 yum install -y sysstat 安装。
sysstat是一个工具包,包含有几个很有用的系统检测程序,iostat,mpstat和sar.
Turbolinux的各个版本上,都包含这个工具包.
iostat用于输出CPU,I/O系统和磁盘分区的统计信息.可以用来分析磁盘I/O,带宽等信息.
mpstat用于输出CPU的各种统计信息. 可以用来分析程序运行时在内核态和用户态的工作情况.
sar用于定时搜集系统的各种状态信息.然后可以对系统各个时间点的状态进行监控.
sar工具的使用方式为”sar [选项] intervar [count]”,其中interval为统计信息采样时间,count为采样次数。
下文将说明如何使用sar获取以下性能分析数据:
整体CPU使用统计
各个CPU使用统计
内存使用情况统计
整体I/O情况
各个I/O设备情况
网络统计
整体CPU使用统计(-u)
使用-u选项,sar输出整体CPU的使用情况,不加选项时,默认使用的就是-u选项。以下命令显示采样时间为1s,采样次数为2次,整体CPU的使用情况:
[root@vm-156-223-dev03-hp ~]# sar -u 1 2
Linux 2.6.32-925.431.29.2.letv.el6.x86_64 (vm-156-223-dev03-hp.bj-cn.vpc.letv.cn) 07/23/2015 _x86_64_ (2 CPU)
11:52:26 AM CPU %user %nice %system %iowait %steal %idle
11:52:27 AM all 0.00 0.00 0.00 0.00 0.00 100.00
11:52:28 AM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 0.00 100.00
以上主要的统计项的解析如下:
%user: 用户态下CPU使用时间比率
%system: 内核态下CPU使用时间比率
%iowait: CPU等待I/O占用时间比率
%idle: CPU空闲时间比率
各个CPU使用统计(-P)
“-P ALL”选项指示对每个内核输出统计信息:
[root@vm-156-223-dev03-hp ~]# sar -P ALL 1 1
Linux 2.6.32-925.431.29.2.letv.el6.x86_64 (vm-156-223-dev03-hp.bj-cn.vpc.letv.cn) 07/23/2015 _x86_64_ (2 CPU)
11:54:17 AM CPU %user %nice %system %iowait %steal %idle
11:54:18 AM all 0.00 0.00 0.00 0.00 0.50 99.50
11:54:18 AM 0 0.99 0.00 0.99 0.00 0.00 98.02
11:54:18 AM 1 0.00 0.00 0.00 0.00 0.00 100.00
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 0.00 0.00 0.00 0.00 0.50 99.50
Average: 0 0.99 0.00 0.99 0.00 0.00 98.02
Average: 1 0.00 0.00 0.00 0.00 0.00 100.00
其中”CPU”列输出0,1,2,3指示对应的cpu核。也可针对单独一个内核显示,“-P 1”指示显示第二个内核的统计信息。
内存使用情况统计(-r)
使用-r选项可显示内存统计信息,以下命令显示以1秒为采样时间,显示2次内存信息:
[root@vm-156-223-dev03-hp ~]# sar -r 1 2
Linux 2.6.32-925.431.29.2.letv.el6.x86_64 (vm-156-223-dev03-hp.bj-cn.vpc.letv.cn) 07/23/2015 _x86_64_ (2 CPU)
11:55:11 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
11:55:12 AM 646036 1276312 66.39 314620 703632 189432 4.71
11:55:13 AM 646036 1276312 66.39 314620 703632 189432 4.71
Average: 646036 1276312 66.39 314620 703632 189432 4.71
上面输出的内存单位为”kb”,各项的名称可自解析其含义。
整体I/O情况(-b)
使用-b选项,可以显示磁盘I/O的使用情况:
[root@vm-156-223-dev03-hp ~]# sar -b 1 2
Linux 2.6.32-925.431.29.2.letv.el6.x86_64 (vm-156-223-dev03-hp.bj-cn.vpc.letv.cn) 07/23/2015 _x86_64_ (2 CPU)
11:56:05 AM tps rtps wtps bread/s bwrtn/s
11:56:06 AM 0.00 0.00 0.00 0.00 0.00
11:56:07 AM 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00
以上各列的含义为:
tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。
rtps: 每秒向磁盘设备的读请求次数
wtps: 每秒向磁盘设备的写请求次数
bread: 每秒从磁盘读的bytes数量
bwrtn: 每秒向磁盘写的bytes数量
各个I/O设备情况(-d)
使用-d选项可以显示各个磁盘的统计信息,再增加-p选项可以以sdX的形式显示设备名称:
[root@vm-156-223-dev03-hp ~]# sar -d -p 1 1
Linux 2.6.32-925.431.29.2.letv.el6.x86_64 (vm-156-223-dev03-hp.bj-cn.vpc.letv.cn) 07/23/2015 _x86_64_ (2 CPU)
11:57:12 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:57:13 AM vda 1.02 0.00 8.16 8.00 0.00 3.00 3.00 0.31
11:57:13 AM vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:57:13 AM VGSYS-lv_var 1.02 0.00 8.16 8.00 0.00 3.00 3.00 0.31
11:57:13 AM VGSYS-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:57:13 AM VGSYS-lv_letv 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: vda 1.02 0.00 8.16 8.00 0.00 3.00 3.00 0.31
Average: vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: VGSYS-lv_var 1.02 0.00 8.16 8.00 0.00 3.00 3.00 0.31
Average: VGSYS-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: VGSYS-lv_letv 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
以上输出中DEV列以sdX的方式显示了设备名称。
网络统计(-n)
使用-n选项可以对网络使用情况进行显示,-n后接关键词”DEV”可显示eth0、eth1等网卡的信息:
[root@vm-156-223-dev03-hp ~]# sar -n DEV 1 1
Linux 2.6.32-925.431.29.2.letv.el6.x86_64 (vm-156-223-dev03-hp.bj-cn.vpc.letv.cn) 07/23/2015 _x86_64_ (2 CPU)
11:58:04 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11:58:05 AM lo 6.00 6.00 0.31 0.31 0.00 0.00 0.00
11:58:05 AM eth0 49.00 6.00 4.77 0.62 0.00 0.00 0.00
11:58:05 AM eth1 8.00 0.00 0.45 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 6.00 6.00 0.31 0.31 0.00 0.00 0.00
Average: eth0 49.00 6.00 4.77 0.62 0.00 0.00 0.00
Average: eth1 8.00 0.00 0.45 0.00 0.00 0.00 0.00
以上主要输出含义如下:
IFACE: 网络接口名称
rxpck/s: 每秒收包的数量
txpck/s: 每秒发包的数量
rxkB/s: 每秒收的数据量(kB为单位)
txkB/s: 每秒发的数据量(kB为单位)
sar日志保存(-o)
最后讲一下如何保存sar日志,使用-o选项,我们可以把sar统计信息保存到一个指定的文件,对于保存的日志,我们可以使用-f选项读取:
[root@vm-156-223-dev03-hp ~]# sar -n DEV 1 10 -o sar.out
[root@vm-156-223-dev03-hp ~]# sar -d 1 10 -f sar.out
相比将结果重定向到一个文件,使用-o选项,可以保存更多的系统资源信息。
----------------------------------------------------------------------------------------------------------------------------------------------
sar 既能报告当前数据,也能报告历史数据
不带选项执行会以10分钟为间隔报告自午夜起当天的CPU利用率。
脚本sal收集了这些历史数据,它是sar软件包的一部分,必须设置为定期从cron里运行
sar把自已收集的数据以二进制格式保存在/var/log/sa里
使用 sar -d 可以得到当天磁盘活动的情况汇总
sar -n DEV 则能给出网络接口的统计信息
sar -A 可以报告所有的信息
sar 适用于快速粗略了解历史信息。
sar 命令行的常用格式: sar [options] [-o file] t [n]
options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
-A:所有报告的总和。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
sar 1 10 > data.txt
//每隔1秒,写入10次,把CPU使用数据保存到data.txt文件中。
sar 1 0 -e 15:00:00 > data.txt
//每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为hh:mm:ss格式)
sar 1 0 -r -e 15:00:00 > data.txt
//每隔1秒记录内存使用情况,直到15点,数据将保存到data.txt文件中。
sar 1 0 -n DEV -e 15:00:00 > data.txt
//每隔1秒记录网络使用情况,直到15点,数据将保存到data.txt文件中。