0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在众核场景下EXT4该如何应对才能发挥性能

SSDFans 来源:SSDFans 2024-12-30 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、背景和问题

1. EXT4日志的问题

随着计算机系统加载数百个CPU内核,文件系统的可扩展性得到进一步强调。因此本文主要定位服务器中广泛使用的Ext4文件系统在做日志记录时的可扩展性问题。EXT4日志有两个严重的缺点;串行提交并提交原始页面缓存条目。

串行提交:在EXT4中,日志提交是严格的串行活动。只有在前面的日志提交完成后,它才能提交后面的日志事务。因此,在EXT4中,一次最多只能有一个正在运行的事务,最多只能有一个提交事务。图1展示了串行提交的一个示例:

22edc834-c3e8-11ef-9310-92fbcf53809c.png

将前面的fsync()和后面的fsync()的日志事务分别标记为Tx1和Tx2。JBD线程仅在完成提交Tx1后才开始提交Tx2(t3时刻)。

提交原始页面缓存条目:EXT4使用原始页面缓存条目将更新的内容提交给磁盘。它不会为日志提交创建更新的副本。如果关联的页面缓存条目被提交到磁盘,则需要更新文件系统状态的应用程序将被阻塞。这种情况也叫做事务冲突,会严重影响EXT4的日志记录可扩展性。

2. EXT4日志可扩展性问题的详细分析

本文通过EXT4执行串行日志提交和BarrierFS执行并发日志操作来探索文件系统日志中的可伸缩性平静,最终确认了影响EXT4 和 BarrierFS 性能可扩展性的四个主要组件;事务冲突、串行刷新、事务锁定间隔的长度和复合日志的合并程度。

(1) 事务冲突

事务冲突技术值定义为试图修改DMA下的日志块的文件操作数量。尽管 EXT4 的影子分页功能可以解决事务冲突,但 EXT4 日志记录仍然存在大量事务冲突。

即使BarrierFS同时提交多个事务,它也会使用单独的刷新命令刷新每个事务。由于每个日志提交都会在存储设备上产生单独的刷新,因此BarrierFS 的并发日志设计的好处是体现不出来的。此外,当正在运行的事务试图在flush下修改日志块时,它们都会发生冲突并被阻塞。这种提交事务的更高并发性导致几乎 100% 的文件操作在所有线程中都遭受事务冲突。

(2) 事务锁定

并发日志中可伸缩性失败的主要原因之一是延长的锁定间隔。

对EXT4,事务锁定间隔的长度可以忽略不计,因为锁定期只是等待未完成的文件操作完成的时间,一般来说是很短的。

BarrierFS可以在正在运行的事务摆脱冲突之前过早地将其置于锁定状态,直到所有未完成的文件操作完成并且所有冲突都得到解决。因此,一个正在运行的事务在 BarrierFS 中停留在锁定状态的时间间隔比在 EXT4 中长得多。

两个文件系统锁定时间的对比如图2:

2301a1ec-c3e8-11ef-9310-92fbcf53809c.png

(3) 有限合作

影响文件系统日志性能可伸缩性的关键因素是日志事务的合并程度——日志事务中文件系统操作的数量。

EXT4 日志的严格串行性质实际上有助于增加复合日志的合并程度。当日志提交正在进行时,所有与传入文件操作相关的更新都被插入到正在运行的事务中。因此,随着线程数量的增加,合并机会会增加。

而对于BarrierFS,由于它过早地将正在运行的事务置于锁定状态,从而减少了将多个文件操作合并到单个日志事务中的机会。

二、设计

作者通过以下几个技术点实现了一个支持高并发的日志文件系统—CJFS。

1. 双线程日志

作者将日志提交过程分为两个阶段,即提交阶段和刷新阶段,并为每个阶段分配单独的线程,即提交线程和刷新线程。提交线程负责向存储发出日志事务的写请求。完成后,存储设备会向主机发送中断,通知请求服务已完成。刷新线程负责使日志块和提交块持久化。一旦中断到来,刷新线程被唤醒,并向存储发出刷新命令,使日志块和提交块持久化。

23094604-c3e8-11ef-9310-92fbcf53809c.png

如图3所示,通过分离提交线程和刷新线程,CJFS 可以在不等待前面的日志(231cf050-c3e8-11ef-9310-92fbcf53809c.png)提交完成的情况下提交后续事务23356946-c3e8-11ef-9310-92fbcf53809c.png

2. 多版本影子页

