背景
最近看到好多linux命令,对其参数既熟悉又陌生,但让自己一个个解释又不太清楚具体的含义,遇到这种情况,往往都是问度娘,搜出来的文章对于一些具体参数解释的还是有出入,于是自己写一系列文章单独记录一下,方便后面查阅,下面就从vmstat开始
vmstat的作用
vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包,通过该命令可以查看服务器处理器、内存、交换分区、系统IO、系统信息、cpu使用情况,帮助我们排查系统性能问题。
vmstat参数解释
通过man vmstat查看该命令的帮助信息
[root@cluster ~]# man vmstat
Procs
r: The number of runnable processes (running or waiting for run time).
b: The number of processes in uninterruptible sleep.
说明:
R:代表可运行的进程数,如果R参数值过大,则说明CPU比较繁忙
B:代表等IO的进程数,如果该值过大,则说明I/O(磁盘I/O、网络IO)可能出问题了
Memory
swpd: the amount of virtual memory used.
free: the amount of idle memory.
buff: the amount of memory used as buffers.
cache: the amount of memory used as cache.
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
说明:
SWPD:代表虚拟内存的使用数量,默认大小为K
FREE:代表空闲内存的大小,默认大小为K
BUFF:代表缓冲区的大小,默认大小为K
CACHE:代表缓存的大小,用于缓存文件和目录的信息,加速对文件和目录的快速访问,默认大小为K
INACT:代表未活动的内存大小,默认大小为K
ACTIVE:代表活动的内存大小,默认大小为K
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
说明:
SI:从磁盘读取数据到交换分区的大小,每秒读取多少K
SO:从交换分区写入到磁盘的大小,每秒写入多少K
这两个参数有值时表示物理内存可能不够用了,需要使用交换分区来存放数据。
IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
说明:
BI:从块设备(磁盘)中接收的数据块,数据块大小是多少呢
BO:发送到块设备(磁盘)的数据块
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
说明:
IN:系统每秒中断的次数,包括时钟中断
CS:系统每秒发生的上下文切换次数
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
说明:
US:非内核code消耗的CPU时间,一般是用户进程消耗的CPU时间
SY:内核消耗的CPU时间,一般是系统进程
ID:空闲时间,包括IO等待的时间,一般US+SY+ID=100
WA:等待IO消耗的时间,如果该值长时间较大,说明IO可能出现瓶颈了。
ST:来自虚拟机消耗的时间。
[root@cluster ~]# vmstat 2 50
procs -----------memory---------- —swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 264 142858048 385512 55297228 0 0 240 60 0 0 1 0 99 0 0
2 0 264 142859840 385512 55297036 0 0 364 7271 7329 13674 0 0 100 0 0
3 0 264 142860256 385512 55297064 0 0 188 4637 6531 11489 0 0 100 0 0
1 0 264 142861168 385512 55297204 0 0 104 950 5515 9293 0 0 100 0 0
1 0 264 142861664 385512 55297204 0 0 244 3848 5772 10855 0 0 100 0 0
扩展知识
1、查看vmstat命令属于哪一个安装包
[root@ ~]# yum provides vmstat
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
data/filelists_db | 7.1 MB 00:00:00
procps-ng-3.3.10-23.el7.i686 : System and process monitoring utilities
Repo : data
Matched from:
Filename : /usr/bin/vmstat
procps-ng-3.3.10-23.el7.x86_64 : System and process monitoring utilities
Repo : data
Matched from:
Filename : /usr/bin/vmstat
procps-ng-3.3.10-17.el7.x86_64 : System and process monitoring utilities
Repo : @anaconda
Matched from:
Filename : /usr/bin/vmstat
[root@cluster-10-176-50-29 ~]# rpm -qf /usr/bin/vmstat
procps-ng-3.3.10-17.el7.x86_64
2、查看设备数据块大小的几种方式
方法一:
fdisk -l /dev/sdb |grep -i ‘I/O’
方法二:
stat /dev/sdb
方法三
tune2fs -l /dev/sdb |grep -i “Block size”
方法四
blockdev --getbsz /dev/sdb
说明:tune2fs可以查看raid的策略,blockdev可以设置块的大小。
3、什么是uninterruptible sleep?