LWN:文件系统回写并行化!

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03 需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。 阅读详情

关注了就能看到更多这么棒的文章哦~

Parallelizing filesystem writeback

By Jake Edge
June 12, 2025
LSFMM+BPF
Gemini flash translation
https://lwn.net/Articles/1024402/

文件系统回写是将页面缓存(page cache)中“脏”(已写入)数据刷新到存储设备的过程。在 2025 年 Linux 存储、文件系统、内存管理和 BPF 峰会(LSFMM+BPF)上,Anuj Gupta 主持了一场关于并行化回写过程所做工作的存储和文件系统联合会议。现有单线程回写所遇到的一些性能问题,在去年峰会的一次会议上曾被提及,当时讨论了并行回写的想法。

Gupta 首先指出,议题提案的发布者 Kundan Kumar 原本应主持本次会议,但他未能出席。Kumar 和 Gupta 都一直在开发一个并行回写原型;本次会议旨在收集关于该原型的反馈。

目前,缓冲 I/O 的回写是单线程的,尽管应用程序正在发出多线程写入,这就可能导致出现竞争。在内核中,后备存储设备由一个BDI (块设备信息, struct backing_dev_info )表示,每个 BDI 都包含一个单一的回写线程,用于处理其中嵌入的struct bdi_writeback。每个 bdi_writeback 都带有一个需要回写的 inode 列表和一个delayed_work 实例,这使得整个过程是单线程的。

Gupta 表示,根据 Dave Chinner 和 Jan Kara 在议题提案讨论中的想法,他与 Kumar 添加了一个 struct bdi_writeback_ctx 来包含 bdi_writeback 的上下文信息。BDI 中增加了一个回写上下文数组,这使得一个 BDI 可以有多个线程执行回写。这可以在 Kumar 于五月底发布的补丁系列中看到。他们认为可以增加两个并行度级别,但在原型中,他们专注于高层并行,将低层并行留待后续工作。

Gupta 说,高层并行根据文件系统几何结构来划分工作。例如,XFS 具有分配组(allocation groups),可以用于将需要回写的 inode 划分到 BDI 的不同独立上下文中。低层并行可以通过在 bdi_writeback 中设置多个 delayed_work 条目来实现;在该层,不同类型的文件系统操作,例如 XFS 的块分配与纯覆盖写入,可以由独立的工作队列(workqueue)处理。

Christoph Hellwig 不确定分配组是否是用于回写 inode 分区(sharding)的正确选择。Gupta 表示,测试在使用分配组时哪些工作负载会受益将非常重要。并行回写将是一个可选功能;如果它对用户的工作负载没有益处,用户可以禁用它。

Amir Goldstein 询问了当前单线程回写瓶颈的严重程度。Gupta 表示他没有相关数据。Chris Mason 说,在他的测试中,这在很大程度上取决于是否启用了大页(large folios);最容易看出单线程回写性能问题的方法是为 XFS 禁用大页。在一些简单的测试中,当禁用 XFS 的大页时,他在内核回写线程饱和之前能达到大约每秒 800MB 的速度。启用大页后,这个数字提高到大约每秒 2.4GB。

Hellwig 好奇在没有大页的情况下,周期花费在哪里。Mason 说他记不清细节了,不过页面被大量移动到不同的列表中。Matthew Wilcox 建议,XArray 应用程序接口(API)可能也是问题的一部分,因为没有 API 可以清除一系列页(folios)上的脏位。如果内核是逐个清除这些位,那可能是一个瓶颈;它可以被修复,但他还没有找到时间去做。

Jeff Layton 表示,网络文件系统需要某种方式来限制回写过程中的并行化程度。可能存在底层网络状况,需要限制并行回写。Gupta 承认了这一需求,Hellwig 也表示本地文件系统有时可能也需要这样做。Hellwig 希望看到改变的一点是 Btrfs 内部用于通过多个线程进行带压缩和校验和回写的机制;拥有一个通用的多回写线程解决方案“可以移除大量冗余代码”。他担心其他文件系统会采用那段代码,因此拥有一个通用解决方案可以避免这种情况发生;Mason 表示他不反对这个想法,尽管可能存在需要特殊处理回写的大文件。

通过远程连接,Jan Kara 表示他听到的情况是,大多数人的兴趣在于低层并行,这将并行化单个 inode 的回写。他提醒说,这样做存在各种问题,包括可能影响数据完整性度量的问题,因为写入操作会以不同的顺序进行。

