vmstat – 通过示例监控 Linux 中的内存和进程

2023-11-06

在 Linux 系统管理领域,监控和了解系统的性能对于确保其顺利运行至关重要。其中一种重要的监控工具是‘vmstat’– 多功能命令行实用程序,提供有关 Linux 系统内存、进程、IO 和 CPU 使用情况的深入统计数据。

在本文中,我们将深入研究 vmstat 命令的用法和各种选项,探索实际示例,并学习如何解释输出以诊断潜在的性能问题。

什么是 vmstat?

虚拟内存统计信息 (vmstat) 是一个 Unix/Linux 实用程序,用于收集和显示有关系统内存、CPU、进程和 IO 操作的信息。它是一个功能强大且易于使用的工具,可用于了解系统如何利用其资源、识别瓶颈和诊断性能问题。

安装

vmstat 预装在大多数 Linux 发行版上。但是,如果尚未安装,您可以通过安装“sysstat”包轻松获取它:

  • 对于基于 Debian/Ubuntu 的系统:
    sudo apt-get install sysstat 
    
  • 对于基于 RHEL/CentOS/Fedora 的系统:
    sudo yum install sysstat 
    

基本用法

vmstat命令的基本语法如下:

1
vmstat [options] [delay] [count]
  • options:修改命令行为或指定要显示的信息类型的标志。
  • delay:更新之间的时间间隔(以秒为单位)。默认值为 1 秒。
  • count:退出前显示的更新数量。默认情况下,vmstat 将无限期地继续运行。

要显示基本系统统计信息,只需运行不带任何选项的命令:

vmstat 

了解 vmstat 输出

vmstat 命令的输出以表格格式显示,每一行代表特定时间系统状态的快照。

