Linux运维04:vmstat命令详解

 系列专题:Linux运维入门教程 


       vmstat主要是用来检测虚拟内存的,可以展现给定时间间隔的服务器的状态值,包括CPU使用率,内存使用率,虚拟内存交换情况,IO读写情况等。

1.用法

语法:

vmstat [options] [delay [count]]

参数说明:

选项

功能

-a

显示活跃和非活跃内存

-f

显示从系统启动至今的fork数量

-m

显示slabinfo

-s

显示内存相关统计信息及多种系统活动数量

-d

显示磁盘相关的统计信息

-S

使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes)

delay

刷新时间间隔,如果不指定,只显示一条结果

count

刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷

2. 实践

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。

2.1 procs

r:运行队列中进程的数量,这些进程都是可运行状态,都在等待CPU的分配

解释:当这个值超过了CPU数目,就会出现CPU瓶颈,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

b:被blocked(阻塞)的进程数,正在等待IO

2.2 memory

swpd:使用的虚拟内存的大小,单位是KB

解释:如果该值大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器

free:可用的物理内存大小,单位是KB

buff:物理内存用来缓存读写操作的buffer大小,单位是KB

cache:物理内存用来缓存进程地址空间的cache大小,单位是KB

2.3 swap

si(换入):每秒从SWAP(交换分区)读入到RAM(swap in)的大小,单位是KB

so(换出):每秒从RAM写出到SWAP(swap out)的大小,单位是KB

解释:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。有些朋友看到空闲内存(free)很少时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响。

2.4 io

bi:每秒从文件系统或SWAP读入到RAM(blocks in)的块数,block(1KB磁盘块)为单位

bo:每秒从RAM写出到文件系统或SWAP(blocks out)的块数,block(1KB磁盘块)为单位

解释:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大

2.5 system

in:每秒的中断数

cs:系统每秒进行上下文切换的次数

解释:cs表示每秒上下文切换的次数,例如,当我们调用系统函数,就要进行上下文切换;当进行线程的切换,也要进行上下文切换,这个值越小越好。例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程或线程数就是比较合适的值了。系统调用也是如此,每次调用系统函数,我们的代码就会进入到内核空间(内核态),导致上下文切换,这个过程很耗资源,所以要尽量避免频繁的系统调用。上下文切换次数过多表示你的CPU大部分时间浪费在上下文切换中,导致CPU干正经事的时间少了。

2.6 cpu

us:用户空间占用CPU的百分比

解释:us的值比较高时,说明用户进程消耗的CPU时间比较多,但是如果长期超过50%,那么我们就该考虑优化程序算法或者进行加速。

sy:内核空间占用CPU的百分比

解释:sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

id:CPU空闲的百分比

wa:CPU等待IO的百分比

解释:wa的值高时,说明CPU等待IO的时间比较多,这可能是大量的磁盘随机访问造成的,也有可能是磁盘出现瓶颈。

st:来自于虚拟机偷取的CPU所占的百分比

3 总结

      vmstat是一个服务器监控命令,通过vmstat可以看到CPU和内存的使用情况。目前说来,对于服务器监控有用处的度量主要有:

  • r(运行队列)
  • pi(页导入)
  • us(用户CPU)
  • sy(系统CPU)
  • id(空闲CPU)

3.1 vmstat跟踪CPU瓶颈

识别方法:

       r(运行队列)展示了正在执行和等待CPU资源的任务个数当这个值超过了CPU数目,就会出现CPU瓶颈

       Linux下查看CPU核心数命令

cat /proc/cpuinfo|grep processor|wc -l

解决CPU瓶颈的办法如下

1.增加CPU个数或核数(推荐)

2.调整任务的执行时间,如把大任务放到系统不繁忙的时候进行,进而平衡系统的任务。

3.调整已有任务的优先级

3.2 vmstat跟踪CPU满负荷

       首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值

3.3 vmstat跟踪内存瓶颈

通过vmstat识别内存瓶颈:

       当内存的需求大于实际的物理内存时,服务器就会启动虚拟内存机制,通过虚拟内存,可以将内存段移到SWAP DISK的特殊磁盘段上,这样就会出现虚拟内存的页导入和页导出现象。页导出并不能说明出现了内存瓶颈,虚拟内存系统经常会对内存段进行页导出,但是页导入操作就表明服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回内存,导致服务器速度变慢。

解决内存瓶颈的办法如下:

1. 最简单的,增加内存(推荐)

2. 改小SGA,使得对内存的需求减少

3. 改小PGA,使得对内存的需求减少

4. 参考文献

[01] https://www.cnblogs.com/baichunyu/p/15362733.html

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoungerChina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值