当前位置: 首页 > news >正文

linux运维一天一个shell命令之vmstat详解

概念

vmstat 是 Linux 系统中一个非常有用的工具,主要用于报告系统的虚拟内存、进程、CPU 活动和 IO 性能等信息。以下是对 vmstat 工具的详细解释:

基本语法

vmstat [options] [delay  [count]]delay:更新的时间间隔(以秒为单位)。
count:更新的次数。
  • 例如,要每秒报告一次系统状态并报告 5 次,可以使用以下命令:
vmstat 1 5

输出字段

vmstat 的输出包含多个字段,每个字段代表不同的系统指标。以下是这些字段的详细解释:

Procs

r:运行队列中的进程数(运行或等待 CPU)
b:在不可中断睡眠中的进程数(一般等待 IO)

Memory

swpd:已交换到磁盘的内存总量(单位是 KB)
free:空闲内存总量(单位是 KB)
buff:用于缓冲的内存总量(单位是 KB)
cache:用于缓存的内存总量(单位是 KB)

Swap

si:从磁盘交换进内存的交换页数(单位是 KB/s)。
so:从内存交换到磁盘的交换页数(单位是 KB/s)。

IO

bi:从块设备(如磁盘)读取的数据块数(单位是块/s)。
bo:写到块设备(如磁盘)上的数据块数(单位是块/s)。

System

in:每秒中断数,包括时钟中断。
cs:每秒上下文切换数。

CPU

us:用户态 CPU 时间百分比。
sy:系统态 CPU 时间百分比。
id:空闲 CPU 时间百分比。
wa:等待 IO CPU 时间百分比。
st:被虚拟机窃取的 CPU 时间百分比。

选项

参数

vmstat 提供了一些可选参数,用于调整输出格式或显示特定的信息。常用的选项包括:

-a:显示活跃和非活跃内存。
-d:显示磁盘状态。
-s:显示内存相关的统计信息。
-t:显示时间戳。
-S:设置输出统计信息的单位(K = 1000,M = 1000000)。

示例

1. 每秒更新一次,持续 5vmstat 1 52. 显示磁盘统计信息
vmstat -d3. 显示内存统计信息
vmstat -s4. 显示带时间戳的统计信息
vmstat -t

解析示例输出

以下是 vmstat 的示例输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free  buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0      0  79324  1136 104664    0    0     1     1    1    2  0  0 99  0  0
  • procs:
r = 1:有一个进程正在运行或等待 CPU。
b = 0:没有进程在等待 IO。
  • memory:
swpd = 0:没有交换内存。
free = 79324:有 79324 KB 的空闲内存。
buff = 1136:有 1136 KB 的内存用于缓冲。
cache = 104664:有 104664 KB 的内存用于缓存。
  • swap:
si = 0:没有从磁盘交换进内存的数据。
so = 0:没有从内存交换到磁盘的数据。
  • io:
bi = 1:每秒从块设备读取 1 个数据块。
bo = 1:每秒写到块设备 1 个数据块。
  • system:
in = 1:每秒 1 个中断。
cs = 2:每秒 2 个上下文切换。

cpu:

us = 0:用户态 CPU 时间占 0%。
sy = 0:系统态 CPU 时间占 0%。
id = 99:空闲 CPU 时间占 99%。
wa = 0:等待 IO 的 CPU 时间占 0%。
st = 0:被虚拟机窃取的 CPU 时间占 0%。

如何使用vmstat排查系统问题

分析步骤

使用 vmstat 工具可以帮助你深入了解系统的性能问题,包括 CPU 使用率、内存利用率、IO 性能和进程活动等

  1. 高 CPU 使用率
    如果系统的 CPU 使用率持续高于 80%,可能会导致性能问题。诊断步骤:
    运行 vmstat,查看 us(用户态 CPU 使用率)和 sy(系统态 CPU 使用率)。
vmstat 1 5
  • 如果 us 高,表示大部分 CPU 时间花在用户态应用程序上,可能需要优化应用程序的性能。
  • 如果 sy 高,表示系统调用或内核活动占用了较多 CPU 资源,可能需要查看内核活动或驱动程序的性能。
  • 如果 wa(IO 等待时间)高,表示 CPU 等待 IO 操作完成,可能是磁盘或网络 IO 成为瓶颈。
  1. 内存不足
    内存不足会导致系统性能下降,甚至出现交换(swap)操作。诊断步骤:
    运行 vmstat,查看 free(空闲内存)、buff(缓冲区内存)和 cache(缓存内存)。
vmstat 1 5
  • 如果 free 内存比较低,但 buff 和 cache 较高,表示内存大部分用于缓冲和缓存,这是正常的。
  • 查看 si(swap in)和 so(swap out)。如果这两个值较高,表示系统正在频繁使用交换空间,可能需要增加物理内存或优化应用程序的内存使用。
  1. IO 性能问题
    高磁盘 IO 使用率会导致系统性能下降。诊断步骤:
    运行 vmstat,查看 bi(块设备读取)和 bo(块设备写入)。
