标题: 【OH-5.0-Beta1】hmdfs_server_readdir 是否存在无意义重建目录项的设计缺陷 [打印本页] 作者: Nicky Z 时间: 2024-10-31 15:02 标题: 【OH-5.0-Beta1】hmdfs_server_readdir 是否存在无意义重建目录项的设计缺陷 【问题描述】
对远端目录执行 list 操作时,发现其时延明显长于在本地目录执行 list,且该问题不是由于网络传输速度引起。
利用 smartperf 分析发现 server 端处理 list 请求的函数 hmdfs_server_readdir 的大部分时间用于进行 hmdfs_server_rebuild_dents,这其中包含了 create_dentry 这一看起来毫无必要的操作(图一)。
同时分析 list 本地目录,其最终仅仅额外调用 hmdfs_actor_merge 进行冲突处理,其余均使用 f2fs 中的逻辑,并无额外的目录项重建过程(图二)。
想知道这一设计是有什么特殊考量,否则为什么不沿用本地目录 list 的方式,再将结果传递给 client?
(, 下载次数: 0)
上传
点击文件名下载附件
图一:远端处理 list 请求的火焰图
(, 下载次数: 2)
上传
点击文件名下载附件
图二:本地处理 list 请求的火焰图
【如何复现】
在同一组网环境下存在设备 A、B,其上运行相同的 com.example.app 应用。设备 A 在该应用的分布式文件根目录下创建若干个文件,设备 B 对该应用的分布式文件根目录执行 listFileSync 操作,可观察到时延明显(10倍)长于设备 A 在该应用的分布式文件根目录执行 listFileSync 操作。