Hellwig 表示,用于跟踪回写 inode 的“类似全局的链表”是一种已知会导致可伸缩性问题的数据结构。增加更多线程来处理这些列表会使情况变得更糟;他想知道是否改用 XArray 会更好。使用分配组来分片 inode 列表(或 XArray)对 XFS 来说是有意义的——其他文件系统可能有自己显而易见的分片选择——但线程的管理可以独立于列表的管理。可以使用其他标准来确定处理特定 inode 的线程。

Mason 表示同意,并想提出类似的想法。他认为,对于多线程回写的第一个版本,保持单个 inode 列表将是合理的。与其研究如何将 inode 分片到不同的列表中,不如“专注于能够一次性分派多个 inode 进行回写”;这将有助于确定锁竞争发生在哪里。Gupta 担心 inode 列表的锁竞争问题,但 Kara 认为与回写所需的其他所有工作相比,这不会那么显著。

Goldstein 表示,一旦该功能的基本原理运作正常,为文件系统提供一种方式来帮助为不同线程选择 inode 可能会有意义。文件系统可能拥有能够协助回写机制实现更好并行度的信息。

Mason 说了会议的最后一句话,他提到了在测试中发现但之前忘记的另一个瓶颈:释放干净页。一旦脏页被写入,这些干净页会由 kswapd 内核线程释放,这又导致了另一个瓶颈。他建议可能也需要在此处增加一些并行性。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

台达B3伺服电机485通讯的调试过程 最近上了一项目,没办法直接把B3伺服接到PLC上去,怎么办?偶说试下直接电脑通过100多米的485线控制好了,定型前的测试就这样展开了。 1、焊CN1口 如果不安装CN1,是开不了机的,要报很多错误,比如SERV EMG ALERT, 上限报警,下限报警什么的,怎么办?直接焊好CN1头子吧,烦了点,但是必要的。 主要接的是11,9,10,32,31,30几个脚,按照图上连接好就是了。 2、 接线路 按照上面的图,接上伺服电机线,编码器线,电源线,包括限位常闭开关、485连线等,就完.. 阅读详情

相关推荐

AGV、RGV、四向车openTCS调度系统(三)车辆适配器解读,封装自己的适配器

AGV、RGV、四向车调度。理解适配器的整体作用,以及如何使用官方例子改造自己的适配器,

要这头发有何用 3610

LWN:针对二进制格式的一些好用工具!

关注了就能看到更多这么棒的文章哦~Some useful tools for binary formatsFebruary 28, 2023This article was contributed by Koen VervloesemFOSDEMAI assisted translationhttps://lwn.net/Articles/924133/Linux 用户经常使用文本文件;grep、...

Linux News搬运工 2406

VMD-CNN-BiLSTM-Attention预测模型 —— 数学模型介绍&完整实例代码

想解决电力负荷预测中的非线性、非平稳难题?这篇博客介绍了一种创新混合模型,结合变分模态分解(VMD)和CNN-BiLSTM-Attention深度学习架构,实现超高精度预测! ✨ 核心亮点: ✅ VMD分解:有效分离复杂负荷信号,提取关键频率特征 ✅ 混合深度学习:CNN捕捉局部模式 + BiLSTM学习长时序依赖 + 注意力机制聚焦关键时段 ✅ 端到端优化:从数据预处理(滑动窗口、归一化)到模型训练(MSE损失+Adam优化),完整流程公开! ✅ 工业级评估:提供MSE、MAE、MAPE、R²多指标验证

qq_42924330的博客 1652

LWN:内核开发者的更好的工具!

关注了就能看到更多这么棒的文章哦~Better tools for kernel developersByJonathan CorbetFebruary 6, 2020原文来自:htt...

Linux News搬运工 2448

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 304

【张量分解(二)】CP分解

一、CP分解 1.1 定义 CP分解就是将一个张量分解成多个单秩张量的和。例如,给定一个三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,则CP分解可以写为 X≈∑r=1Rar∘br∘cr\mathcal{X}\approx\sum_{r=1}^{R}\textbf{a}_r\circ\textbf{b}_r\circ...

bqw的博客 2万+

LWN:用户空间的影子堆栈!

关注了就能看到更多这么棒的文章哦~Shadow stacks for user spaceBy Jonathan CorbetFebruary 21, 2022DeepL assisted...

Linux News搬运工 2230

001:InVEST学习——产水/水源涵养

