当前位置: 首页 > 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;并预计在未来几年内仍将保持两位…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

react更新页面数据,操作页面,双向数据绑定

// 路由不是组件的直接跳转use client&#xff0c;useEffect&#xff0c;useRouter&#xff0c;需3个结合&#xff0c; use client表示客户端 use client; import { Button,Card, Space,Tag,Table,message,Input } from antd; import { useEffect,useState } from react; impor…...

使用 uv 工具快速部署并管理 vLLM 推理环境

uv&#xff1a;现代 Python 项目管理的高效助手 uv&#xff1a;Rust 驱动的 Python 包管理新时代 在部署大语言模型&#xff08;LLM&#xff09;推理服务时&#xff0c;vLLM 是一个备受关注的方案&#xff0c;具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...

MyBatis-Plus 常用条件构造方法

1.常用条件方法 方法 说明eq等于 ne不等于 <>gt大于 >ge大于等于 >lt小于 <le小于等于 <betweenBETWEEN 值1 AND 值2notBetweenNOT BETWEEN 值1 AND 值2likeLIKE %值%notLikeNOT LIKE %值%likeLeftLIKE %值likeRightLIKE 值%isNull字段 IS NULLisNotNull字段…...

使用MounRiver Studio Ⅱ软件写一个CH592F芯片的ADC采集程序,碰到的问题

MounRiver Studio Ⅱ 默认是不开启浮点计算的&#xff0c;所以有些浮点功能不能用&#xff0c;碰到问题是 while (1) {DelayMs (100);tmp Read_Temperature (0);sprintf (tempBuffer, "temp:%.2f\r\n", tmp); // 格式化温度值到字符串。使用%f要开启相应的…...