三 Vmstat
vmstat命令是显示Linux性能指标的方法,输出分为6个类别:进程、内存、交换区、I/O、系统和CPU
[root@hky-linux1 ~]# vmstat
进程 内存 交换分区 io 系统 cpu
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- -
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 190212 872 21760 0 0 42 14 1043 106 1 1 97 1 0
进程:
r列是可运行进程的数量,长期大于1,cpu不足,当业务繁忙时,不超过两倍的cpu数量,也算正常,r越大,系统越繁忙
b列是阻塞进程的数量:正常小为0
内存:Swpd:已用的交换空间数量
Free:尚未分配的内存
Buff:缓冲使用的内存,对块设备读写才需要缓冲
Cache:文件系统缓存使用的,
Swap:si和so为0是正常的
Si:从交换区到内存的数量
So:从内存到交换区的数量
I/O
Bi:从磁盘读去的块数,数量越大,表示读取的越频繁
Bo:每秒写入到磁盘的块数。数量越大,磁盘活动率越高
System
In:系统中断
Cs:进程上下文开关
Cpu
Us:用户进程消耗—值比较高,则用户进程消耗cpu时间太长,长期大于50%,考虑优化用户程序,持续大于50,业务高峰期算是正常
Sy:内核进程消耗—us+sy大于80%,则cpu不足
Wa:I/O进程消耗的cpu,超过30%,可能由磁盘大量随即访问造成
Id:空闲,持续小于50,服务高峰期可以接受
[root@hky-linux1 ~]# vmstat 2 5 //每两秒查看一次,查看五次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 127740 21412 54752 0 0 42 13 1041 105 0 1 97 1 0
0 0 0 127500 21412 54752 0 0 0 0 1015 105 1 3 96 0 0
0 0 0 127500 21412 54752 0 0 0 0 1015 93 0 0 100 0 0
0 0 0 127560 21420 54752 0 0 0 34 1015 94 0 1 99 0 0
0 0 0 127560 21420 54752 0 0 0 0 1014 93 0 1 99 0 0
现在测试一下查看5次,每次2秒用多少时间
[root@hky ~]# time vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 116 18784 32052 88552 0 0 49 20 710 119 2 4 91 3 0
0 0 116 18784 32052 88552 0 0 0 0 609 62 0 1 99 0 0
0 0 116 18784 32052 88552 0 0 0 44 627 71 0 0 100 0 0
0 0 116 18784 32068 88552 0 0 0 24 624 79 0 1 97 2 0
0 0 116 18784 32068 88552 0 0 0 0 614 71 0 0 100 0 0
real 0m8.016s
user 0m0.002s
sys 0m0.003s
用时8秒,因为第一次不要时间
这里有一个时间函数需要掌握
[root@hky ~]# ceshi=$(date +%s.%N);vmstat 2 3;hky=$(date +%s.%N); awk -v ceshi=${ceshi} -v hky=${hky} 'BEGIN {print hky-ceshi}'
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 116 14580 34872 89084 0 0 46 19 706 117 1 4 92 3 0
0 0 116 14580 34880 89076 0 0 0 18 596 76 0 1 99 0 0
0 0 116 14580 34880 89088 0 0 0 0 589 67 0 0 100 0 0
4.01254
大家自己理解
Vmstat-a 看出内存使用的和未使用的
[root@hky ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 116 14400 70408 143008 0 0 46 19 706 117 1 4 92 3 0
Vmstat –d : 硬盘读写情况
[root@hky ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
sda 90558 27351 1569858 606361 25774 55985 653314 776684 0 512
sdb 115 464 2272 229 30 20 100 299 0 0
hdc 701 10 2920 310 0 0 0 0 0 0
fd0 0 0 0 0 0 0 0 0 0 0
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
md0 0 0 0 0 0 0 0 0 0 0
loop0 0 0 0 0 0 0 0 0 0 0
loop1 0 0 0 0 0 0 0 0 0 0
loop2 0 0 0 0 0 0 0 0 0 0
loop3 0 0 0 0 0 0 0 0 0 0
loop4 0 0 0 0 0 0 0 0 0 0
loop5 0 0 0 0 0 0 0 0 0 0
loop6 0 0 0 0 0 0 0 0 0 0
loop7 0 0 0 0 0 0 0 0 0 0
Vmstat –p /dev/sdb2 1 某一块盘的读写情况
四 Sysstay工具
Iostat /sar /mpstat 三个工具都来自Sysstay包
安装sysstat很简单
[root@hky-linux1 sysstat]# rpm -ivh sysstat-9.0.6.1-3.i386.rpm-----安装
Sar收集器 /var/log/sa
修改配置文件
[root@hky-linux1 ~]# vi /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 -S DISK 10 60
# 0 * * * * root /usr/lib/sa/sa1 -S DISK 600 6 &
# Generate a daily summary of process accounting at 23:53
59 23 * * * root /usr/lib/sa/sa2 –A
[root@hky-linux1 ~]# vi /etc/sysconfig/sysstat
# sysstat-9.0.6.1 configuration file.
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=7000
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=3
统计cpu信息
[root@hky-linux1 ~]# sar -u
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
06:30:02 AM CPU %user %nice %system %iowait %steal %idle
06:40:01 AM all 0.04 0.00 0.48 0.13 0.00 99.35
06:50:01 AM all 0.05 0.00 0.50 0.15 0.00 99.30
07:00:01 AM all 0.05 0.00 0.60 0.46 0.00 98.90
07:10:01 AM all 0.09 0.00 0.65 0.51 0.00 98.76
07:20:01 AM all 0.04 0.20 1.59 4.55 0.00 93.63
07:30:01 AM all 0.06 0.00 0.57 0.28 0.00 99.08
Average: all 0.05 0.03 0.73 1.01 0.00 98.17
Cpu
All: 表示统计信息为所有 CPU 的平均值
%user:用户运行进程所花的时间
%nice:运行正常进程所花的时间
%system:在内核模式中运行进程所花的时间
%iowait:没有进程在该CPU上执行时,处理器等待I/O完成的时间
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比
%idle:没有进程在该CPU上执行的时间
查看报告
[root@hky-linux1 sa]# sar -f /var/log/sa/sa01
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
06:30:02 AM CPU %user %nice %system %iowait %steal %idle
06:40:01 AM all 0.04 0.00 0.48 0.13 0.00 99.35
06:50:01 AM all 0.05 0.00 0.50 0.15 0.00 99.30
07:00:01 AM all 0.05 0.00 0.60 0.46 0.00 98.90
在多cpu的系统中,查看分解的cpu信息
[root@hky-linux1 sa]# sar -u -P ALL 5 5
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:38:51 AM CPU %user %nice %system %iowait %steal %idle
07:38:56 AM all 0.00 0.00 0.80 0.00 0.00 99.20
07:38:56 AM 0 0.00 0.00 0.80 0.00 0.00 99.20
磁盘io数据统计
[root@hky-linux1 ~]# sar -d 5 2
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:40:36 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:40:41 AM dev8-0 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.54
07:40:41 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:40:41 AM dev8-32 0.00 0.00 0.00 0.00 0.00 0.00
DEV:磁盘设备
Tps:每秒传输数
rd_sec/s:每秒xx字节读取数
wr_sec/s:每秒xx字节写入数
显示io和传送速率的信息
[root@hky-linux1 ~]# sar -b 5 3
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:53:25 AM tps rtps wtps bread/s bwrtn/s
07:53:30 AM 0.00 0.00 0.00 0.00 0.00
07:53:35 AM 1.00 0.00 1.00 0.00 25.60
07:53:40 AM 0.00 0.00 0.00 0.00 0.00
Average: 0.33 0.00 0.33 0.00 8.54
tps 每秒钟物理设备的 I/O 传输总量
rtps 每秒钟从物理设备读入的数据总量
wtps 每秒钟向物理设备写入的数据总量
bread/s 每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s 每秒钟向物理设备写入的数据量,单位为 块/s
显示内存页面统计
[root@hky-linux1 ~]# sar -B 5
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:55:26 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
07:55:31 AM 0.00 8.02 15.83 0.00 15.63 0.00 0.00 0.00 0.00
07:55:36 AM 0.00 6.45 11.69 0.00 25.20 0.00 0.00 0.00 0.00
pgpgin/s 每秒钟从磁盘读入的系统页面的 KB 总数
pgpgout/s 每秒钟向磁盘写出的系统页面的 KB 总数
fault/s 系统每秒产生的页面失效(major + minor)数量
majflt/s 系统每秒产生的页面失效(major)数量
每秒创建的进程数的进程统计
[root@hky-linux1 ~]# sar -C 5 3
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:57:12 AM CPU %user %nice %system %iowait %steal %idle
07:57:17 AM all 0.21 0.00 2.06 0.82 0.00 96.91
07:57:22 AM all 0.00 0.00 0.60 0.20 0.00 99.19
网络信息统计
[root@hky-linux1 ~]# sar -n DEV 5 3 |grep eth0
07:58:22 AM eth0 0.40 0.20 0.02 0.01 0.00 0.00 0.00
07:58:27 AM eth0 0.20 0.20 0.01 0.04 0.00 0.00 0.00
[root@hky-linux1 ~]# sar -n DEV 5 3
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:45:44 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:45:49 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:45:49 AM eth0 0.20 0.20 0.01 0.03 0.00 0.00 0.00
07:45:49 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
IFACE:LAN接口
rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包
网络错误信息统计
[root@hky-linux1 ~]# sar -n EDEV 5 3
Linux 2.6.18-53.el5 (hky-linux1) 07/01/2010 _i686_ (1 CPU)
07:48:24 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram /s rxfifo/s txfifo/s
07:48:29 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0. 00 0.00 0.00
07:48:29 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0. 00 0.00 0.00
07:48:29 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0. 00 0.00 0.00
[root@hky-linux1 ~]# sar -n EDEV 5 |egrep 'eth0|IFACE'
07:59:16 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
07:59:21 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
IFACE:LAN接口
rxerr/s:每秒钟接收的坏数据包
txerr/s:每秒钟发送的坏数据包
coll/s:每秒冲突数
rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
txcarr/s:发送数据包时,每秒载波错误数
rxfram/s:每秒接收数据包的帧对齐错误数
rxfifo/s:接收的数据包每秒FIFO过速的错误数
txfifo/s:发送的数据包每秒FIFO过速的错误数