Data Domain:由于过多的 BoostFS READDIR 操作导致 CPU 利用率高
Summary: 在生成大量 BoostFS READDIR/OSTREADDIRPLUS 请求时,尽管备份、复制或应用程序工作负载较低,但 Data Domain 系统仍会遇到持续的高 CPU 利用率。 历史研究表明,针对 BoostFS 装载点运行的自动索引、扫描、监视和文件系统遍历进程会显著提高 DDFS 和系统 CPU 利用率,从而导致负载平均值提高和性能下降。
Symptoms
CPU 利用率始终保持较高,经常超过 80%,即使在低吞吐量和最少活动流期间也是如此。
在 SAR 统计信息中观察到系统 (%system) CPU 使用率升高。
与备份或复制工作负载无关的高系统负载平均值。
DDFS 进程占用的 CPU 资源远超预期。
性能分析显示与 READDIRPLUS 相关的代码路径中有大量活动。
大量 OSTREADDIRPLUS 或 ddp_readdir 在自动支持数据中观察到的操作。
备份、还原或文件访问操作可能会变得比预期慢。
活动 TCP 连接计数和可能的连接拒绝警报增加。
频繁 "5006-end of directory" 可能会在 BoostFS 或 DDFS 日志中观察到消息。
一 dd_guts 当其他调度程序线程保持相对空闲状态时,调度程序线程可能会显示为被大量利用。
NFS RPC 层统计信息可能显示提升 data_wait 和 svc_func 值:
Cause
分析表明,过量 READDIR 和 READDIRPLUS 源自已装载 BoostFS 的文件系统的操作导致 CPU 利用率提高。
历史调查表明,自动索引、安全扫描、监视实用程序和文件系统遍历进程会生成大量目录枚举请求,从而导致 DDFS 和内核 CPU 使用率增加,即使备份工作负载保持相对较低也是如此。
过量的常见来源 READDIR 活动包括:
mlocate/updatedb 正在扫描 BoostFS 装载点的索引进程。
安全和防病毒扫描应用程序。
轮询已装载文件系统的监视和运行状况检查工具。
频繁的文件系统枚举活动,例如递归目录列表和统计信息操作。
使用 BoostFS 或 SDK 接口来反复遍历大型目录结构的应用程序。
执行连续文件系统发现或清单收集的自动化脚本。
这些活动可以产生数百万的 READDIR 在 DDFS 和底层文件系统中产生巨大的处理开销。
Resolution
检查装载了 BoostFS 的系统中是否存在执行频繁目录枚举、索引编制、监视或扫描活动的应用程序。
建议的操作包括:
识别生成过量的应用程序 READDIR 针对已装载 BoostFS 的文件系统的活动。
排除 BoostFS 装载点 mlocate/updatedb 通过更新 PRUNEFS 配置编制索引。
审查并限制针对 BoostFS 装载的不必要的防病毒扫描、安全扫描、监控工具、运行状况检查流程和文件系统轮询活动。
尽可能减少或消除频繁的递归目录遍历操作。
显示器 OSTREADDIRPLUS, ddp_readdir、CPU 利用率和实施更改后的负载平均值。
遵循 Data Domain 和 BoostFS 最佳实践,以防止扫描仪和索引应用程序持续遍历已装载的备份文件系统。
历史调查表明,从自动化装载点中排除 BoostFS 装载点后,CPU 利用率显著降低 cron 执行索引和扫描活动的作业。
此行为表示过多 READDIR 这些进程生成的活动可能是导致 DDFS CPU 利用率提高的重要原因。
此外,经常 "5006-end of directory" 消息可能表示重复的目录读取操作。这些消息的数量可用作 READDIR 针对 Data Domain 系统发生的活动。BoostFS 装载的文件系统上的读取操作通常比写入操作更昂贵,因此必须避免不必要的扫描或遍历已装载的备份命名空间。
检查 cron BoostFS 客户端上的作业:
ls -l /etc/cron.daily