为了解决事务冲突,作者提出了多版本影子分页。当提交线程启动日志提交时,它会创建日志事务中所有页面的影子副本。在提交日志事务时,提交线程使用事务中每一页的影子副本来将日志事务传输到存储设备,而不是使用原始页面。由于日志模块使用影子页面进行日志提交,后续的文件操作可以更新原始页面。

3. 机会性合并

由于影子页面的数量有限,如果所有预分配的影子页面都用于保存日志,仍然会发生事务冲突。如果发生事务冲突,正在运行的事务将进入锁定状态,并且所有修改文件系统状态的后续文件操作都将被阻止。为了解决这个问题,作者提出了机会合并。当所有未完成的文件操作完成时,提交线程检查是否存在任何冲突。如果存在冲突,提交线程会将锁定状态的事务返回到运行状态并被阻塞。当提交线程被阻塞后,正在运行的事务可以继续容纳新传入的日志块。

2341079c-c3e8-11ef-9310-92fbcf53809c.png

如图四展示了机会合并的一个例子,23606ae2-c3e8-11ef-9310-92fbcf53809c.png在两个 LOCKED 状态之间的时间段内处于RUNNING状态。在运行事务的状态变为RUNNING状态后,所有被阻塞等待日志句柄的挂起文件操作都被发布日志句柄。借助这样的机会合并,CJFS 可以将大量文件操作合并到正在运行的事务中,从而提高文件系统操作的并发性。

4. 复合刷新

为了使 CJFS 的日志以完全并发的方式工作,提交线程和刷新线程都应该能够以并发的方式处理关联的任务。针对EXT4和BarrierFS的序列化刷新问题,作者提出了一种复合刷新的概念:当刷新线程即将发送刷新命令时,它会检查是否存在任何后续提交事务,如果后续提交事务不存在,则发送刷新命令;如果存在接下来的提交事务,它会改为发送cache barrier命令(控制闪存设备保证请求处理顺序的命令),从而将持久化事务的任务委托给后面的事务提交请求。通过cache barrier命令,存储控制器可以确保各个事务的日志块按顺序持久化。

23720cd4-c3e8-11ef-9310-92fbcf53809c.png

图5说明了复合刷新的工作原理。当flush线程传输完事务231cf050-c3e8-11ef-9310-92fbcf53809c.png后,flush线程开始传输事务2395531a-c3e8-11ef-9310-92fbcf53809c.png,而不是调用flush来刷新事务231cf050-c3e8-11ef-9310-92fbcf53809c.png。当刷新线程完成传输事务2395531a-c3e8-11ef-9310-92fbcf53809c.png时,它发现没有其他正在提交的事务正在运行。然后,它调用flush使事务231cf050-c3e8-11ef-9310-92fbcf53809c.png和事务2395531a-c3e8-11ef-9310-92fbcf53809c.png持久化。

三、实验效果

1. 实验设置

作者将CJFS与BarrierFS、SpanFS [15]、Vanilla EXT4 和带有 Fast-Commit的EXT4进行了比较。同时使用三个基准测试集进行测试:用于邮件服务器的varmail,用于文件服务器的dbench,以及MySQL上的 OLTP-Insert。测试平台为40核服务器(两个Intel Xeon Gold 6230处理器和512 GB DRAM)和三星970 Pro SSD(MLC闪存,NVMe)进行实验。

2. 实验结果

23e1d564-c3e8-11ef-9310-92fbcf53809c.png

图6

可以看到在多种测试集及其对应的多种数据更新场景下,CJFS都能达到最好的多核性能扩展效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件系统
    +关注

    关注

    0

    文章

    305

    浏览量

    21057
  • 线程
    +关注

    关注

    0

    文章

    511

    浏览量

    20880

