XFS与EXT4 Direct IO写USB性能分析与优化
需积分: 50 43 浏览量
更新于2024-09-04
收藏 65KB TXT 举报
"深入探讨xfs与ext4在direct方式下写USB存储的性能差异与优化"
在Linux内核4.19.67版本中,针对文件系统性能进行了对比分析,特别是关注xfs和ext4在direct I/O模式下写入USB磁盘的性能。通过执行`dd`命令进行基准测试,发现在该环境下xfs的写入速度平均为9.4M/s,而ext4的速度在6.6M/s到8.8M/s之间波动,通常在7.5M/s左右。
1. **xfs与ext4的写入机制差异**:
- xfs使用iomap机制,将数据结构(struct bio)直接提交到block层,这确保了数据以2M连续内存的页形式提交。
- ext4则依赖filemap,并通过fs/direct-io接口提交数据(struct bio),这种方式并未保证数据在内存中的连续性。
2. **性能差异的关键因素**:
- 这种性能差距的关键在于,即使数据大小相同,iomap保证了2M的连续内存,而direct-I/O则不保证,这影响了数据传输效率。
3. **block层的处理**:
- block层通过queue_rq回调函数将数据包装成struct blk_mq_queue_data结构,然后传递给SCSI层。
4. **SCSI层的处理**:
- SCSI层接收到数据后,将其转换为struct scsi_cmnd格式,通过消息方式传递给USB-storage驱动。
5. **数据拆分策略**:
- 尽管block层的缓冲区大小为2M,但在提交到SCSI层(进一步到USB-storage)时,会根据设备配置进行拆分,例如默认按照120K进行拆分。
6. **性能优化点**:
- max_sectors配置对性能有很大影响。将max_sectors设置为4096扇区(等于2M)可以显著提升性能,ext4的写入速度从7.5M/s提升到9.5M/s,xfs则从9.4M/s提升到10.4M/s。
7. **xfs优于ext4的原因**:
- xfs在申请内存页时保证了连续性,这使得DMA(Direct Memory Access)能更高效地运行,从而提高了写入速度。相比之下,ext4不保证内存页的连续性,导致其性能逊色于xfs。
通过这些深入的分析,我们可以理解xfs和ext4在direct I/O模式下的性能差异,并找到优化USB存储写入性能的方法。优化文件系统的配置,特别是max_sectors参数,可以有效地改善直接写入操作的效率。对于需要高写入速度的应用场景,选择xfs或优化ext4的配置可能是有益的策略。
2024-06-17 上传
2023-06-01 上传
2022-09-23 上传
2020-08-11 上传
2022-09-14 上传
2022-09-21 上传
2019-06-24 上传
2021-06-28 上传
zhoupeng790305
- 粉丝: 0
- 资源: 1
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目