InVEST产水模块介绍 前言 (一些碎碎念着急的可以忽略)最开始做inVEST模型是2020年中,应该说对这个软件有很特殊的感情,之前一直想出一个教程,但是因为事情多加上拖延加上懒就耽搁了,事实证明东西不用就确实荒废了,现在面对当初自己做的东西顶多也就能想起一些思路,很多细节都忘了,所以这个教程也相当于是一个备忘录吧。 ...

Victoriaac的博客 2万+

LWN:开源语音助手的希望!

关注了就能看到更多这么棒的文章哦~Hopes and promises for open-source voice assistantsMarch 21, 2023This article was contributed by Koen VervloesemDeepL assisted translationhttps://lwn.net/Articles/926484/2022 年底,Paulu...

Linux News搬运工 2295

第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)

核心目标:学会安装、卸载、管理OpenClaw技能,自定义AI代理的性格与权限,让AI贴合自己的使用习惯。核心内容技能市场详解:ClawHub市场核心技能分类(办公、学习、开发、生活),热门技能推荐(web-search、文件处理、邮件管理)[superscript:3][superscript:4]。技能安装与卸载:终端命令实操(openclaw skill install/uninstall),技能更新与版本管理[superscript:3]。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1754

C#上位机案例:西门子S7协议通信+实时曲线显示(WinForm+ZedGraph)

创建/// PLC数据模型(对应DB1块)/// 采集时间(用于曲线的X轴)set;/// 温度值(℃)set;/// 压力值(MPa)set;/// PLC通信状态set;西门子S7协议通信和实时曲线显示,也是工控现场最常见的场景之一。整个开发过程的关键不在于“写出代码”,而在于“写出符合工控场景的稳定代码”——比如解耦通信逻辑与界面逻辑、处理跨线程问题、限制数据点数量、释放资源等。新手在学习时,建议先跟着步骤搭建好环境,跑通基础功能,再逐步尝试进阶优化。需要注意的是,工控上位机的核心是。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1342

LWN:定义开源硬件!

关注了就能看到更多这么棒的文章哦~Defining open hardwareOctober 18, 2023This article was contributed by Koen VervloesemChatGPT translationhttps://lwn.net/Articles/945870/开源硬件(或称为开放硬件)是指以类似开源软件的方式开发的硬件。对于开源硬件有一个被广泛接受的定...

Linux News搬运工 2634

国科大学习资料--VLSI测试与可测试设计--2020期末考试试题

国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 一、概念题 1简述可测试性测度与两个主要的测度指标的含义; 2以March C-算法为例,说明March算法的构成,以及March C-算法的故障覆盖率; 3“效果-原因”诊断法和“原因效果诊断法”的不同; 4列举四条扫描设计时出现的问 题及解决办法; 5最少写出1149.1与1500的五点不同; = = = = =

无名何许人的博客 1150

LWN:测量和改进buffered I/O!

关注了就能看到更多这么棒的文章哦~Measuring and improving buffered I/OBy Jake EdgeJune 5, 2024LSFMM+BPFGemini-1.5-flash translationhttps://lwn.net/Articles/976856/Linux 上存在两种类型的文件 I/O:缓冲 I/O (buffered I/O) 和直接 I/O (di...

Linux News搬运工 753

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LWN:可信树Merkle tere在build系统中的应用!

关注了就能看到更多这么棒的文章哦~Merkle trees and build systemsMay 28, 2020 This article was contributed by D...

Linux News搬运工 623

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LWN:Mercurial也要迁移离开SHA-1了!

关注了就能看到更多这么棒的文章哦~Mercurial planning to transition away from SHA-1By John CoggeshallSeptember ...

Linux News搬运工 266

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Linux 6.18发布:年度最后版本或成新长期支持版本

新的内核版本意味着对一些新硬件的内置支持。A:Linux 6.18的主要改进包括:XFS卷可以在使用中检查和修复,exFAT驱动程序速度提升16倍,新增对华硕、联想等厂商手持设备的支持,Nouveau驱动支持图灵和安培系列GPU的GSP固件,以及新的Rust版本Binder用于Android进程间通信。经过两年的工作,6.18包含了新的Rust版本Binder,Android的进程间通信管理器。A:Linux 6.18是2025年的最后一个内核版本,按照惯例,年度最后的内核版本通常会被选为长期支持版本。

std86021的博客 634

性能优化的思想陷阱

