夜雨聆风学习资料网

ARTICLE · 1148741

Linux 6.12 源码深度剖析: ext4_writepages

Linux 6.12 源码深度剖析: ext4_writepages

数据库服务器一到高峰期就卡,甚至短暂假死。查半天,根子出在 Ext4 文件系统的回写机制上。

用户数据先塞进内存页缓存。等脏页堆到阈值,系统才调 ext4_writepages 往磁盘刷。这函数得协调 VFS、内存管理和日志层。要是写入太快,脏页越积越多,新写入就得被卡住等刷盘。

更扎的是锁和日志。高并发下频繁分配块,锁竞争直接飙升。加上 JBD2 日志提交要等磁盘 I/O,延迟一下就全跟着堵。说白了,回写通道一堵,应用看着就像死机了。

排查先盯 /proc/meminfo 里的 Dirty 大小。接着调 vm.dirty_ratio,压低突发 I/O。挂载选项建议保留默认的 data=ordered。它比全日志模式快,也比无日志模式稳。

最后用 ftrace 抓一下调用栈。看看到底是回写慢还是日志卡,再决定怎么下手。

原文Linux 6.12 源码深度剖析: ext4_writepages
作者提示: 个人观点,仅供参考
四川,7小时前,

相关学习资料