共计 5994 个字符,预计需要花费 15 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章将为大家详细讲解有关 Linux 命令中 vmstat 怎么用,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写, 是实时系统监控工具;用来获得有关进程、虚存、页面交换空间及 CPU 活动的信息。这些信息反映了系统的负载情况;这个命令 Linux/Unix 都支持,而且相比 top,通过该命令可以看到整个机器的 CPU, 内存,IO 的使用情况,而不是单单看到各个进程的 CPU 使用率和内存使用率 (使用场景不一样)。
1、命令格式
vmstat
[-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [
count]]
vmstat [-f]
vmstat [-V]
2、命令参数
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的 fork 数量 。
-m:显示 slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表 1000、1024、1000000、1048576 字节(byte)。默认单位为 K(1024
bytes)
-V:显示 vmstat 版本信息。
3、使用示例
[root@seaing ~]# vmstat
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 15700892 181712 385304 0
0 4 11
30 26 0 0
100 0
0
[root@seaing ~]# 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 0 15700892 272456
344768 0 0
4 11 30
26 0 0 100
0 0
– 每 2 秒采集一次服务器状态,共采集 6 次
[root@seaing ~]# vmstat 2 6
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 15701016 181712
385308 0 0
4 11 32
26 0 0 100
0 0
0
0 0 15701016 181712
385308 0 0
0 0 1015 72
0 0 100 0 0
0
0 0 15701016 181712
385308 0 0
0 0 1016 71
0 0 100 0 0
0
0 0 15701016 181712
385308 0 0
0 14 1016 76
0 0 100 0 0
0
0 0 15701008 181712
385308 0 0
0 0 1014 73
0 0 100 0 0
0
0 0 15701008 181712
385308 0 0
0 0 1019 70
0 0 100 0 0
说明:
类别
项目
含义
说明
Procs(进程)
r
等待执行的任务数
展示了正在执行和等待 cpu 资源的任务个数。当这个值超过了 cpu 个数,就会出现 cpu 瓶颈。
这个也和 top 的负载有关系,一般负载超过了 3 就比较高,超过了 5 就高,超过了 10 就不正常了,服务器的状态很危险。top 的负载类似每秒的运行队列。如果运行队列过大,表示你的 CPU 很繁忙,一般会造成 CPU 使用率很高。
B
等待 IO 的进程数量
也可以理解为阻塞的进程数
Memory(内存)
swpd
正在使用虚拟的内存大小,单位 k
虚拟内存已使用的大小,如果大于 0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free
空闲物理内存的大小
buff
已用的 buff 大小,对块设备的读写进行缓冲
cache
已用的 cache 大小,文件系统的 cache
cache 直接用来记忆我们打开的文件, 给文件做缓冲 (这里是 Linux/Unix 的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cached 会很快地被使用。)
Swap
si
每秒从磁盘读入虚拟内存的大小(单位:kb/s)
如果这个值大于 0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
so
每秒虚拟内存写入磁盘的大小
如果这个值大于 0,同上
IO
bi
每秒读取的块数(读磁盘)
这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是 1024byte
bo
每秒写入的块数(写磁盘)
例如我们读取文件,bo 就要大于 0。bi 和 bo 一般都要接近 0,不然就是 IO 过于频繁,需要调整。
system
in
每秒 CPU 的中断数,包括时钟中断
这两个值越大,会看到由内核消耗的 cpu 时间会越多
上下文切换次数过多表示你的 CPU 大部分浪费在上下文切换,导致 CPU 干正经事的时间少了,CPU 没有充分利用,是不可取的。
cs
每秒上下文切换数
CPU(以百分比表示)
us
用户进程执行消耗 cpu 时间 (user time)
us 的值比较高时,说明用户进程消耗的 cpu 时间多,但是如果长期超过 50% 的使用,那么我们就该考虑优化程序算法或其他措施了
sy
系统进程消耗 cpu 时间 (system time)
sys 的值过高时,说明系统内核消耗的 cpu 资源多,这个不是良性的表现,我们应该检查原因。
id
空闲时间 (包括 IO 等待时间)
一般来说,id + us + sy = 100, 一般我认为 id 是空闲 CPU 使用率,us 是用户 CPU 使用率,sy 是系统 CPU 使用率。
wa
等待 IO 时间
wa 过高时,说明 io 等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
– 显示磁盘相关统计信息
[root@seaing ~]# 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 19755 13057
834627 82098 488536 207361
5567304 207387 0
161
sdb 941 2526
5713 361 842
70921 143526 2720
0 0
sdc 449 191
2711 75 0
0 0 0
0 0
sdd 237174 194 1896535 22173
1874 233855 1885832 328146 0
24
sde 868 1757
4251 277 760
71240 144000 3584
0 0
sdf 414 101
1711 34 0
0 0 0
0 0
sdg 22910 101
181679 4143 189
22314 180024 32323
0 4
sdh 877 1748
4251 84 623
71377 144000 65594
0 0
sdi 418 95
1695 47 0
0 0 0
0 0
sdj 22417 95
177687 2323 192
22797 183912 79565
0 3
disk- ————reads———— ————writes———– —–IO——
total merged sectors ms
total merged sectors ms cur
sec
sdk 881 2145
4879 204 615
70984 143204 65317
0 0
sdl 414 101
1711 30 0
0 0 0
0 0
sdm 22413 101
177703 4086 186
21814 176000 75456
0 4
dm-0 30821 0
829946 324147 695909 0 5567272
681182 0 161
dm-1 112 0
896 905 0
0 0 0
0 0
sr0 0 0
0 0
0 0 0
0 0 0
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
– 查看分区的资源使用情况
[root@seaing ~]# vmstat -p /dev/sda1
sda1 reads read sectors
writes requested writes
124 2309 9 32
—
– 以 M 为单位显示所有情况
[root@seaing ~]# vmstat -S m
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 16077
186 394 0
0 4 11
31 26 0 0
100 0
0
– 显示 vmstat 版本的信息
[root@seaing ~]# vmstat –V
procps version 3.2.7
– 显示内存相关统计信息及多种系统活动数量
[root@seaing ~]# vmstat -s
16426356 total memory
725216 used memory
344788 active memory
272460 inactive memory
15701140 free memory
181712 buffer memory
385320 swap cache
18481144 total swap
0 used swap
18481144 free swap
4478 non-nice user cpu ticks
2105 nice user cpu ticks
11814 system cpu ticks
38902423 idle cpu ticks
14495 IO-wait cpu ticks
13407 IRQ cpu ticks
4756 softirq cpu ticks
0 stolen cpu ticks
1654066 pages paged in
4289217 pages paged out
0 pages swapped in
0 pages swapped out
99503472 interrupts
10117715 CPU context switches
1508999388 boot time
8617 forks
说明:
non-nice user cpu ticks 自系统启动以来,CPU 在用户态下运行非 nice 进程的时间,单位为 jiffies user
nice user cpu ticks 自系统启动以来,CPU 在用户态下运行 nice 进程的时间,单位为 jiffies nice
system cpu ticks 自系统启动以来,CPU 处于系统状态的时间,单位为 jiffies sys
idle cpu ticks 自系统启动以来,CPU 处于闲置状态的时间,单位为 jiffies idle
IO-wait cpu ticks 自系统启动以来,CPU 处理 IO 中断的时间,单位为 jiffies iowait
IRQ cpu ticks 自系统启动以来,CPU 处理硬中断的时间,单位为 jiffies irq
softirg cpu ticks 自系统启动以来,CPU 处理软中断的时间,单位为 jiffies Softirq
interrupts 自系统启动以来,发生的所有的中断的次数目 Intr
CPU context switches 自系统启动以来,发生的上下文交换的次数 Ctxt
boot time 自系统启动以来到现在运行的时间,单位为秒。btime
forks 自系统启动以来所创建的任务的个数目。Process
4、常见问题处理
如果 r 经常大于 4,且 id 经常少于 40,表示 cpu 的负荷很重。
如果 bi,bo 长期不等于 0,表示内存不足。
关于“Linux 命令中 vmstat 怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
向 AI 问一下细节
丸趣 TV 网 – 提供最优质的资源集合!