你可能会因为一些微小的调整而得到些许的改进,但不会从根本上解决启动时间的问题。也就是说,要专注于系统的整体启动优化,找到每个可能延迟启动的瓶颈,从根本上解决它们,而不是仅仅依赖一些细小的改进。如果只想提升 10%,你可能会在现有的步骤上做细小的改进,比如调整加载顺序或删除一些不必要的步骤,但效果可能有限。只有这样,才能真正带来显著的性能提升。追求 10 倍的提升会促使你打破思维的限制,而不仅仅是依赖现有框架的小幅优化。这种从零开始重新设计的思维可能会带来全新的解决方案,从而消除现有系统中的所有瓶颈。

底层软件设计内幕 564

Redpill Recovery:专业级群晖引导环境的终极解决方案

**Redpill Recovery(简称RR)** 是一款革命性的群晖DSM引导工具,它打破了传统NAS硬件与软件绑定的限制,让用户能够在任何x86/x64架构的硬件上部署自托管的Synology DSM系统。作为开源NAS引导技术的巅峰之作,RR不仅提供了完整的引导解决方案,还集成了强大的恢复环境功能,成为技术爱好者和企业用户构建个性化存储系统的首选工具。 ## 技术架构深度解析:模块化设计

gitblog_00044的博客 532

LWN:统一Linux 随机数设备!

关注了就能看到更多这么棒的文章哦~Uniting the Linux random-number devicesBy Jake EdgeFebruary 16, 2022DeepL ass...

Linux News搬运工 1143

LWN:多代LRU方案的未来!

当一个 page 被访问时,它们会从较老的一代 list 移动到较新的一代,当需要回收内存时,会先从最古老的一代来开始回收 page。每一代的 page 都会随着时间的推移而变得老化,当最老的一代中的 page 都被回收掉了的时候,就会创造出新的一代。自这项工作的第一次发布以来最大的变动是在 "tier" (层)的定义上,tier 这个词现在被用来细分各代 page,这反过来又可以帮助更好地决定哪些 page 需要回收(reclaim),特别是在那些需要使用大量 buffered I/O 的系统中。

GetnextWindow的专栏 459

LWN:用SCHED_EXT和IOCost改进性能!

关注了就能看到更多这么棒的文章哦~Improving performance with SCHED_EXT and IOCostBy Daroc AldenApril 1, 2024SCALEChatGLM translationhttps://lwn.net/Articles/966618/在今年的SCALE大会上,来自 Meta 的 Dan Schatzberg 和 Tejun Heo 先后连...

Linux News搬运工 979

LWN:Linux图形栈简介,第二部分!

关注了就能看到更多这么棒的文章哦~The Linux graphics stack in a nutshell, part 2December 28, 2023This article was contributed by Thomas ZimmermannChatGPT translationhttps://lwn.net/Articles/955708/在屏幕上显示应用程序的图形化输出内容需要...

Linux News搬运工 791

LWN:6.1内核开发数据(以及更多)!

关注了就能看到更多这么棒的文章哦~Development statistics for the 6.1 kernel (and beyond)By Jonathan CorbetDecember 12, 2022DeepL assisted translationhttps://lwn.net/Articles/915435/6.1 内核于 12 月 11 日发布;到这次发布时,已经有 13942...

Linux News搬运工 653

LWN:推动 Lustre 文件系统进入上游!

作为一名 VFS 维护者,他不想成为那个做决定的人,但合并一个新的文件系统“会给整个社区带来负担”,因此这应该是一个共同的决定。客户端“每月有几百个补丁,服务器的补丁量是客户端的三到四倍”,这使得跟上内核的步伐变得更加困难。Layton 说:“小步前进是好的”,不过 Day 指出,如果没有内核中的服务器代码,测试 Lustre 会更困难。这会影响 ext4 的开发,但其他更改,例如重写 jbd2 日志层使其不再需要 buffer heads 的计划,也可能因为包含 Lustre 服务器而变得复杂,他说。

Linux News搬运工 1450

LWN:分层固定带宽服务调度器!

相反,如果没有可运行的任务,截止期限服务器就会放弃 CPU,使其可供任何可能正在争夺它的实时任务使用。当截止期限服务器运行时,它将以通常的方式调度该组内的任务,确保整个组获得分配给它的资源,即使系统中其他地方有更高优先级的实时任务试图运行。有一个 CBS 调度器,即截止期限调度器(deadline scheduler)(详情请参阅备受怀念的 Daniel Bristot de Oliveira 撰写的 这篇文章),但该调度器并非分层的,并且要求实时任务是专门为其编写的。(所需的 CPU 时间);

Linux News搬运工 1430
上一篇: LWN:用 Smatch 来发现 bug!
下一篇: LWN:分层固定带宽服务调度器!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值