弹性文件服务 SFS
弹性文件服务 SFS
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 概念类
- 规格类
- 限制类
- 网络类
- 计费类
-
其他类
- 如何从云服务器访问文件系统?
- 如何确认Linux云服务器上的文件系统处于可用状态?
- 弹性文件服务会占用用户的哪些资源?
- SFS容量型文件系统挂载后为什么容量显示为10P?
- 通用文件系统挂载后为什么会显示250TB?
- 如何在弹性文件服务SFS和对象存储服务OBS之间进行数据迁移?
- 弹性文件服务支持多可用区吗?
- 可以将SFS容量型文件系统升级为SFS Turbo文件系统吗?
- 可以将SFS Turbo标准型升级为SFS Turbo标准型-增强版吗?
- 如何在弹性文件服务SFS和云硬盘EVS之间进行数据迁移?
- 可以直接从云下访问弹性文件服务吗?
- 如何删除.nfs类型的文件?
- 将数据从SFS容量型迁移至SFS Turbo后,容量为什么变大了?
- 如何提高SFS Turbo文件系统拷贝和删除操作的效率?
- SFS Turbo二级及三级目录权限如何继承?
- 如何将SFS Turbo部署至CCE?
- 如何发挥SFS Turbo文件系统的最大性能?
- Linux内核5.4版本之后客户端的NFSv3文件系统顺序读业务场景性能不符合预期,如何处理?
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
Linux内核5.4版本之后客户端的NFSv3文件系统顺序读业务场景性能不符合预期,如何处理?
问题描述
在Linux内核5.4版本之后的客户端上挂载NFSv3协议的文件系统,使用cp或dd等方式触发顺序读业务场景,读带宽与每秒请求数明显不符合预期。
问题原因
预读机制:访问内存的速度比访问硬盘或者网络存储快很多,如果每一次访问文件数据都要从磁盘读取数据,就会导致非常严重的时延及等待问题,因此Linux为了提高读取性能,通过预读机制,将文件数据提前预读缓存到内存中,从而大大加快读取性能。参数“read_ahead_kb”为操作系统读业务可提前读取的最大KB数。
在Linux内核5.4版本前,“read_ahead_kb”被设置为挂载参数中rsize的15倍,如果不另外修改挂载参数,则rsize默认设置为1M,“read_ahead_kb”即为15M;在内核5.4及之后版本“read_ahead_kb”被固定为128 KB,导致顺序读场景下预读机制基本不会触发甚至不触发。
因此可以根据上层业务场景,适当调整参数“read_ahead_kb”,以优化大文件顺序读场景的性能。在小文件读取场景中将该值调整过大,可能会导致预读浪费,进而浪费带宽。
解决方法
- 执行以下命令,查看当前文件系统的预读参数值。
cat /sys/class/bdi/$(mountpoint -d 挂载点)/read_ahead_kb
例如:
cat /sys/class/bdi/$(mountpoint -d /localfolder)/read_ahead_kb
回显结果如下所示:128
- 执行以下命令,评估调整该挂载点的预读量配置。
sudo sh -c 'echo 预读量 > /sys/class/bdi/$(mountpoint -d 挂载点)/read_ahead_kb'
例如:
sudo sh -c 'echo 15360 > /sys/class/bdi/$(mountpoint -d /localfolder)/read_ahead_kb'
- 重新执行步骤1操作,查看当前文件系统的预读参数值是否修改成功。
cat /sys/class/bdi/$(mountpoint -d 挂载点)/read_ahead_kb
例如:cat /sys/class/bdi/$(mountpoint -d /localfolder)/read_ahead_kb
回显结果如下所示:15360
说明:
如果您挂载了多个NFSv3文件系统,请重复执行上述步骤修改每一个挂载设置的预读参数。
父主题: 其他类