本页面介绍了 Google Cloud NetApp Volumes 上电子设计自动化 (EDA) 工作负载的架构模式。
NetApp Volumes 提供高度可伸缩的 NFS 共享存储,以支持 EDA 工作负载。这些工作负载会处理 PB 级数据集(包含数百万个小文件),执行大量元数据目录操作,并在数千个计算核心上实现突发性并行 I/O。 NetApp Volumes 可通过将卷从项目大小扩展到大容量卷,使设计库、工具链和临时数据保持可访问状态,并可选择使用 FlexCache 来实现混合设计和扇出设计。以下模式将常见的 EDA 部署模型映射到这些功能。
如需查看 GitHub 参考实现(例如 eda-all-on-cloud 和 eda-hybrid-cloud),请参阅 Cluster Toolkit EDA 示例。
架构模式
下表总结了 EDA 工作负载的常见模式。最适合您用例的模式取决于您的主要数据驻留在何处,以及您希望如何扩缩读取性能和计算。
| 模式 | 使用场景 | 主要 NetApp Volumes 功能 |
|---|---|---|
| 计算集群的大容量卷 | 设计数据和工具链位于 Google Cloud 中,需要大规模的单个共享命名空间 | 大容量池和卷、多卷布局以及部署组生命周期 |
| 突发至云端 | 主要数据集位于本地或其他区域,您需要云端计算来应对高峰需求 | 来自本地 ONTAP 源的 FlexCache、预填充和预先存在的卷 |
| 通过扇出缓存实现性能伸缩 | 读取密集型阶段需要比单次导出所能提供的更高的总吞吐量或局部性 | 每个大容量卷有多个 FlexCache 卷或多个存储端点 |
使用大容量卷作为计算集群的文件存储空间
当计算和持久性数据都在 Google Cloud中运行时,请使用此模式,例如,全新 EDA 农场、迁移的设计中心或拥有其数据集的专用云突发分区。
大容量卷可解决的难题
大容量卷可满足大规模 EDA 工作负载对高容量、高性能和高并发的要求。此配置可解决以下难题:
容量限制:可容纳大型工作集,例如库、IP 块和回归临时数据。
高元数据和 I/O 负载:可处理密集型元数据路径(包括
readdir和stat操作)、小型随机 I/O 和高顺序带宽。
推荐的布局
不要将所有数据都放在一个大卷中,而是根据数据的生命周期和访问模式将数据分区到多个卷中。
下表介绍了建议的数据分区布局:
| 卷角色 | 常见数据类型 | 访问模式和生命周期 |
|---|---|---|
| 工具 | 供应商二进制文件和许可的 EDA 安装 | 以读取为主、留存时间长且导出稳定 |
| 库 | PDK、标准单元和参考设计 | 以读取为主、文件数量多,并且受益于客户端上的属性缓存调整 |
| 首页 | 用户点文件和小项目状态 | 混合读/写和中等元数据速率 |
| 暂存 | 运行目录和中间结果 | 高流失率、最大容量和最高 IOPS 需求 |
Cluster Toolkit 蓝图 eda-all-on-cloud 会预配此布局,其中包含通过 NFS 装载 NetApp Volumes 的 Slurm 管理型 Compute Engine 分区。
何时使用大容量卷
对于大于 4.8 TiB(Flex Unified)或 15 TiB(高级和极限)的卷,请创建大容量卷。这些卷可扩展到非常大的容量,并提供更高的吞吐量和 IOPS 上限。超出单端点限制的暂存卷和库卷适合此配置。
大规模分发客户端
大容量卷会向同一导出公开多个存储端点 (IP 地址)。将 NFS 客户端分布在多个端点上,以扩缩总吞吐量并防止单个 IP 地址成为瓶颈。您可以使用以下任一选项:
轮询 DNS(建议大规模使用):创建列出多个 IP 地址的 Cloud DNS A 记录。使用 FQDN 进行挂载,以便每个客户端在挂载时解析为一个地址。如果更改 DNS 记录,请重新挂载。
静态分片:将客户端划分为多个组,并将每个组装载到所选端点,以实现确定性的负载放置。
在全云架构中,您可以在一个 Google Cloud 区域中为工具、库和暂存区预配单独的 NetApp Volumes 导出。工具和库包含只读参考数据;scratch 包含运行目录和检查点,通常是一个大容量卷。同一 VPC 中的 Slurm 管理型 Compute Engine 节点使用 NFS 装载每个导出。存储部署在 base 部署组中,计算部署在 cluster 组中,这样您就可以扩缩或删除集群,而无需删除卷。
爆发到云端
如果权威设计数据保留在本地或远程 ONTAP 系统中,并且您希望在 Google Cloud 计算上运行回归、特征分析或峰值容量作业,而无需先复制整个库,请使用此模式。
利用 FlexCache 解决混合云存储难题
FlexCache 卷通过提供以下优势,解决了 EDA 环境中常见的混合云存储挑战:
类似 LAN 的访问性能:WAN 延迟时间和带宽限制了云端计算核心读取本地数据集的速度。在工作集缓存后,FlexCache 会在读取密集型阶段和元数据操作中在本地提供服务,以解决此问题。
按需块级缓存:在每个作业之前将整个库复制到云端会造成启动延迟并重复使用存储空间。FlexCache 仅缓存已访问的数据块,从而缩短启动时间并减少总体云存储空间用量。
统一的来源:您无需管理断开连接的数据副本,而是可以在云中使用本地 NFS 导出,同时仍可在本地来源卷中维护单个一致的副本。
FlexCache 行为和特征
您可以在 NetApp Volumes 中创建 FlexCache 卷,该卷指向现有的 ONTAP 源卷。 缓存数据的读取由 Google Cloud提供。冷读取会从 ONTAP 源卷中检索一次块,然后在本地提供这些块。默认情况下,写入操作使用回写:缓存将写入操作转发到源,并使受影响的缓存数据失效,从而保持缓存之间的一致性。
以下是 EDA 环境中 FlexCache 的主要特征:
块级、仅拉取缓存:只有已访问的数据才会占用缓存容量。对于每次运行仅部分访问的大型库,稀疏卷非常高效。
一致的当前读取:从缓存或来源读取的数据是一致的。 如果写入模式符合 FlexCache 指南,则此方法适用于共享参考库。
预热后的类 LAN 读取延迟时间:元数据密集型和吞吐量密集型读取阶段(例如库遍历和重复引用文件)在工作集缓存后会受益。
预填充:为避免在首次访问时出现冷读取延迟,请在开始作业之前为已知运行列表预填充目录。
混合参考蓝图
eda-hybrid-cloud 使用 pre-existing-network-storage 装载预先存在的卷,例如工具、库、主目录和临时目录。卷可以是标准 NetApp Volumes 导出、大容量卷或 FlexCache 卷。在集群蓝图之外预配存储空间可避免在拆除计算时意外删除,并支持您在 ONTAP 中管理的 FlexCache 源。
请考虑以下操作指南:
为工作集而非完整源卷容量调整缓存卷的大小。
在源卷(ONTAP 中的
-atime-update)上停用或限制访问时间更新,以避免不必要的缓存失效。如需了解详情,请参阅 FlexCache 概览。仅当您的流程需要严格的跨缓存拒绝读取语义时,才启用全局文件锁定。此方法会增加延迟时间,并将可用性与原始链接相关联。
规划源站与Google Cloud之间的网络连接和带宽。使用绕写时,写密集型阶段仍受来源或网络链接的限制。
在混合读取突发架构中,权威工具和库数据驻留在本地 ONTAP 系统上。NetApp Volumes 在 Google Cloud 中托管 FlexCache 卷,这些卷使用广域网或专用链接引用这些源。 Google Cloud 中的 Slurm 节点会装载 FlexCache 导出。当数据处于“暖”状态时,系统会从缓存中提供读取服务;冷读取会从本地源检索块。对于从云端计算接收大量写入流量的暂存和检查点,请在与集群相同的区域中创建一个单独的云原生暂存卷,以将写入操作保留在本地,而不是通过具有本地来源的 FlexCache 路由持续的写入流量。
通过扇出缓存实现性能伸缩
如果单个导出(即使是高容量卷)无法为流程的某个阶段提供足够的总读取吞吐量或客户端扇出,请使用此模式。
您可以通过两种方式实现扇出:
扇出 FlexCache 卷
创建多个由同一源卷支持的 FlexCache 卷,并在不同的缓存上装载不同的计算池(或作业类型)。每个缓存独立预热,在不同的 NetApp Volumes 端点之间扩展读取 I/O,并隔离工作负载之间的抖动,例如库预处理与长回归。
下表比较了单 FlexCache 部署方法和多 FlexCache 部署方法。
| 方法 | 秤 | 权衡 |
|---|---|---|
| 单个 FlexCache | 简单,一个装载路径 | 一个缓存容量和吞吐量上限 |
| 多个 FlexCache(扇出) | 聚合缓存读取吞吐量;按池隔离 | 需要管理的卷更多;工作集在缓存之间拆分 |
| 仅限来源(无缓存) | 单站点的最强写入一致性 | 云计算的广域网延迟时间 |
如果您提前知道作业输入,请在每个扇出缓存上使用预填充。
具有多个端点的大容量卷上的扇出
大规模使用的大容量卷和 FlexCache 卷会为每个卷公开多个 IP 地址。将每个 IP 视为具有自己的连接槽预算的存储端点。
如果您有数百或数千个 NFS 客户端,请考虑以下事项:
减少每个客户端的 RPC 插槽表条目:例如,在 NFSv3 上,每个客户端有 8 个插槽,这样每个端点的未完成操作总数会保持在建议的限值内(整个场中每个端点大约有 10,000 个插槽)。如需了解详情,请参阅 Linux NFS 并发。
在多个端点之间分散装载:使用 Cloud DNS 轮循或静态分片。
如需实现 FlexCache 扇出,请使用一个源卷(本地 ONTAP 或云 ONTAP 模式卷)来支持 NetApp Volumes 中的多个 FlexCache 卷。使用不同的消费者(例如 Slurm 分区或作业类)装载每个缓存,以隔离导出之间的工作集和读取负载。
如需实现多端点扇出,请使用一个大容量卷,该卷可在多个 IP 地址上公开相同的 NFS 导出。通过以下方式将客户端分散到这些端点:为每个 IP 地址分配固定的客户端组,或装载解析为每个装载点一个地址的 DNS 名称。每个端点都有自己的连接预算;分配客户端有助于避免将整个场范围内的 I/O 集中在单个 IP 地址上。
组合模式
对于生产 EDA 环境,您可以结合使用以下架构模式来优化性能:
完全在云端:使用大容量临时卷,并使用较小的标准卷来存储工具和主目录。
混合:使用 FlexCache 存储库和工具,并使用云端配置的临时卷存储作业输出。
扇出:每个站点或每个调度程序队列使用 FlexCache,并为云原生大型临时卷使用多端点 DNS。
根据每个层级的容量和性能需求,匹配卷服务级别和存储池类型(Flex 统一常规容量与大容量)。如需了解详情,请参阅服务等级。