top 命令的load average和vmstat 的r列和b列的关系是什么?区别又是什么?

news/2025/11/5 21:23:29/文章来源:https://www.cnblogs.com/zhangpeiyao/p/19194625

最近在复习linux系统负载问题排查,主要涉及到cpu,内存,io,网络等指标的一些习惯的linux命令,发现top命令的load average指标和vmstat指标的r列以及b列似乎有些联系,但是又搞不懂具体是什么关系,又有什么区别,于是便上网查询整理了一下,以便日后学习工作中再次用到

# 一、vmstat 的 r 列 含义

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  123456 123456 123456 123456   0    0    10    20  100    200 10  5 80  5  0

r(running or runnable):

表示处于运行态(running)或就绪态(runnable)的进程数,即正在使用 CPU 或等待 CPU 调度的进程数量。
✅ 不包括处于不可中断睡眠(D 状态)的进程。

b(blocked):

在较老版本的 vmstat 中,b 表示阻塞等待资源的进程数。
⚠️ 但在现代 Linux(自 procps-ng 修订后)中,b 列实际上表示的是处于不可中断睡眠状态(TASK_UNINTERRUPTIBLE)的进程数,即通常所说的“D 状态”进程(如等待磁盘 I/O)。
📌 注意:man vmstat 中对 b 的描述可能滞后,实际行为以内核和 procps 版本为准。现代 Linux 中,b ≈ D 状态进程数。

二、Load Average 的组成

Linux 的 Load Average(通过 /proc/loadavg 获取)定义为:
系统中 处于可运行状态(TASK_RUNNING) 或 不可中断睡眠状态(TASK_UNINTERRUPTIBLE) 的进程的指数加权移动平均数。

也就是说:

Load Average ≈ avg( runnable 进程数 + D状态进程数 )

这是 Linux 特有的设计(与传统 Unix 不同,后者通常只统计 runnable 进程)。

三、top 中的 Load Average

top 命令顶部显示的 load average(如 load average: 1.25, 0.98, 0.76)直接来自 /proc/loadavg,因此其含义与上述一致:
✅ 包含 runnable + D 状态进程。

四、关键对比:vmstat 的 r + b 是否等于 Load Average?

理论上:
r ≈ runnable 进程数(对应 TASK_RUNNING)
b ≈ D 状态进程数(TASK_UNINTERRUPTIBLE)
Load Average ≈ runnable + D 状态进程 的时间加权平均值
实际上:
r + b 是某一瞬间的快照值(瞬时值)
Load Average 是过去 1/5/15 分钟的平滑平均值(带指数衰减)

因此:
❌ r + b 的瞬时值 ≠ Load Average 的数值
✅ 但 r + b 的长期趋势应与 Load Average 一致。如果 load 很高,通常 r + b 也会较大。
举例说明:

假设系统有 4 个 CPU 核心:
某时刻 vmstat 显示:r=3, b=2 → 瞬时活跃任务数 = 5
但过去 1 分钟大部分时间系统很空闲,只有偶尔 spike → 1 分钟 load average 可能只有 1.0

反之:
如果持续有 6 个任务(r=4, b=2)运行几分钟 → 1 分钟 load average 会逐渐接近 6

五、总结对比表

image

六、实用建议

若 Load Average 高但 r 很小、b 很大 → 很可能是 I/O 瓶颈(如慢磁盘、NFS 卡住)
若 Load Average 高且 r 很大 → CPU 资源不足,需优化代码或扩容
使用 ps aux awk '$8 ~ /^D/' 查看 D 状态进程
使用 iostat -x 1 查看 I/O 利用率(%util)和等待时间(await)

✅ 结论:

综上vmstat 的 r 列不包含 D 状态进程,b 列在现代 Linux 中代表 D 状态进程数
Load Average = runnable + D 状态进程 的时间平均值
r + b 是瞬时值,Load Average 是历史平均值,二者概念相关但数值不等价

