性能优化特性之:EXT4 Fast Commit

简介: 本文介绍了倚天实例上进行IO优化的特性:Fast Commit,并对其优化原理、使用方法进行了详细阐述

优化原理

Fast Commit 是 Linux 5.10 引入的一个新的轻量级日志方案,根据 ATC-17 的论文 “iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call” 实现。 在常用的 ext4 data=ordered 日志模式下,fsync() 系统调用会因为无关 IO 操作导致显著的时延。Fast Commit 根据写入日志中的元数据反推,只提交与当前 transaction 相关的操作,从而优化 fsync() 的时延。 启用 Fast Commit 特性后,系统中将会有两个日志,快速提交日志用于可以优化的操作,常规日志用于标准提交。其中 Fast Commit 日志包含上一次标准提交之后执行的操作。 从作者的 benchmark 测试数据来看,打开 Fast Commit 特性后,本地 ext4 文件系统有 20% ~ 200% 的性能提升;NFS 场景也有 30% ~ 75% 的性能提升。

Benchmark Config w/o Fast Commit w/ Fast Commit Delta
Fsmark
Fsmark Local, 8 threads
NFS, 4 threads 1475.1 files/s
299.4 files/s 4309.8 files/s
409.45 files/s +192.2%
+36.8%
Dbench
Dbench Local, 2 procs
NFS, 2 procs 33.32 MB/s
8.84 MB/s 70.87 MB/s
11.88 MB/s +112.7%
+34.4%
Dbench
Dbench Local, 10 procs
NFS, 10 procs 90.48 MB/s
34.62 MB/s 110.12 MB/s
52.83 MB/s +21.7%
+52.6%
FileBench
FileBench Local, 16 threads
NFS, 16 threads 10442.3 ops/s
1531.3 ops/s 18617.8 ops/s
2681.5 ops/s +78.3%
+75.1%

使用方法

获取支持Fast Commit特性的e2fsprogs

使用Alinux3.2208及以后版本

Alinux3在2208版本(e2fsprogs版本高于1.46.0)已默认启用该特性

下载最新的 e2fsprogs 包并编译

wget https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/snapshot/e2fsprogs-1.46.2.tar.gz
tar -xvf e2fsprogs-1.46.2.tar.gz
cd e2fsprogs-1.46.2
./configure
make

格式化打开Fast Commit特性

./misc/mke2fs -t ext4 -O fast_commit /dev/vdc1

dumpe2fs 可以看到已经打开 fast commit:

Filesystem features: has_journal ext_attr resize_inode dir_index fast_commit filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

此外,超级块中多出 Overhead blocks 字段:

Overhead blocks: 126828

同时,Journal size 也由默认的 128M 变成 130M,应该是默认 fast commit journal size 为 journal size / 64 带来的增量:

Journal size: 130M




---------------------------------------------------------------------------------------

更多调优信息,请参考:

龙蜥社区:https://openanolis.cn/

KeenTune SIG:https://openanolis.cn/sig/KeenTune

阿里云龙蜥操作系统专区:https://developer.aliyun.com/group/aliyun_linux

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 自然语言处理 固态存储
ublk:来自Linux社区的新热点,基于io_uring的全新高性能用户态块设备
如果您想快速了解ublk的意义、作用及性能,请直接看第二节Q&A部分。一、简介用户态块设备,就是提供/dev/ublkbX这样的标准块设备给业务,业务读写这个块的实际IO处理由您编写的用户态的代码决定。这就好比您使用FUSE,所有对挂载于FUSE的目录的读写都是您编写的IO handler来处理一样。使用用户态块设备,您可以方便地向上层业务以块设备/dev/ublkbX的形式提供您的自定义
|
监控 调度 开发工具
IO神器blktrace使用介绍
## 前言 1. blktrace的作者正是block io的maintainer,开发此工具,可以更好的追踪IO的过程。 2. blktrace 结合btt可以统计一个IO是在调度队列停留的时间长,还是在硬件上消耗的时间长,利用这个工具可以协助分析和优化问题。 ## blktrace的原理 一个I/O请求的处理过程,可以梳理为这样一张简单的图: ![](http://image
22498 0
|
开发工具 git
vscode 查看git提交日志
vscode 查看git提交日志
2640 0
|
Linux
centos7 升级qemu-kvm版本
centos7 手动升级qemu-kvm版本
3077 0
|
JavaScript 测试技术 Linux
|
存储 网络协议 Linux
第七问:你了解大端和小端字节序吗?
大端和小端是计算机中数据存储的两种字节序方式。大端(Big Endian)将高位字节存储在低地址,小端(Little Endian)将低位字节存储在低地址。大端主要用于网络通信和某些文件格式,确保数据传输的一致性;小端广泛应用于本地计算和硬件优化,提高处理速度。现代大多数 PC 和嵌入式设备使用小端字节序,如 x86 和 ARM 架构。
|
机器学习/深度学习 人工智能 自然语言处理
通义千问Qwen3,开源!
Qwen3正式发布并全部开源啦!
8622 50
|
机器学习/深度学习 编解码 人工智能
技术前沿探索:生成对抗网络(GANs)的革新之路
【10月更文挑战第14天】技术前沿探索:生成对抗网络(GANs)的革新之路
497 1
|
人工智能 自然语言处理 PyTorch
Text2Video Huggingface Pipeline 文生视频接口和文生视频论文API
文生视频是AI领域热点,很多文生视频的大模型都是基于 Huggingface的 diffusers的text to video的pipeline来开发。国内外也有非常多的优秀产品如Runway AI、Pika AI 、可灵King AI、通义千问、智谱的文生视频模型等等。为了方便调用,这篇博客也尝试了使用 PyPI的text2video的python库的Wrapper类进行调用,下面会给大家介绍一下Huggingface Text to Video Pipeline的调用方式以及使用通用的text2video的python库调用方式。
|
存储 监控 安全
构建高效的个人知识管理系统:技术与实践
【10月更文挑战第5天】在信息爆炸的时代,个人知识管理变得至关重要。本文将介绍如何利用现代技术手段,尤其是开源工具和云服务,构建一个高效的个人知识管理系统。我们将探索不同的知识组织方法,自动化信息的收集与整理流程,以及确保信息安全的策略。通过实际案例和代码示例,本文旨在为读者提供一套可行的解决方案,帮助他们更好地管理个人知识库,提升学习和工作效率。
686 2