vmstat命令详解

简介: `vmstat` 是类 Unix 系统的监控工具,显示虚拟内存、物理内存、CPU、I/O 和系统中断等资源使用情况。基本用法是 `vmstat [interval [count]]`,可按指定时间间隔输出系统状态。主要字段包括进程(r/b)、内存(swpd/free/buff/cache)、交换(si/so)、I/O(bi/bo)、系统(in/cs)和CPU(us/sy/id/wa/st)的统计。使用 `-s`, `-a`, `-m`, `-d`, `-p` 等选项可获取不同类型的统计信息。详细信息可通过 `man vmstat` 查看。

vmstat 是一个在类 Unix 操作系统(包括 Linux 和 BSD 系统)中广泛使用的系统监视工具,它的全称是 Virtual Memory Statistics(虚拟内存统计)。这个命令主要用于报告和分析系统的虚拟内存、物理内存、CPU、块 I/O 设备以及系统中断等核心资源的使用状况。

基本用法和选项:

  • vmstat [interval [count]]
    • 不加参数时,vmstat 显示系统启动以来的累计统计信息。
    • interval 表示两次报告之间的时间间隔(单位通常是秒),如果指定了这个参数,vmstat 将会每隔指定的时间间隔输出一次系统状态。
    • count 表示要输出多少次报告后停止,默认情况下不指定将一直输出直到手动停止。

主要输出字段含义:

  1. Procs(进程)

    • r: 运行队列中的进程数,即正在等待 CPU 时间片的进程数量。
    • b: 处于不可中断睡眠状态的进程数(通常是在等待 I/O 完成)。
  2. Memory(内存)

    • swpd: 虚拟内存中被换出到交换空间的总量。
    • free: 可供立即使用的物理内存大小。
    • buff: 作为缓冲区使用的内存大小。
    • cache: 作为缓存使用的内存大小。
  3. Swap

    • si: 每秒从交换空间中换入到内存的大小。
    • so: 每秒从内存换出到交换空间的大小。
  4. IO(输入输出)

    • bi: 每秒从块设备接收的块数。
    • bo: 每秒发送到块设备的块数。
  5. System(系统)

    • in: 每秒产生的中断次数。
    • cs: 每秒产生的上下文切换次数。
  6. CPU(中央处理器)

    • us: 用户进程消耗 CPU 时间的百分比。
    • sy: 内核进程(系统)消耗 CPU 时间的百分比。
    • id: 空闲 CPU 百分比。
    • wa: 等待 I/O 完成所消耗的 CPU 时间百分比(高数值表明可能有严重的 I/O 瓶颈)。
    • st: 虚拟机在等待 hypervisor 分配 CPU 时间片的百分比(仅在虚拟环境中有效)。

除此之外,vmstat 还提供了其他选项:

  • -s-vmstat -s: 显示所有统计信息的总结,而不是连续更新。
  • -a: 显示活跃和非活跃内存的数量。
  • -m: 显示 slab 分配器的统计信息。
  • -d: 显示磁盘统计信息。
  • -p [disk partition]: 显示指定磁盘分区的统计信息。
  • -n: 忽略头部标题,对于脚本处理或连续输出更有利。

为了更深入地了解 vmstat 的功能和具体用例,查阅手册页 (man vmstat) 或相关文档是很有帮助的。

目录
相关文章
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
存储 算法 Linux
打破常规,Linux内核新的数据结构上场maple tree(下)
打破常规,Linux内核新的数据结构上场maple tree
|
Java
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
1478 0
|
前端开发 Java 中间件
【AgentScope Java新手村系列】(1)框架简介与环境搭建
本章带你快速入门AgentScope Java 2.0:从GitHub拉取v2.0.0-RC2源码、Maven编译安装,到纯Java构建HarnessAgent,接入DeepSeek等主流LLM,跑通首个可对话智能体——完成学习之旅的“第0步”。
581 0
【AgentScope Java新手村系列】(1)框架简介与环境搭建
|
7月前
|
安全 Java API
Spring Boot 4 升级实战:从3.x到4.0的分步升级保姆级指南
Spring Boot 4.0于2025年11月发布,基于Spring Framework 7.0,实现模块化(47个轻量自动配置)、JSpecify空安全校验、原生API版本控制等重大升级。镜像减19%、启动快33%,迁移平滑,3.5.x支持至2026年11月。(239字)
6362 1
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
6581 189
Grafana Loki,轻量级日志系统
|
Prometheus Kubernetes 监控
Kubernetes(k8s)高可用性集群的构建详细步骤
构建高可用Kubernetes集群涉及到的层面非常广泛,包括硬件资源的配置、网络配置以及集群维护策略的规划。因此,在实际操作中,可能还需要根据特定环境和业务需求进行调整和优化。
2771 19
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
4896 8