因此理解这一点,对精准定位系统瓶颈至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/957149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级程序语言设计第4次作业

这个作业属于:https://edu.cnblogs.com/campus/fzu/gjyycx 这个作业的要求:https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14577 学号:102500416 姓名:王浩宇 第一项 运行以下代码12第二项老师布置的题目1d…

11/5

补课恢复了,三个家长找我补课,我现在真是爆炸有钱,然后再备考六级

网页打包EXE/APK/IPA出现乱码时怎么回事?

最近有几个朋友在把网页项目打包成 EXE(电脑程序)、网页打包APK(安卓应用) 或 网页打包IPA(苹果应用) 软件时,会遇到一个恼人的问题: 页面出现乱码, 原本在浏览器中一切正常,文字清晰可读,但一打包成应用,界面上的…

Ai元人文:个人阐述疏漏声明与系统性术语修正说明

Ai元人文:个人阐述疏漏声明与系统性术语修正说明 在“AI元人文”理论体系的构建与演进过程中,我的认知亦在不断深化。我意识到,过往在多篇文章中使用的、以“博弈”为核心的一组关键术语,其表述未能精准传达理论的…

基于AWS构建的微服务集群的最佳实践

在AWS上部署微服务集群时,限流、熔断、降级的最佳实践以AWS托管服务为核心,结合开源组件分层实现——既利用AWS的高可用性和托管优势减少运维成本,又通过标准化开源工具保证灵活性,同时遵循“边缘防护+服务内防护”…

六校联考 20251105C. 物品采购(judge)

为什么写这个题解呢,因为感觉真的很久都没有写过这种屎长代码了。 \(type=1\) 手画不难发现,如果一个序列有 \(\le 2\) 个颜色段,那么它的贡献是 \(0\),因为任意一个子序列都会是子段。 否则贡献是 \(n-2\),因为可…

k3s安装metallb负载均衡

先记录配置过程,后续补充详细介绍1.安装metallb负载均衡器 1.1.配置内核转发参数 sudo tee /etc/sysctl.d/90-k8s-lb.conf <<EOF # 打开路由转发(MetalLB 必需) net.ipv4.ip_forward = 1 # 让 speaker 能及时…

PG故障处理:PG_AUTO_FAILOVER自动切换失败的故障处理

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。1、故障背景…

读书笔记:分区不一定能让查询更快——关键要看使用场景

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

quick save

s and l群星联结,调不动了; // code by 樓影沫瞬_Hz17 #include <iostream> #include <map> #include <vector> #include <algorithm>struct Chara; struct Talent; struct Attack;int turn…

cg0EoeZwd/bdvtAmh0q4PjjA4Pc=

这是郑州西亚斯学院智能体创新大赛的示例文件,如果你看到这个信息,说明这个文件的内容已经正常发送。

openwrt 使用 移动WIFI USB RNDIS 上网

最初为了简单,是使用 无线中继方式上网,但是有时不稳定,而移动WIFI 也支持 RNDIS 方式。 打开编译配置以下功能: 编译完成后,升级后插入USB 线测试[ 110.492259] usb 1-1: new high-speed USB device number 2 u…

【Agent】 ACE(Agentic Context Engineering)源码阅读笔记 ---(2)--- 训练

[Agent] ACE(Agentic Context Engineering)源码阅读笔记---(2)训练 目录[Agent] ACE(Agentic Context Engineering)源码阅读笔记---(2)训练0x00 概要0x01 AdapterBase1.1 定义1.2 核心流程1.3 主要功能1.4 Off…

Codeforces Global Round 28 VP 记录

Codeforces Global Round 28 VP 记录 Dashboard - Codeforces Global Round 28 - Codeforces 之前做过 G,赛时从 A 做到了 G,赛后做了 H,看题解会了 I1,I2 还不会。 CF2048A Kevin and Combination Lock 判断是否是…