性能调优
Last updated
Was this helpful?
Last updated
Was this helpful?
Singularity 提供了一系列的配置选项,允许用户优化数据准备的性能。本指南将阐述这些配置选项,并提供有效调优的指导说明。
描述:内行准备消除了需要额外磁盘空间来存储 CAR 文件的需求。然而,它会增加一定的数据库查询和存储开销。
影响:这种开销通常是可以忽略不计的,但对于包含许多小文件的数据集来说,可能会变得显著。
配置:要禁用内行准备,请在 singularity prep create
命令中使用 --no-inline
。
进一步阅读:
描述:在准备过程中,Singularity 会为每个目录刷新 DAG 和 CID,以便实时跟踪变化。
影响:这会引入轻微的数据库开销,因为每次准备 CAR 文件时都会更新目录。
配置:要禁用 DAG 更新,请在 singularity prep create
命令中使用 --no-dag
。
描述:扫描涉及遍历源存储以整理文件列表。对于本地存储,速度较快,但对于像 S3 这样的远程存储来说可能较慢。
配置:
启用并行处理:在 singularity storage create
或 singularity storage update
命令中使用 --client-scan-concurrency
参数。
注意:启用并行处理可能导致文件按非确定性方式处理。
描述:打包将多个文件合并为一个 CAR 文件,这是一个既消耗 CPU 又消耗 IO 的操作。对于网络受限的远程存储来说,增加并行处理是有益的。
配置:
调整并行处理:在 singularity run dataset-worker
命令中使用 --concurrency
参数。
描述:某些远程存储(如 AWS S3
)提供自定义的 mtime
和服务器端的最后修改时间。默认情况下,Singularity 会检查是否存在自定义的 mtime
,如果有则使用它,否则使用服务器的最后修改时间。
影响:跳过检查自定义的 mtime
并直接使用服务器的最后修改时间可以减少对远程存储的请求数量。
配置:要优先使用服务器的时间并避免获取对象元数据,请在 singularity storage create
或 singularity storage update
命令中使用 --client-use-server-mod-time
。
描述:对于失败的远程文件夹列表或文件打开操作,Singularity 利用 RClone 的重试机制。
配置:要增加重试次数,请在 singularity storage create
或 singularity storage update
命令中使用 --client-low-level-retries
参数。
描述:尽管网络请求成功,但由于不稳定的网络连接,网络 IO 可能失败。Singularity 支持重试和从上次成功点继续操作。
配置:请在 singularity storage create
或 singularity storage update
命令中使用以下标志。
描述:权限可能会阻止从远程存储访问某些文件。只有在尝试打开文件时,这些问题才会显现,导致打包作业失败。
配置:要跳过无法访问的文件,请在 singularity storage create
或 singularity storage update
命令中使用 --client-skip-inaccessible-files
。