vmstat 1 5
  • 如果 bi 和 bo 值较高,表示磁盘 IO 活动频繁,可能需要优化磁盘使用或考虑使用更快的存储设备。
  • 高 wa(等待 IO CPU 时间)也表示系统可能存在 IO 瓶颈。
  1. 进程问题
    系统中可能有过多的进程在运行,导致性能问题。诊断步骤:
    运行 vmstat,查看 r(运行队列中的进程数)和 b(在不可中断睡眠中的进程数)。
vmstat 1 5
  • 如果 r 值持续高于 CPU 核心数,表示系统中有许多进程在等待 CPU,可能需要优化应用程序或增加 CPU 核心数。
  • 如果 b 值较高,表示有很多进程在等待 IO 操作完成,可能需要优化 IO 性能。

示例分析

假设 vmstat 输出如下:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free    buff  cache   si   so   bi    bo   in   cs  us  sy  id  wa  st2  1      0  10000   2000  30000    0    0   50    50   100 200  60  30   5   5   0

分析

  1. CPU 使用率:
  • us = 60:用户态 CPU 使用率较高,表示应用程序占用了大部分 CPU 资源。
  • sy = 30:系统态 CPU 使用率也较高,可能是系统调用或内核活动频繁。
  • id = 5:空闲 CPU 时间较少,CPU 处于高负载状态。
  • wa = 5:有一些 IO 等待时间,但不是主要瓶颈。
  1. 内存:
  • free = 10000:空闲内存较少。
  • buff = 2000,cache = 30000:大部分内存用于缓冲和缓存,这是正常现象。
  • swpd = 0:没有使用交换空间。
  1. IO:
  • bi = 50,bo = 50:磁盘 IO 频繁,但 wa 值较低,表示 IO 不是主要瓶颈。
  1. 进程:
  • r = 2:有两个进程在运行队列中,等待 CPU。
  • b = 1:一个进程在等待 IO 操作。

结论

  • CPU 负载较高,主要是因为用户态和系统态 CPU 使用率都很高。
  • 内存基本充足,没有使用交换空间。
  • IO 活动频繁,但不是主要瓶颈。
  • 进程队列中有进程在等待 CPU。

解决措施

  • 优化应用程序以减少 CPU 使用。
  • 检查和优化系统调用或内核活动。
  • 考虑增加 CPU 核心数,以处理更多的并发进程。

相关文章:

linux运维一天一个shell命令之vmstat详解

