针对电子设计自动化工作负载优化 Linux NFS 客户端访问

本页介绍如何优化 Linux NFS 客户端对电子设计自动化 (EDA) 工作负载的访问。本文档面向负责配置 Linux 计算节点和管理高性能 EDA 环境的存储管理员、云架构师和系统工程师。 Google Cloud。

客户最佳实践

Linux 节点和交互式虚拟机通过 NFS 挂载 NetApp Volumes。 客户端调优不会增加卷吞吐量限制,但有助于防止元数据风暴、单个存储端点上的插槽过载以及大型库上不良的顺序读取行为。

请按以下顺序配置客户端:

  1. 内核并发性(挂载前):Linux NFS 并发性

    对于 Cluster Toolkit 和 Slurm 计算镜像,在首次挂载之前,请在计算镜像或启动脚本中包含槽表设置。

  2. 挂载选项(挂载时):Linux NFS 挂载选项

  3. 预读(挂载后,可选):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=262144wsize=262144
可靠性 使用 hardtcptimeo=600 或 Google Cloud 控制台默认值
元数据加载 如果应用允许,请在库和 Scratch 中使用 noatime
锁(NFSv3) 如果您不使用建议性锁定,并且未配置网络状态监控器 (NSM),请使用 nolock
预读 如果顺序读取速度较慢,则在装载后增加此值以用于以读取为主的库

在运行代表典型生产工作负载的回归测试时,使用 nfsiostat 命令和监控性能中所述的指标来验证您的设置。

按数据层优化客户端

下表列出了按数据层级划分的客户端关注点和典型装载选项:

层级 以客户为中心 与装载相关的典型选项
减少 GETATTR 和元数据往返;顺序读取大型文件 vers=3hardtcpnoatimersizewsize;仅当数据以读取为主且一致性规则允许时,才考虑 actimeo=600nocto
暂存 多位作者;连贯性很重要 vers=3hardtcpnoatime;不使用激进的属性缓存;保持每个节点的 slot 数量较低
工具 以读取为主,类似于库 vers=3hardtcpnoatimersize=262144wsize=262144;仅在数据以读取为主且一致性规则允许的情况下考虑 actimeo=600nocto;在整个集群映像中保持稳定的装载选项
首页 混合小 I/O Google Cloud 控制台默认值通常就足够了;如果 home 与 scratch 共享一个端点,则使用较低的槽位。

仅在策略要求时才使用 Kerberos(sec=krb5krb5ikrb5p)。 不要将 Kerberos 与 nconnect 结合使用。有关更多信息,请参阅 Linux NFS 挂载选项

后续步骤