本页介绍如何优化 Linux NFS 客户端对电子设计自动化 (EDA) 工作负载的访问。本文档面向负责配置 Linux 计算节点和管理高性能 EDA 环境的存储管理员、云架构师和系统工程师。 Google Cloud。
客户最佳实践
Linux 节点和交互式虚拟机通过 NFS 挂载 NetApp Volumes。 客户端调优不会增加卷吞吐量限制,但有助于防止元数据风暴、单个存储端点上的插槽过载以及大型库上不良的顺序读取行为。
请按以下顺序配置客户端:
内核并发性(挂载前):Linux NFS 并发性
对于 Cluster Toolkit 和 Slurm 计算镜像,在首次挂载之前,请在计算镜像或启动脚本中包含槽表设置。
挂载选项(挂载时):Linux NFS 挂载选项
预读(挂载后,可选):Linux NFS 预读
有关 NFS 客户端优化的更多信息,请参阅 针对 NetApp Volumes 优化 Linux NFS 客户端。
有关挂载命令和导出策略,请参阅 连接 NFS 客户端。 要将客户端分布在大容量卷上,请参阅 使用多个存储端点连接大容量卷 和 EDA 架构模式。
优化具有大量客户的 EDA 农场
对于拥有数百或数千个共享相同导出的计算节点的大规模部署,请使用以下设置。这些配置与单虚拟机基准测试设置不匹配,后者通常在单个主机上使用 nconnect=16 挂载选项。
| 区 | 推荐起点 |
|---|---|
| 协议 | 除非您需要 NFSv4.1 功能,否则请使用 NFSv3 (vers=3)。 |
| 并发性(NFSv3) | 每个客户端的 RPC 插槽表较小;例如,/etc/modprobe.d/sunrpc.conf 中只有 8 个条目。 |
| 连接 | 每个客户端每个存储端点一个 TCP 连接;不要使用 nconnect |
| 大容量卷 | 通过 DNS 或静态组挂载,将节点分布到 多个存储端点 |
| 转移大小 | 设置 rsize=262144 和 wsize=262144 |
| 可靠性 | 使用 hard、tcp、timeo=600 或 Google Cloud 控制台默认值 |
| 元数据加载 | 如果应用允许,请在库和 Scratch 中使用 noatime |
| 锁(NFSv3) | 如果您不使用建议性锁定,并且未配置网络状态监控器 (NSM),请使用 nolock |
| 预读 | 如果顺序读取速度较慢,则在装载后增加此值以用于以读取为主的库 |
在运行代表典型生产工作负载的回归测试时,使用 nfsiostat 命令和监控性能中所述的指标来验证您的设置。
按数据层优化客户端
下表列出了按数据层级划分的客户端关注点和典型装载选项:
| 层级 | 以客户为中心 | 与装载相关的典型选项 |
|---|---|---|
| 库 | 减少 GETATTR 和元数据往返;顺序读取大型文件 |
vers=3、hard、tcp、noatime、rsize 和 wsize;仅当数据以读取为主且一致性规则允许时,才考虑 actimeo=600 和 nocto |
| 暂存 | 多位作者;连贯性很重要 | vers=3、hard、tcp 和 noatime;不使用激进的属性缓存;保持每个节点的 slot 数量较低 |
| 工具 | 以读取为主,类似于库 | vers=3、hard、tcp、noatime、rsize=262144 和 wsize=262144;仅在数据以读取为主且一致性规则允许的情况下考虑 actimeo=600 和 nocto;在整个集群映像中保持稳定的装载选项 |
| 首页 | 混合小 I/O | Google Cloud 控制台默认值通常就足够了;如果 home 与 scratch 共享一个端点,则使用较低的槽位。 |
仅在策略要求时才使用 Kerberos(sec=krb5、krb5i 或 krb5p)。
不要将 Kerberos 与 nconnect 结合使用。有关更多信息,请参阅 Linux NFS 挂载选项。
后续步骤
- 有关基准测试结果,请参阅电子设计自动化工作负载基准测试。