商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看系统内存的脏数据量

Linux怎么查看系统内存的脏数据量

  发布于2026-07-01 阅读(0)

扫一扫,手机访问

要排查Linux系统的脏页问题,最精准、开销最小的手段莫过于直接读取/proc/meminfo文件中的Dirty:Writeback:两行——单位是kB,简单明了。Dirty代表已经修改但尚未写回磁盘的字节数,Writeback则代表正在被内核刷入磁盘的数据量。相比之下,vmstat -sm虽然也能看,但它的dirty列是页数,需要乘以4096换算,而且刷新间隔较长,对瞬态高峰不敏感。很多人以为执行sync就能让Dirty归零,其实sync只是触发刷盘请求,并不阻塞等待完成,真正该关注的是Writeback是否降为零。另外,当Dirty比例超过vm.dirty_ratio时,内核会主动阻塞新写入——这不是错误,而是系统施加的背压机制。

Linux怎么查看系统内存的脏数据量

怎么看当前 Dirty 字节数和 Writeback 状态

直接看 /proc/meminfo 里的 Dirty:Writeback: 行,单位是 kB。这是最准确、开销最小的方式。必须强调一点:这两个字段的大小写不敏感,但字段名固定为 Dirty:Writeback:,用 cat /proc/meminfo | grep -i dirty 就能拿到结果。

  • Dirty::已修改但还没开始写回磁盘的页面总字节数。
  • Writeback::正在被内核提交IO、正往磁盘刷的数据量。
  • 别只扫一眼——脏页可能在你查看的瞬间正在被刷走,Writeback: 非零时 Dirty: 下降是正常现象。

vmstat -sm 能不能替代 /proc/meminfo

能看,但精度和语义有差异。不过得提醒一句:vmstat -smdirty 列给出的是“待刷页数”(page 数),而不是字节数。而 /proc/meminfo 给的是真实字节数,更直观也更可靠。

  • vmstat -sm 输出中的 dirty 是 page count(默认 4KB/page),需乘以 4096 才能换算成字节,容易误判。
  • vmstat 默认刷新间隔长(如 1 秒),对瞬态高峰不敏感;/proc/meminfo 是即时快照。
  • 监控脚本里建议用 grep -oP 'Dirty:\s*\K\d+' 直接提取数值,避免解析整行出错。

为什么 sync 后 Dirty 不归零

sync 只是触发刷盘请求,不是阻塞等待完成。内核按 vm.dirty_ratiovm.dirty_background_ratio 和设备吞吐能力分批调度IO,尤其在 SSD 写放大或 HDD 随机写场景下,Writeback: 可能持续几十秒甚至几分钟。所以看到 syncDirty: 几乎不变——别慌,这很正常,不代表失败。

  • 判断是否“刷完”,应轮询 Writeback: 是否降到 0,而不是盯 Dirty:
  • 高负载下强行等 Dirty: 归零可能卡住业务,更稳妥的做法是用 ionice -c 3 sync 降低刷盘优先级。

Dirty 比例超阈值会怎样

Dirty: 字节数 ≥ MemTotal × vm.dirty_ratio / 100,内核会阻塞新写入(write() 系统调用卡住),直到脏页回落到 vm.dirty_background_ratio 以下。留意,这不是系统出错的信号,而是背压机制——系统在主动踩刹车。

  • 查阈值:运行 sysctl vm.dirty_ratio vm.dirty_background_ratio
  • 计算临界值:比如 MemTotal: 131755760 kBvm.dirty_ratio = 20 时,临界点 ≈ 26.3 GB。
  • 如果 Dirty: 长期卡在临界值 80% 以上,说明后台刷盘跟不上写入节奏,得去查IO负载或调整参数。
  • SSD 上盲目调高 vm.dirty_ratio 可能导致突发写入时卡顿更剧烈,不是越大胆越好。

实际观察脏页行为,关键不是“有没有”,而是“涨得快不快、落得慢不慢、卡不卡写”。/proc/meminfo 里那两行数字,得结合 vmstat 1bi(块入)和 bo(块出)列一起看,才看得清全貌。

本文转载于:https://www.php.cn/faq/2748158.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注