输出中的列是:

  1. Procs
  • r:可运行进程的数量(正在运行或等待运行时)。
  • b:处于不间断睡眠状态的进程数。
  • Memory
    • swpd:使用的虚拟内存量(以 KB 为单位)。
    • free:空闲内存量(以 KB 为单位)。
    • buff:用作缓冲区的内存量(以 KB 为单位)。
    • cache:用作缓存的内存量(以 KB 为单位)。
  • Swap
    • si:从磁盘换入的内存量(以 KB/秒为单位)。
    • so:换出到磁盘的内存量(以 KB/秒为单位)。
  • IO
    • bi:从块设备接收到的块数(块/秒)。
    • bo:发送到块设备的块数(块/秒)。
  • System
    • in:每秒中断数,包括时钟。
    • cs:每秒上下文切换的次数。
  • CPU
    • us:运行非内核代码所花费的时间百分比(用户时间)。
    • sy:运行内核代码所花费的时间百分比(系统时间)。
    • id:闲置时间的百分比。
    • wa:等待IO所花费的时间百分比。

    实际例子

    • 每 2 秒显示连续更新:
      vmstat 2 
      
    • 每 2 秒监控一次系统统计信息,总共 5 次更新:
      vmstat 2 5 
      
    • 只显示CPU相关信息:
      vmstat -c 
      
    • Display active and inactive memory:
      vmstat -a 
      

      此命令报告系统中的活动和非活动内存,从而更深入地了解内存使用模式。

    • Display timestamps:
      vmstat -t 
      

      此命令向每一行输出添加时间戳,以便更轻松地跟踪随时间的变化。

    • Display only specific fields:
      vmstat -s
      

      此命令显示有关系统虚拟内存使用情况的更详细的逐字段报告。

    • Display disk statistics:
      vmstat -d
      

      此命令显示磁盘活动统计信息,例如读取、写入和 I/O 操作。

    • Display output in a specific unit:
      vmstat -S unit
      

      将“unit”替换为所需的测量单位(k:千字节,K:1000 字节,m:兆字节,M:1000000 字节)。例如,vmstat -S m 将以兆字节为单位显示输出。

    解释 vmstat 输出

    通过分析 vmstat 的输出,您可以识别潜在的系统瓶颈和性能问题。以下是一些帮助您解释结果的指南:

    • 高可运行进程(procs ‘r’列):如果可运行进程的数量持续较高,则可能表明您的系统正在经历高 CPU 负载,您可能需要优化应用程序或升级 CPU。
    • 大量不间断睡眠进程(procs ‘b’ 列):大量进程处于不间断睡眠状态可能表明您的系统遇到 IO 瓶颈,这可能是由磁盘访问速度慢或内存不足引起的。
    • 内存使用情况(内存列:swpd、free、buff、cache):监控内存使用情况以确保您的系统有足够的可用内存。如果‘swpd’值始终很高,可能表明您的系统使用了过多的交换空间,这会显着降低性能。考虑优化您的应用程序或添加更多物理内存。
    • 交换活动(交换列:si、so):频繁的交换可能会导致性能不佳。如果“si”和“so”值始终很高,则可能表明您的系统使用了过多的交换空间。您可能需要优化应用程序或添加更多物理内存。
    • IO 活动(IO 列:bi、bo):高 IO 活动可能会导致性能瓶颈。如果‘bi’ and ‘bo’值始终很高,这可能表明您的系统正在经历繁重的磁盘活动。考虑优化您的应用程序、升级您的存储系统或将负载分布到多个磁盘上。
    • CPU 使用情况(CPU 列:us、sy、id、wa):监控 CPU 使用率以确保您的系统不会负担过重。高的‘us’ and ‘sy’值表明 CPU 花费大量时间执行用户和系统进程。如果这些值始终很高,请考虑优化您的应用程序或升级您的 CPU。高“wa”值表明 CPU 花费大量时间等待 IO,这可能是 IO 瓶颈的迹象。

    结论

    vmstat 是一款功能强大且多功能的 Linux 系统监控工具,可提供有关内存、进程、IO 和 CPU 使用情况的宝贵见解。通过了解 vmstat 的输出并使用它来诊断潜在的性能问题,您可以优化系统并确保其平稳高效地运行。

    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    vmstat – 通过示例监控 Linux 中的内存和进程 的相关文章

    随机推荐

    • C++库函数——map与set

      目录 1 关联式容器是什么 2 键值对 3 set set的介绍 set的模板参数列表 set的构造 set的迭代器 set的容量 set的修改与操作 set的使用举例 4 multiset multiset的介绍 multiset的使用举
    • 内核current宏解析

      内核 current宏解析 Technorati 标签 current thread info 在内核中 可以通过current宏来获得当前执行进程的task struct指针 现在来简要分析以下 最原始的定义如下 define curre
    • sql必知必会一图总结梳理

      关注公众号 JustGoForIt 免费领取sql必知必会电子书
    • 环境准备与小程序首页的运行逻辑

      环境准备 上传云函数 getCustomerOpenid 上传云函数到云环境 xiongyuqingcloud 调用云函数 Promise Cloud callFunction Object object 返回一个 Promise 对象 所
    • Eclipse:The selection cannot be launched,and there are no recent launches

      报错 Eclipse工具启动提示the selection cannot be launched and there are no recent 经网上查找了解 缺少String args 好久没学java了暴露了 修改后run 错误代码
    • 工具篇——1、TMUX

      目录 工具篇 一 TMUX 1 安装 2 概念 3 具体操作 3 1 会话 3 2 窗口 3 3 窗格 4 TMUX 配置 5 结对编程 工具篇 本系列专门用于记录一些软件或者小工具的使用 工欲善其事必先利其器 拥有称心如意的工具 可以大大
    • 来!一起捋一捋机器学习分类算法

      大数据文摘出品 来源 builtin 编译 邢畅 刘兆娜 李雷 钱天培 说起分类算法 相信学过机器学习的同学都能侃上一二 可是 你能够如数家珍地说出所有常用的分类算法 以及他们的特征 优缺点吗 比如说 你可以快速地回答下面的问题么 KNN算
    • 获取PancakeSwap Price

      导入 ethers js 接口文档 ethers js 中文文档 深入浅出区块链
    • 网络层(IP)和数据链路层(以太网)的关系

      目录 一 路由选择 二 IP协议中的路由选择 三 数据链路层协议 以太网 1 负责的工作 2 核心的协议 3 举例说明传输层 网络层 数据链路层之间的关系 4 描述数据使用的不同术语 很少区分 5 以太网帧格式 四 mac地址 数据链路层的
    • 2024王道408数据结构 P144 T11

      2024王道408数据结构 P144 T11 思考过程 题目说要我们找到元素值为x的结点 删除以它为根的子树 并释放相应的空间 这里要注意题目让我们删除的是根的子树包括根 那读明白了题目的意思我们就开始构思 先是要遍历二叉树 找到元素值为x
    • 『Android Studio』用Fragment实现一个简易新闻浏览界面

      Fragment意思为碎片 片段 在Android中有些Activity在手机上看起来很美观 但放在屏幕更大的平板类的设备上 可能就不一样了 而Fragment能在一个Activity中内嵌多个独立的小Activity 有效的解决了app在
    • 海盗分金币问题 编程+思路 C++

      来自招银网络科技笔试测试岗位的一道题目 海滩上有一堆金币 n个海盗来分 第一个海盗把这堆金币平均分成3份 如果不够就从自己口袋拿出来补齐 并拿走了一份 第二个海盗把剩下的金币又平均分成3份 如果不够再从自己口袋补齐 并拿走了一份 第三个 第
    • 利用iText将多张图处转为一个pdf

      项目需要将多张JPG格式的图片转为一个PDF再进行后续处理 百度查资源看博客发现用iText比较简单 也没想到会这么简单 刷新了我的彩虹心 话不多说 直接上code 项目用的是maven进行管理的 所以最开始需要引入依赖 如下
    • ROS STAGE教程4(Melodic Stage-4.3)stage_ros Segmentation fault (core dumped)

      针对以前适用于stage 4 1 ROS Kinetic的world文件无法用于ROS Melodic系统 一致出现问题 Segmentation fault core dumped 然后退出 步骤如下 catkin ws src目录下 g
    • TCP/IP 协议是一个“有层次的协议栈”

      在上一讲中 我简单提到了 TCP IP 协议 它是 HTTP 协议的下层协议 负责具体的数据传输工作 并且还特别说了 TCP IP 协议是一个 有层次的协议栈 在工作中你一定经常听别人谈起什么 四层负载均衡 七层负载均衡 什么 二层转发 三
    • VHDL实现4线-16线译码器

      源代码 library ieee use ieee std logic 1164 all entity decoder4 16 is port i in std logic vector 3 downto 0 y out std logic
    • ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

      本案例为一个 threejs 的特效网页 大小球体进行包裹 外球体为透明材质 但是进行了线框渲染 使其能够通过外球踢查看其内球体 注 案例参考源于互联网 在此做代码解释 侵删 本案例除 ThreeJS 外不适用任何第三方框架 放心食用 懒的
    • 什么是 .htaccess 文件和基本用途

      什么是 htaccess htaccess 超文本访问 是一个有用的文件 对于许多 Web 服务器来说 可以根据目录应用设置 它允许在运行时覆盖 Apache 服务器的默认配置 使用 htaccess 我们可以轻松地在运行时启用或禁用任何功
    • 如何在 Ubuntu 20.04 上安装 CodeIgniter

      Codeigniter 是功能强大的 PHP 框架 用于快速开发全功能应用程序 它是一个由开发者为开发者构建的开源PHP框架 Codeigniter 4 是可用于应用程序开发的最新版本 本教程将帮助您在 Ubuntu 系统上安装 CodeI
    • vmstat – 通过示例监控 Linux 中的内存和进程

      在 Linux 系统管理领域 监控和了解系统的性能对于确保其顺利运行至关重要 其中一种重要的监控工具是 vmstat 多功能命令行实用程序 提供有关 Linux 系统内存 进程 IO 和 CPU 使用情况的深入统计数据 在本文中 我们将深入