L77.linux命令每日一练 -- 第11章 Linux系统管理命令 -- vmstat和mpstat
11.5 vmstat:虚拟内存统计
11.5.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对操作系统的内存信息、进程状态和CPU活动等进行监视。但是只能对系统的整体情况进行统计,无法对某个进程进行深入分析。
【语法格式】
vmstat [option] [delay [count]]
vmstat [选项] [时间间隔[次数]]
说明:
1)在vmstat命令及后面的选项里,每个元素之间都至少要有一个空格。
2)delay表示两次输出之间的间隔时间。
3)count表示按照delay指定的时间间隔统计的次数。
【选项说明】
表11-4针对该命令的参数选项进行了说明。
表11-4 vmstat命令的参数选项及说明
11.5.2 使用范例
**范例11-12:**显示虚拟内存的使用情况。
[root@centos7 ~]# vmstat #如果省略“间隔时间”和“次数”的参数,则仅显示一次报告后就退出。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 287344 2076 520512 0 0 14 9 41 68 0 0 99 0 0
[root@centos7 ~]# vmstat 5 #表示每5秒钟更新一次输出信息,循环输出,按Ctrl+c组合键停止输出。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 287468 2076 520544 0 0 14 9 41 68 0 0 99 0 0
^C
[root@centos7 ~]# vmstat 5 6 #表示每5秒钟更新一次输出信息,统计6次后停止输出。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 287468 2076 520544 0 0 14 9 41 68 0 0 99 0 0
0 0 0 287468 2076 520544 0 0 0 0 32 43 0 0 100 0 0
0 0 0 287468 2076 520544 0 0 0 0 26 34 0 0 100 0 0
0 0 0 287468 2076 520544 0 0 0 0 27 38 0 0 100 0 0
0 0 0 287468 2076 520544 0 0 0 0 26 36 0 0 100 0 0
0 0 0 287468 2076 520544 0 0 0 0 28 38 0 0 100 0 0
以下是命令结果的详细说明:
第一列:procs。
- r列表示运行和等待CPU时间片的进程数。
- b列表示正在等待资源的进程数。
第2列:memory。
- swpd列表示使用虚拟内存的大小。
- free列表示当前空闲的物理内存数量。
- buff列表示buffers的内存数量。
- cache列表示cache的内存数量。
第3列:swap。
- si(swap in)列表示由磁盘调入内存,也就是内存进入内存交换区的数量。
- so(swap on)列表示由内存调入磁盘,也就是内存交换区进入内存的数量。
第4列:I/O项显示磁盘读写状况。
- bi列表示从块设备读入数据的总量(即读磁盘)(块/s)。
- bo列表示写入块设备的数据总量(即写磁盘)(块/s)。
第5列:system显示采集间隔内发生的中断数。
- in列表示在某以时间间隔中观测到的每秒设备中断数。
- cs列表示每秒产生的上下文切换次数。
第6列:CPU项显示了CPU的使用状态。
- us列显示了用户进程消耗的CPU时间百分比。
- sy列显示了系统(内核)进程小号的CPU时间百分比。
- id列显示了CPU处于空闲状态的时间百分比。
- wa列显示了I/O等待所占用的CPU时间百分比。
- st列显示了虚拟机占用的CPU时间的百分比。
**范例11-13:**显示活跃和非活跃内存。
[root@centos7 ~]# vmstat -a 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
2 0 0 287360 155944 405728 0 0 13 8 41 67 0 0 99 0 0
0 0 0 287360 155944 405732 0 0 0 0 31 44 0 1 100 0 0
0 0 0 287360 155944 405732 0 0 0 0 29 38 0 0 100 0 0
0 0 0 287360 155944 405732 0 0 0 0 27 37 0 0 100 0 0
0 0 0 287360 155944 405732 0 0 0 0 28 36 0 0 100 0 0
使用-a选项显示活跃和非活跃内存时,所显示的内容除去增加了inact和active之外,其他显示内容与范例11-12相同。
memory列增加了inact和active两列,其说明具体如下。
- inact:非活跃的内存大小(当使用-a选项时显示)。
- active:活跃的内存大小(当使用-a选项时显示)。
**范例11-14:**查看内存使用的详细信息。
[root@centos7 ~]# vmstat -s
995684 K total memory
185732 K used memory
405696 K active memory
155944 K inactive memory
287324 K free memory
2076 K buffer memory
520552 K swap cache
2097148 K total swap
0 K used swap
2097148 K free swap
3432 non-nice user cpu ticks
11 nice user cpu ticks
9153 system cpu ticks
2538658 idle cpu ticks
220 IO-wait cpu ticks
0 IRQ cpu ticks
267 softirq cpu ticks
0 stolen cpu ticks
336035 pages paged in
211445 pages paged out
0 pages swapped in
0 pages swapped out
1041005 interrupts
1701007 CPU context switches
1604123251 boot time
3041 forks
这些信息分别来自于/proc/meminfo、/proc/stat和/proc/vmstat。
**范例11-15:**查看磁盘的读/写。
[root@centos7 ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sda 7293 6 670015 115870 5910 371 422981 32023 0 89
sr0 18 0 2056 1173 0 0 0 0 0 0
这些信息主要来自于/proc/diskstats。其中的merged表示一次来自于合并的写/读请求,系统一般会把多个连接/邻近的读/写请求合并到一起来操作。
**范例11-16:**查看/dev/sda1磁盘的读写统计信息。
[root@centos7 ~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
1859 11345 4 4096
这些信息主要来自于/proc/diskstats。各列的说明具体如下。
- reads:来自于该分期的读的次数。
- read sectors:来自于该分期的读扇区的次数。
- writes:来自于该分区的写的次数。
- requested writes:来自于该分区的写请求次数。
11.6 mpstat:CPU信息统计
11.6.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
mpstat是Multiprocessor Statistics的缩写,是一种实时系统监控工具。mpstat命令会输出CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU的系统里,此命令不但能用来查看所有CPU的平均状况信息,而且还能够用来查看特定CPU的信息。
mpstat命令的最大特点是:可以查看多核心CPU中每个计算核心的统计数据,而类似命令vmstat只能查看系统整体的CPU情况。
【语法格式】
mpstat [option] [delay [count]]
mpstat [选项] [时间间隔[次数]]
说明:
1)在mpstat命令及后面的选项里,每个元素之间都至少要有一个空格。
2)delay表示两次输出之间的间隔时间。
3)count表示按照delay指定的时间间隔统计的次数。
【选项说明】
表11-5针对该命令的参数选项进行了说明。
表11-5 mpstat命令的参数选项及说明
11.6.2 使用范例
范例11-17:显示CPU信息统计。
[root@centos7 ~]# mpstat #如果省略“时间间隔”和“次数”参数,则仅显示一次报告后就退出。
Linux 3.10.0-1127.19.1.el7.x86_64 (centos7) 10/31/2020 _x86_64_ (1 CPU)
09:12:01 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:12:01 PM all 0.13 0.00 0.35 0.01 0.00 0.01 0.00 0.00 0.00 99.50
[root@centos7 ~]# mpstat 5 6 #表示每5秒更新一次输出信息,统计6次后停止输出。
Linux 3.10.0-1127.19.1.el7.x86_64 (centos7) 10/31/2020 _x86_64_ (1 CPU)
09:12:07 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:12:12 PM all 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60
09:12:17 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:12:22 PM all 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
09:12:27 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:12:32 PM all 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
09:12:37 PM all 0.00 0.00 0.20 0.00 0.00 0.20 0.00 0.00 0.00 99.60
Average: all 0.03 0.00 0.13 0.00 0.00 0.03 0.00 0.00 0.00 99.80
以下是命令结果的详细说明。
第1列:09:12:07 PM,表示当前时间。
第2列: CPU,all表示所有CPU,0表示第一个CPU,…
后面9列的含义分别如下。
- %usr:用户进程消耗的CPU时间百分比。
- %nice:改变优先级的进程占用的CPU时间百分比。
- %sys:系统(内核)进程消耗的CPU时间百分比。
- %iowait:IO等待所占用的CPU时间百分比。
- %irq:硬中断占用的CPU时间百分比。
- %soft:软中断占用的CPU时间百分比。
- %steal:虚拟机强制CPU等待的时间百分比。
- %guest:虚拟机占用CPU时间百分比。
- %idle:CPU处在空闲状态的时间百分比。
**范例11-18:**显示指定CPU信息的统计。
[root@centos7 ~]# mpstat -P 0 #显示第一个CPU的信息。
Linux 3.10.0-1127.19.1.el7.x86_64 (centos7) 10/31/2020 _x86_64_ (1 CPU)
09:18:46 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:18:46 PM 0 0.13 0.00 0.35 0.01 0.00 0.01 0.00 0.00 0.00 99.50