Linux命令中vmstat怎么用

72次阅读
没有评论

共计 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 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-07发表,共计5994字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)