千家信息网

Linux命令中vmstat怎么用

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章将为大家详细讲解有关Linux命令中vmstat怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vmstat是Virtual Meomory Stati
千家信息网最后更新 2024年09月22日Linux命令中vmstat怎么用

这篇文章将为大家详细讲解有关Linux命令中vmstat怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0