您当前的位置: 首页 >  linux

恐龙弟旺仔

暂无认证

  • 0浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Linux vmstat命令实战

恐龙弟旺仔 发布时间:2022-03-28 21:37:50 ,浏览量:0

前言:

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析(后续会介绍pidstat命令来展示各个进程的资源使用情况)

1.常规使用

在使用vmstat命令时,最常用的就是vmstat -w 5

这里的5意思是每5秒输出一次

root@7bc18553126f:/# vmstat -w 5
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 4  0       118168        95456       128572      1540068    0    0    28    39  102   73   1   0  98   0   0
 1  0       118168        95172       128572      1540068    0    0     0     0 1232  357  25   0  75   0   0
 1  0       118168        95424       128572      1540068    0    0     0     0 1270  385  25   0  75   0   0
 1  0       118168        95424       128572      1540068    0    0     0     0 1223  334  25   0  75   0   0

字段含义解释:(来自https://blog.csdn.net/m0_38110132/article/details/84190319)

类别

项目

含义

说明

Procs(进程)

r

等待执行的任务数

展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。

B

等待IO的进程数量

Memory(内存)

swpd

正在使用虚拟的内存大小,单位k

free

空闲内存大小

buff

已用的buff大小,对块设备的读写进行缓冲

cache

已用的cache大小,文件系统的cache

inact

非活跃内存大小,即被标明可回收的内存,区别于free和active

具体含义见:概念补充(当使用-a选项时显示)

active

活跃的内存大小

具体含义见:概念补充(当使用-a选项时显示)

Swap

si

每秒从交换区写入内存的大小(单位:kb/s)

so

每秒从内存写到交换区的大小

IO

bi

每秒读取的块数(读磁盘)

块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes

bo

每秒写入的块数(写磁盘)

块设备每秒发送的块数量,单位是block

system

in

每秒中断数,包括时钟中断

这两个值越大,会看到由内核消耗的cpu时间sy会越多

秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目

cs

每秒上下文切换数

CPU(以百分比表示)

us

用户进程执行消耗cpu时间(user time)

us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了

sy

系统进程消耗cpu时间(system time)

sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足

Id

空闲时间(包括IO等待时间)

一般来说 us+sy+id=100

wa

等待IO时间

wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

1.1 以M为单位来展示

在memory列里,默认展示单位为byte,我们可以将其转换为M后再展示(可读性会更好点)

root@7bc18553126f:/# vmstat -wS M 5
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
11  0          115           92          125         1503    0    0    27    37   24  103   2   0  97   0   0
 8  0          115           92          125         1503    0    0     0     0 4130  737 100   0   0   0   0
1.2 带上时间戳
root@7bc18553126f:/# vmstat -wtS M 5
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- -----timestamp-----
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st                 UTC
11  0          115           92          125         1503    0    0    27    37   26  103   2   0  97   0   0 2022-03-13 04:19:04
 8  0          115           92          125         1503    0    0     0     0 4181  883 100   0   0   0   0 2022-03-13 04:19:09

最后一列就是当前展示的时间戳

2.展示其他项 2.1 显示内存相关统计信息(vmstat -s)
root@7bc18553126f:/# vmstat -s
      2036420 K total memory
       273324 K used memory
       420736 K active memory
      1195284 K inactive memory
        94444 K free memory
       128584 K buffer memory
      1540068 K swap cache
      1048572 K total swap
       118168 K used swap
       930404 K free swap
       892339 non-nice user cpu ticks
            0 nice user cpu ticks
        85790 system cpu ticks
     33333903 idle cpu ticks
        82343 IO-wait cpu ticks
            0 IRQ cpu ticks
         5422 softirq cpu ticks
            0 stolen cpu ticks
      9171103 pages paged in
     12608408 pages paged out
           86 pages swapped in
        29389 pages swapped out
     52677867 interrupts
    121424068 CPU context switches
   1647059249 boot time
        70139 forks
2.2 显示磁盘读写(vmstat -d)
root@7bc18553126f:/# vmstat -d  
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
...
nbd12      0      0       0       0      0      0       0       0      0      0
nbd13      0      0       0       0      0      0       0       0      0      0
nbd14      0      0       0       0      0      0       0       0      0      0
nbd15      0      0       0       0      0      0       0       0      0      0
vda   217495   5488 18342206   42669 20219738 520434 25216816 1004568      0   1548
总结:

最常用的可以简写为:vmstat -wtS M 5 

如果希望将日志打印到某个文件,可以使用 vmstat -wtS M 5 | tee xxx.log

参考:

Linux vmstat命令实战详解_浮生忆梦的博客-CSDN博客_vmstat

关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.0361s