概念 vmstat 是 Linux 系统中一个非常有用的工具,主要用于报告系统的虚拟内存、进程、CPU 活动和 IO 性能等信息。以下是对 vmstat 工具的详细解释: 基本语法 vmstat [options] [delay [count]]delay:更新的时间间隔(以秒为单…...

前端开发调试工具推荐分类整理

具体前往:前端调试工具分类整理汇总...

http协议与nginx

动态页面与静态页面的差别: (1)URL不同 静态⻚⾯链接⾥没有“?” 动态⻚⾯链接⾥包含“?” (2)后缀不同 (开发语⾔不同) 静态⻚⾯⼀般以 .html .htm .xml 为后缀 动态⻚⾯⼀般以 .php .jsp .py等为后…...

一款国外开发的高质量WordPress下载站模板主题

5play下载站是由国外站长开发的一款WordPress主题,主题简约大方,为v1.8版本, 该主题模板中包含了上千个应用,登录后台以后只需要简单的三个步骤就可以轻松发布apk文章, 我们只需要在WordPress后台中导入该主题就可以…...

Laravel为什么会成为最优雅的PHP框架

Laravel之所以成为最优雅的PHP框架之一,是因为它提供了一系列的优点,包括简洁的语法、强大的功能集、高度模块化和可扩展性、优雅的ORM、内置认证系统、丰富的社区支持和测试友好等。这些优点使得Laravel在PHP框架中脱颖而出,成为了很多开发者的首选框架。 官网:https://l…...

孤儿进程的例子

先让父进程死亡&#xff0c;子进程的父进程会被操作系统管理 先使用gcc编译代码, 执行代码后用 ps -p <进程号> -f 查看进程 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h>int main() {pid_t pid;// 创建…...

CSS前端面试题——怎么用CSS实现一个宽高自适应的正方形?

方法一&#xff1a;使用 padding 方案 这种方法通过设置元素的 padding 属性来实现宽高比例相等的正方形。假设我们希望正方形的边长为相对于父容器的百分比值&#xff0c;比如50% .square {width: 50%; /* 可以是任意宽度&#xff0c;这里假设为父元素宽度的50% */padding-t…...

谷粒商城实战笔记-56~57-商品服务-API-三级分类-修改-拖拽功能完成

文章目录 一&#xff0c;56-商品服务-API-三级分类-修改-拖拽功能完成二&#xff0c;57-商品服务-API-三级分类-修改-批量拖拽效果1&#xff0c;增加按钮2&#xff0c;多次拖拽一次保存完整代码 在构建商品服务API中的三级分类修改功能时&#xff0c;拖拽排序是一个直观且高效的…...

Shader入门精要总结(二)矩阵

1. 矩阵乘法 一个rn的矩阵A和一个nc的矩阵B相乘&#xff0c;它们的结果AB将会是一个rc大小的矩阵&#xff0c;不满足此规则不能相乘 矩阵乘法满足一些性质 矩阵乘法不满足交换律 即AB≠BA矩阵乘法满足结合律 (AB)CA(BC) 2. 特殊矩阵 方块矩阵 指行和列数目相等的矩阵&#…...

基于CentOS Stream 9平台安装MySQL Community Server 9.0.1 Innovation

1. 安装之前 1.1 查看系统版本 cat /etc/redhat-releaseCentOS Stream release 9 1.2 查看cpu架构 lscpu架构&#xff1a; x86_64 CPU 运行模式&#xff1a; 32-bit, 64-bit 2. 官网下载 https://dev.mysql.com/downloads/mysql/ 要多看看 官方9.0文档&#xff1a;https://d…...

正则采集器之五——商品匹配规则

需求设计 实现分析 系统通过访问URL得到html代码&#xff0c;通过正则表达式匹配html&#xff0c;通过反向引用来得到商品的标题、图片、价格、原价、id&#xff0c;这部分逻辑在java中实现。 匹配商品的正则做成可视化编辑&#xff0c;因为不同网站的结构不同&#xff0c;同…...

一键切换阿里yum源(包括其他系统repo镜像查找方法)

一键切换阿里yum源 示例命令其他系统repo镜像GitHub文档 示例命令 # 备份旧源 mv CentOS-Base.repo CentOS-Base.repo.bak # 添加新源(阿里镜像源) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo其他系统repo镜像 这里的示例是用…...

Fiddler学习笔记

目录 前言 简介 原理 界面 前言 测试可以使用fiddler工具&#xff0c;通过抓包的方式修改前端参数和模拟后端返回&#xff0c;快速定位缺陷。 简介 Fiddler是HTTP协议调试代理工具&#xff0c;可以记录并检查所有客户端和服务器之间的HTTP和HTTPS请求&#xff0c;允许监视…...

【Vue3】watch 监视多种类型数据

【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…...

【C++入门】虚函数与多态

文章目录 前言虚函数是什么&#xff1f;如何使用虚函数&#xff1f; 纯虚函数是什么&#xff1f;虚函数与普通函数的区别虚表虚表是什么&#xff1f;含有虚表的类内存结构图如何找到虚表的地址&#xff1f;示例代码代码解释 多态是什么&#xff1f;如何使用多态&#xff1f;为什…...

wpf中轮询显示图片

本文的需求是&#xff0c;在一个文件夹中&#xff0c;放一堆图片的集合&#xff0c;然后在wpf程序中&#xff0c;按照定时的方式&#xff0c;循序显示照片。 全部代码 1.声明一个PictureInfo类 namespace WpfApp1 {public class PictureInfo{public string? FileName { get; …...

CSA笔记9-磁盘管理(2)

分区挂载 挂载&#xff1a;将该文件系统中的内容与指定的目录关联起来&#xff0c;使得你可以通过该目录来访问文件系统中的文件和目录。 mount 命令用来挂载文件系统 #挂载/dev/sda1和/dev/sda2 [rootlocalhost ~]# mkdir test{1..2} [rootlocalhost ~]# ll test1 te…...

Python入门第三课

# 入门第三课 # 关键字 if and or in not in ! car g print(car g) print(car dd) if car ! hh:print("wlcome to here ") age 33 print(age 33) print(age 44) age1 44 if age >0 and age1 > 0:print("nihao") if age >0 or age1 > …...

java计算器,输入公式和对应变量的值

目标&#xff1a;最近想写个东西&#xff0c;本质就是一个计算器&#xff0c;我们可以输入公式&#xff08;例如&#xff1a;ab&#xff09;&#xff0c;然后把公式的值&#xff08;a:10,b:20&#xff09;也输入进去。最后得到结果。核心&#xff1a;这个想法核心部分就是给一个…...

加密货币赋能跨境电商:PayPal供应链金融服务如何引领行业新趋势

跨境电商行业近年来呈现出爆发式增长&#xff0c;随着全球化贸易壁垒的降低和数字经济的快速发展&#xff0c;越来越多的商家和消费者跨越国界进行交易。根据eMarketer的数据&#xff0c;全球跨境电商交易额在2023年已超过4万亿美元&#xff0c;并预计在未来几年内仍将保持两位…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...