ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

linux-command 仓库详解 vmstat:Linux 虚拟内存与系统性能状态监控命令

linux-command 仓库详解 vmstat:Linux 虚拟内存与系统性能状态监控命令 文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载vmstatVirtual Memory Statistics是 Linux 系统自带的性能快照工具名字看似只针对虚拟内存状态实际输出却同时覆盖进程、内存、交换分区、磁盘 IO、中断与 CPU 六大维度是系统管理员做性能初检时的首选命令之一。本文以 linux-command 仓库中的 command/vmstat.md 为骨架逐列拆解其输出字段含义、常用选项与组合用法并结合仓库中 free、iostat、mpstat、dstat 等命令文档做交叉印证帮助读者在系统卡顿、内存告警、IO 瓶颈等场景下快速定位问题根因。vmstat 是什么vmstat 命令的含义为显示虚拟内存状态Virtual Memory Statistics但正如 command/vmstat.md 所述它可以报告关于进程、内存、I/O 等系统整体运行状态。它适合回答三类典型问题CPU 是否饱和运行队列长度r 列、用户态/内核态占用比例内存是否够用空闲内存、缓冲/缓存、交换区的换入换出速率磁盘 IO 是否成为瓶颈每秒读写块数bi/bo与 CPU 等待 IO 的时间wa。在 linux-command 仓库的索引文件 dist/data.json 中vmstat 被登记为d: 显示虚拟内存状态即仓库 600 多个 Linux 命令速查文档的一员可直接在 Web 版速查页面检索阅读。语法与选项vmstat(选项)(参数)选项说明-a显示活动内页 -f显示启动后创建的进程总数 -m显示slab信息 -n头信息仅显示一次 -s以表格方式显示事件计数器和内存状态 -d报告磁盘状态 -p显示指定的硬盘分区状态 -S输出信息的单位。各选项的适用场景补充说明-a把默认的内存字段拆分为active活动与inactive非活动两类内页便于观察内存页的真实活跃度-f输出的是本次开机以来 fork 出的进程总数可用于观察系统整体进程创建频率-m输出内核 slab 分配器slab allocator信息内核对象、inode、dentry 等缓存都从这里分配排查内核态内存占用时很有用-n配合定时刷新使用时只在第一屏打印表头避免刷屏时反复输出标题行适合持续观察场景-s以表格形式输出事件计数器与内存状态例如总内存、空闲内存、换入换出页数、中断次数等累计值适合一次性快照-d按磁盘设备如 sda、vda输出读写统计颗粒度比默认整体 IO 更细-p进一步细化到某个分区如vmstat -p /dev/sda1-S指定输出信息的单位常见用法如-S kKB、-S mMB默认一般以 KB 为单位内存较大或需要人工读数时建议显式指定单位避免歧义。参数说明事件间隔状态信息刷新的时间间隔秒。例如vmstat 3表示每 3 秒输出一行次数显示报告的次数。例如vmstat 3 5表示每 3 秒输出一次共输出 5 行后退出只写间隔不写次数时命令会持续运行直到手动中断CtrlC。不带任何参数直接运行vmstat输出的是系统自启动以来的平均值适合一眼概览带间隔参数后才是一段时间内的实时采样。这一点与仓库中 mpstat 文档的提醒一致不带参数输出的是启动以来的平均值看不出瞬时变化要正确反映系统情况需要正确使用命令的参数vmstat 也需要注意这一问题。实例逐列解读默认输出vmstat 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0 0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0这个示例来自 command/vmstat.md每 3 秒采样一行。示例中系统处于基本空闲状态CPU 空闲率id接近 100%内存与交换区均无持续压力。下面按列分组逐项解读。Procs进程字段含义判断要点r运行队列中进程数量即等待 CPU 调度的进程数这个值也可以判断是否需要增加 CPU长期大于 1 说明 CPU 已出现排队b等待 IO 的进程数量数值持续偏高说明有进程阻塞在磁盘等 IO 上需要说明的是r 值判断长期大于 1 即需增加 CPU是仓库文档给出的经验阈值实际还应结合机器核数、wa 等列综合判断——多核机器上短时间 r 大于核数是正常的关键是观察其是否长期维持高位。Memory内存字段含义判断要点swpd使用虚拟内存交换分区大小如果 swpd 的值不为 0但是 si、so 的值长期为 0这种情况不会影响系统性能free空闲物理内存大小空闲内存少不一定代表内存不够见下文si/so 才是关键buff用作缓冲的内存大小针对磁盘块的读写缓存cache用作缓存的内存大小cache 值大说明缓存的文件数量多如果频繁访问的文件都能被 cache 命中磁盘的读 IObi会非常小关于 buff 与 cache 的区别仓库中的 free 文档有更详细的阐述page cache 用来缓存文件数据buffer cache 用来缓存磁盘数据。在有文件系统的情况下对文件操作时数据会缓存到 page cache如果直接采用 dd 等工具对磁盘进行读写数据会缓存到 buffer cache。理解这一点就能明白为什么cache 大、bi 小往往是文件读多且命中率高的良性表现。Swap交换区字段含义si每秒从交换区写到内存的大小即由磁盘调入内存swap inso每秒写入交换区的内存大小即由内存调入磁盘swap out这是判断内存是否真正紧张的关键两列。内存够用的时候这两个值都是 0如果这两个值长期大于 0说明系统在内存与磁盘之间反复搬运页面磁盘 IO 和 CPU 资源都会被消耗系统性能会受到影响。仓库文档特别强调了一个常见误区不能只看空闲内存free少就断定内存不够用。当 free 很少甚至接近 0 时还要结合 si 和 so 一起看——如果 free 很少但 si、so 也很少大多数时候是 0那么不用担心因为 free 少往往只是内存被 page cache 占用的正常表现系统性能不会因此受到影响。这一判断逻辑与 free 文档完全一致对应用程序来说buffers/cached 是可以被快速回收挪用的内存可用内存 系统 free memory buffers cached。IO磁盘读写注意现在的 Linux 版本块的大小为 1kb。字段含义bi每秒读取的块数bo每秒写入的块数判断要点随机磁盘读写的时候这两个值越大如超出 1024k能看到 CPU 在 IO 等待wa的值也会越大。也就是说 bi/bo 与 wa 往往联动升高共同指向磁盘 IO 负载过重。system系统字段含义in每秒中断数包括时钟中断cs每秒上下文切换数判断要点上面两个值越大会看到由内核消耗的 CPU 时间sy会越大。上下文切换过高常见于进程/线程数过多的场景例如线程池配置过大、锁竞争激烈此时中断与切换开销本身就在蚕食 CPU。CPU以百分比表示字段含义判断要点us用户进程执行时间百分比user timeus 值比较高说明用户进程消耗的 CPU 时间多如果长期超过 50%就该考虑优化程序算法或者进行加速sy内核系统进程执行时间百分比system timesy 值高说明系统内核消耗的 CPU 资源多这并不是良性表现应该检查原因waIO 等待时间百分比wa 值高说明 IO 等待比较严重这可能由于磁盘大量随机访问造成也有可能磁盘出现瓶颈块操作id空闲时间百分比与 wa 互补id 高且 wa 低才是健康的空闲输出示例中还包含ninice 优先级调整后的用户态时间与ststeal 时间两列原文档未展开可结合仓库中其他命令文档理解mpstat 文档中%nice指在用户级别处理经 nice 降级的程序所使用 CPU 的百分比%steal指在管理程序为另一个虚拟处理器服务时虚拟的一个或多个 CPU 在非自愿等待中花费的时间百分比见 command/mpstat.md。在云主机或虚拟机环境中若 st 长期不为 0说明宿主机 CPU 资源存在竞争。实战与仓库其他性能命令交叉验证vmstat 是整体快照定位到具体瓶颈后通常需要与其他命令配合做更细粒度的排查linux-command 仓库为这些命令都收录了独立文档磁盘 IO 细化当 vmstat 的 wa、bi、bo 异常时用 iostat 查看具体设备iostat -x 1可输出 r/s、w/s、r_await、w_await、%util 等扩展指标。其中iowait 指在一个采样周期内有百分之几的时间 CPU 处于空闲状态并且至少有一个未完成的磁盘 IO 请求与 vmstat 的 wa 含义同源若 %util 接近 100%说明该磁盘可能已成为瓶颈。CPU 逐核细化vmstat 给出的是整机 CPU 汇总用 mpstat 的mpstat -P ALL 2 3可以观察每个物理 CPU 的 usr/sys/iowait/irq/soft 明细定位是单核热点还是整体过载。持续监控与落盘dstat 文档明确指出dstat 是一个用来替换 vmstat、iostat、netstat、nfsstat 和 ifstat 的工具支持彩色界面、即时刷新与 CSV 输出dstat --output /root/dstat.csv适合需要把监控数据导出成图表的长时观测。内存与进程补充free 给出内存总量与 buffers/cached 的可回收视角top 则能按进程排序找出具体吃 CPU 或内存的进程形成vmstat 发现问题 → top/ps 定位进程 → iostat/mpstat 验证根因的标准排查链路。典型问题排查速查现象关注字段可能原因与动作系统响应慢r 长期 1procs/rCPU 排队严重考虑扩容或优化并发模型free 接近 0 但 si/so 为 0free、si、so内存被 page cache 合理占用无需紧张si/so 长期 0si、so真实的内存交换压力考虑加物理内存或优化内存占用wa 持续升高且 bi/bo 很大wa、bi、bo磁盘 IO 瓶颈检查随机读写负载、考虑换更快的磁盘或调整应用us 长期 50%us用户程序计算密集考虑优化算法或加速sy 异常偏高sy、in、cs内核开销大检查中断/上下文切换来源、驱动或系统调用频率虚拟机中 st 不为 0st宿主机 CPU 资源竞争考虑迁移或调整虚拟核数小结vmstat 的核心价值在于一屏看全貌进程队列、内存缓存、交换压力、磁盘 IO、中断切换、CPU 分布六大维度一次输出配合间隔与次数参数即可完成短期采样。需要记住两条最重要的判断原则内存是否够用看 si/so 而非 free磁盘是否瓶颈看 bi/bo 与 wa 的联动。结合本仓库的 iostat、mpstat、free、top 等命令文档即可从 vmstat 的整体快照逐步下钻到具体设备/进程级别的精确诊断。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐linux-command 命令手册nstat 详解——用内核 SNMP 计数器监控网络接口状态linux command 命令手册nstat 详解——用内核 SNMP 计数器监控网络接口状态 nstat 是一个简单而实用的网络诊断工具专门用于监视 L文档教程Linux 内核模块信息查询实战linux-command 仓库 modinfo 命令详解Linux 内核模块信息查询实战linux command 仓库 modinfo 命令详解 本文以 linux command 仓库中 modinfo 命令文文档教程linux-command 仓库详解bash export 命令完整指南linux command 仓库详解bash export 命令完整指南 export 是 bash 内建命令用于为 shell 变量或函数设置导出属性文档教程上一篇Feast Cassandra / Astra DB 在线存储配置模型、数据读写与多数据中心路由全解析下一篇LeetCode 1538 Guess the Majority in a Hidden Array 题解用 O(n) 次四元组相等查询推断隐藏数组众数下标创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表