原文标题:在众核场景下,EXT4该如何应对才能发挥性能呢?

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    寻找对RISCV并行计算感兴趣的伙伴、朋友

    一、我们RISCV并行计算方案包括: 1、芯片 自研RISCV CPU IP,和自研NOC IP(片上网络),
    发表于 03-28 14:41

    寻找对RISCV并行计算感兴趣的伙伴

    一、我们RISCV并行计算方案包括: 1、芯片 自研RISCV CPU IP,和自研NOC IP(片上网络),
    发表于 03-28 14:37

    有没有办法将“/”ext4 分区移动到我的 NVMe 中?

    有没有办法将“/”ext4 分区移动到我的 NVMe 中? 它从 microsd 启动,但在更快的 NVMe 上使用系统?
    发表于 03-20 08:27

    Aigtek科普:LC谐振电路如何帮助功率放大器发挥性能

    相信有不少工程师使用功率放大器的时候都会遇到一个问题,那就是:由于测试的负载阻抗太大,因此在所需的频率,功率放大器的输出电流无法达到需要的大小,功率放大器的性能无法完全释放(情况
    的头像 发表于 03-05 17:25 570次阅读
    Aigtek科普:LC谐振电路如何帮助功率放大器<b class='flag-5'>发挥性能</b>

    深度剖析LMZ10505EXT:高性能5A电源模块的卓越之选

    深度剖析LMZ10505EXT:高性能5A电源模块的卓越之选 在当今电子设备不断小型化、高性能化的趋势,电源模块的性能和可靠性显得尤为重要
    的头像 发表于 03-04 16:25 191次阅读

    深入解析LMZ14201EXT:高性能开关电源模块的设计与应用

    深入解析LMZ14201EXT:高性能开关电源模块的设计与应用 电子工程师的日常工作中,电源模块的选择和设计是至关重要的一环。今天,我们将深入探讨一款功能强大的开关电源
    的头像 发表于 03-04 16:20 499次阅读

    深入剖析LMZ10504EXT:高性能4A电源模块的设计与应用

    深入剖析LMZ10504EXT:高性能4A电源模块的设计与应用 电子设计领域,电源模块的性能直接影响着整个系统的稳定性和可靠性。今天,我们
    的头像 发表于 03-04 16:20 228次阅读

    探索LMZ14203EXT:适用于军事和恶劣环境的电源模块

    探索LMZ14203EXT:适用于军事和恶劣环境的电源模块 电子设计领域,电源模块的性能和可靠性至关重要,尤其是军事和恶劣应用场景中。今
    的头像 发表于 03-04 15:55 186次阅读

    深入解析LMZ12001EXT:高性能电源模块的卓越之选

    深入解析LMZ12001EXT:高性能电源模块的卓越之选 电子设计领域,电源模块的性能往往决定了整个系统的稳定性和可靠性。今天,我们就来深入探讨一款备受关注的电源模块——LMZ120
    的头像 发表于 03-04 15:55 200次阅读

    翱捷科技正式推出全新高性能4G八智能SoC芯片平台ASR8861

    2026世界移动通信大会(MWC Barcelona 2026)期间,翱捷科技正式推出全新高性能4G八智能SoC芯片平台ASR8861。
    的头像 发表于 03-03 17:39 1668次阅读

    局部放电在线监测装置不同应用场景的选择要点

    针对不同应用环境,局部放电在线监测装置的选择也存在一定差异,技术适配性、核心性能、安装维护、系统兼容性、环境适应性及扩展性等维度都是需要进行综合考量的内容,不同应用场景针对性选择适
    的头像 发表于 11-10 15:14 385次阅读

    150V降压芯片H6266B 48V60V72V90V100V120V降3.3V5V12VBUCK仪表供电IC 高性能 外围少

    稳定工作。​ 聚焦场景应用,发挥性能优势​ H6266B 的典型应用场景集中高压供电领域:​ 汽车电子: 汽车充电器、车载设备供电,适应车辆电气系统的电压特性;​ 电动车领域: 电动
    发表于 08-06 16:09

    性能低功耗双Wi-Fi6+BLE5.3二合一

    随着物联网技术的不断发展,无线通信模块各种应用场景中扮演着越来越重要的角色。近日,蓝科迅通科技宣布推出一款基于Nordic Semiconductor的Wi-Fi 6芯片nRF7002和高性能
    发表于 06-28 21:42

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入一台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统。
    的头像 发表于 06-10 12:03 918次阅读
    服务器数据恢复—ocfs2文件系统被格式化为<b class='flag-5'>Ext4</b>文件系统的数据恢复案例

    紫光展锐4G旗舰性能之王智能穿戴平台W527登场 一大三小异构处理器架构

    。 紫光展锐正式发布4G旗舰性能之王智能穿戴平台——W527,产品采用业界领先的一大三小异构处理器架构,搭载蓝牙5.0和BLE双模,支
    的头像 发表于 06-03 16:44 9962次阅读
    紫光展锐<b class='flag-5'>4</b>G旗舰<b class='flag-5'>性能</b>之王智能穿戴平台W527登场 一大<b class='flag-5'>核</b>三小<b class='flag-5'>核</b>异构处理器架构