Linux 状态命令之内存状态 vmstat

本文详细解析了Linux系统中vmstat命令的使用方法及其参数意义,涵盖了内存、进程、CPU和磁盘I/O等关键系统指标的监测。通过实例演示,帮助读者掌握如何解读vmstat输出,有效监控和优化系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法

vmstat 常见命令格式如下:

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]

命令选项
  -a:显示活跃和非活跃内存;
  -f:显示从系统启动至今的fork数量;
  -m:显示slabinfo;
  -n:只在开始时显示一次各字段名称;
  -s:显示内存相关统计信息及多种系统活动数量;
  delay:刷新时间间隔,如果不指定,只显示一条结果;
  count:刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷;
  -d:显示磁盘相关统计信息;
  -p:显示指定磁盘分区统计信息;
  -S:使用指定单位显示,参数有 k 、K 、m 、M,分别代表1000、1024、1000000、1048576字节(byte),默认单位为K;
  -V:显示vmstat版本信息;

示例

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔,单位是秒;第二个参数是采样的次数。如下所示,表示每隔1秒采样,共采样5次:

[fenglepeng@centos]# vmstat 1 5  # 采样 5 次,每次间隔 1s
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 5  0      0  95380 147816 1216484    0    0     0    24    1    0  1  1 98  0  0
 0  0      0  95380 147816 1216484    0    0     0     0  410  907  0  1 99  0  0
 0  0      0  95396 147816 1216484    0    0     0     0  388  836  0  1 99  0  0
 0  0      0  95396 147816 1216484    0    0     0     0  391  853  1  0 99  0  0
 2  0      0  94144 147816 1216484    0    0     0    12  409  903  1  1 98  0  0

vmstat命令执行结果共分为6部分:procs、memory、swap、io、system、cpu。具体含义如下:

procs   #进程

  • r(run):表示运行或等待CPU时间片的进程数,如果该值长期大于服务器CPU的个数,则说明CPU资源不足。一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险;
  • b(block):表示等待资源的进程数,这个资源指的是I/O、内存等。比如,当磁盘读写非常频繁时,写数据就会变得很慢,此时CPU运算很快就结束了,但进程需要把计算的结果写入磁盘,这样进程的任务才算完成,此时这个进程只能慢慢地等待磁盘了,这个进程就是这个b状态。该数值如果长时间大于1,则需要去查找问题;

memory  #内存,单位:KB

  • swap:虚拟内存(swap空间)已使用的大小;
  • free:空闲的物理内存的大小;
  • buff:存放目录里面有什么内容,文件的属性以及权限等;
  • cache:用来记忆我们打开过的文件和程序,做文件缓冲(当程序使用内存时,buff/cache很快就会被使用);

swap    #swap空间,单位:KB,内存够用时,si和so值都为0,如果这两个值长期大于0,表示内存不够用了,系统性能会受到影响

  • si:表示从swap空间写入内存的数据量;
  • so:表示从内存写入swap空间的数据库;

io      #单位:块/秒

  • bi:每秒读取的块数(读磁盘),现在的Linux版本块的大小为1024bytes;
  • bo:每秒写入的块数(写磁盘);

system  #系统,这2个值越大,会看到由内核消耗的CPU时间会越大

  • in:每秒CPU的中断次数,包括时间中断;
  • cs:每秒上下文切换数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进行上下文切换,这个值越小越好;

cpu     #以百分比显示

  • us(user time):用户进程执行时间;
  • sy(system time):系统进程执行时间;
  • id:空闲时间(包括IO等待时间);
  • wa:等待IO时间,wa的值高时,说明IO等待比较严重,这可能由于磁盘大量做随机访问造成的,也有可能是磁盘出现瓶颈;
  • st:表示被偷走的CPU所占百分比(一般都为0,不用关注);
  • 备注:us + sy + id + wa =100%     #这个是只是近似值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值