通过遵循最佳做法来提高 EDA 和 HPC 应用程序的 Azure NetApp 文件性能

介绍

Azure NetApp 文件是一项托管存储解决方案,适用于各种方案,包括高性能计算 (HPC) 基础结构。 低延迟和每秒高 I/O 操作数 (IOPS) 对于大规模企业而言是一种很好的组合。

假设你就职于一家半导体公司。 你的任务是设计公司的集成电路芯片,其需要很多电子设计自动化 (EDA) 模拟。 你在本地没有足够的容量用于此项目,因此你决定使用 Azure 来满足那些 HPC 模拟需求。

管理层希望你能够及时且经济高效地完成此项目。 你选择 Azure NetApp 文件作为后端存储解决方案,因为它提供了与本地类似的体验和性能。 你需要了解性能技巧和最佳做法,以提高 EDA 应用程序的 Azure NetApp 文件性能。

本模块介绍关于参考体系结构、客户端虚拟机 (VM) 和网络的性能建议。 接下来,我们讨论性能技巧,包括装载选项和客户端 VM 配置。 最后,我们检查基准检验结果,以验证所讨论的性能技巧。

学习目标

学习完本模块以后,您将能够:

  • 列出能够提高 Azure NetApp 文件性能的最佳做法。
  • 介绍这些 Azure NetApp 文件性能最佳做法对 FIO 和 EDA 基准套件的影响。

先决条件

  • 了解 Azure NetApp 文件的存储层次结构,包括 NetApp 帐户、容量池和卷。
  • 能够设置 Azure NetApp 文件并创建卷。
  • 能够从虚拟机装载 Azure NetApp 文件卷。

总体性能建议

在此模块中,我们介绍在 Azure NetApp 文件上运行 EDA 应用程序时关于参考体系结构、客户端 VM 和网络的性能建议。

通过审阅参考体系结构来了解 EDA 工作负载

此 EDA 工具和芯片模拟过程可能具有不同的参考体系结构。 下面的参考体系结构展示了一般用例,即如何在云突发(混合)和完全在 Azure 上这两种方案中将 Azure NetApp 文件用于 EDA 工作负载。

关于虚拟网络、加速网络和客户端更新的建议

尽可能将客户端 VM 和 Azure NetApp 文件驻留在相同的区域和虚拟机中,这样可以减少两者之间的网络延迟。

如果支持,在客户端 VM 上启用加速网络,以提供超过 30 Gbps 的网络吞吐量。 加速网络降低了从客户端 VM 到 Azure NetApp 文件的延迟。 它还提高了整体性能,特别是在分布式多方案分析 (DMSA) 类型的模拟中。

最佳做法是运行适用于操作系统的最新修补程序版本。 还应将网络文件系统 (NFS) 实用工具更新到其最新版本,以获得最新的 bug 修复和功能。 这些更新有助于确保最佳性能和系统稳定性。

例如,运行以下命令:

sudo yum update
sudo yum update nfs-utils

装载选项和客户端 VM 配置

在此模块中,我们讨论装载选项和客户端 VM 配置,以便在 Azure NetApp 文件上运行 HPC 或 EDA 应用程序时提高性能。

NFS 客户端的最佳做法取决于所使用的应用程序。 下面的建议不是绝对的,可以通过应用程序建议或工作负载测试进行替代。 因此,强烈建议在部署到生产环境之前测试这些做法。

使用 actimeo 和 nocto 装载选项来提高性能

可以使用以下装载选项提高相对静态数据集和大规模读取方案的性能:

  • actimeo:控制目录的 NFS 客户端缓存特性。 如果未指定此值,则 NFS 客户端将使用最大值 60秒。
  • nocto:表示“不用关闭再打开”,这意味着文件可以在写入完成前关闭,以节省时间。 默认情况下,未设置 nocto。 这意味着所有文件都得等待写入完成,然后才允许关闭。

大多数 HPC 应用程序(包括此方案中的 EDA)都有相对静态数据集。 在此案例中,你可以使用 nocto 和 actimeo 来减少对存储的 getattr 或访问操作,并加快应用程序的速度。

例如,我们建议为 EDA 工具和库卷设置 "nocto,actimeo=600"。 由于这些文件不会发生变化,因此无需维护缓存一致性。 设置这些装载选项后,即无需调用元数据并可提高整体性能。

调整系统参数以获得最佳性能

运行下面的命令,对客户端 VM 应用基本的服务器优化和典型的延迟优化:

sudo systemctl enable --now tuned
sudo tuned-adm profile latency-performance

以下部分或所有系统参数 (/etc/sysctl.conf) 可能有助于 Linux 客户端 VM 获得最佳性能。 如果客户端 VM 有大量 RAM 或更高的网络带宽(如 InfiniBand),则不妨设置一些比以下示例所示更高的值。

#
# Recommended client tuning 
#
# For more information, see sysctl.conf(5) and sysctl.d(5)
# Network parameters, in units of bytes
net.core.wmem_max = 16777216
net.core.wmem_default = 1048576
net.core.rmem_max = 16777216
net.core.rmem_default = 1048576
net.ipv4.tcp_rmem = 1048576 8388608 16777216
net.ipv4.tcp_wmem = 1048576 8388608 16777216
net.core.optmem_max = 2048000
net.core.somaxconn = 65535
#
# These settings are in 4-KiB chunks, in bytes:
# Min=16MiB, Def=350MiB, Max=16GiB
# In units of 4K pages
net.ipv4.tcp_mem = 4096 89600 4194304
#
# Miscellaneous network options and flags
#
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.route.flush = 1
net.ipv4.tcp_low_latency = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_slow_start_after_idle = 0
net.core.netdev_max_backlog = 300000
#
# Various file system and page cache options
#
vm.dirty_expire_centisecs = 100
vm.dirty_writeback_centisecs = 100
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
#
# Recommended by: https://cromwell-intl.com/open-source/performance-tuning/tcp.html
#
net.ipv4.tcp_sack = 0
net.ipv4.tcp_dsack = 0
net.ipv4.tcp_fack = 0

若要让这些优化持久,请运行下面的代码:

sudo sysctl -P

适当时,使用装载选项 nconnect 扩展网络连接

在 Linux 内核 5.3 或更高版本中,nconnect NFS 装载选项已正式发布。 若要检查客户端 VM 的 Linux 内核,请运行下面的代码:

uname -r

nconnect 旨在为客户端上的每个 TCP 连接或装入点提供多个传输连接。 此技术有助于提高 NFS 装载的并行度和性能。

客户端数量越小,nconnect 帮助提高性能的价值就越高,因为它可能会利用所有网络带宽。 它的价值随着客户端数量增加而逐渐减少,因为总共只有一定数量的带宽。

如果使用的是 nconnect=8 或 16,请考虑设置 sunrpc.tpc_max_slot_table_entries=256 或 512

nconnect 选项仅适用于 Linux 内核 5.3 + VM。 升级内核时,可能需要重启 VM。 也就是说,它可能不适用于某些案例。

当只考虑性能时,使用 NFSv3,而不是 NFSv4.1

Azure NetApp 文件支持 NFSv3 和 NFSv4.1。 应验证应用程序需要的版本,并使用适当的版本创建卷。

当只考虑性能时,在大多数 HPC 和 EDA 应用程序中,NFSv3 的性能将优于 NFSv4.1。

为 rsize 和 wsize 装载选项选择适当大小

装载选项 rsize 和 wsize 确定在 NFS 客户端和服务器之间发送的每个数据包的数据量。 设置这些选项可能有助于优化特定应用程序的性能,因为最适合某个应用程序的方法可能并不适合其他应用程序。

关于 Azure NetApp 文件的最佳做法是,将 rsize 和 wsize 设置为相同值。 通常建议在装载选项中将 rsize 和 wsize 值都设置为 262144(256 K)

为 hard、soft 和 intr 装载选项选择适当的设置

hard和 soft 装载选项指定使用 NFS 文件的程序是否应执行下列操作之一:

  • 如果 NFS 服务器不可用,请停止并等待 (hard) 服务器恢复到联机状态。
  • 报告错误 (soft)。

intr 装载选项允许在装载被指定为 hard 装载时中断 NFS 进程。 建议在适用时结合使用 intr 与 hard 装载。

考虑不更改 MTU

对于 Azure VM,默认的最大传输单位 (MTU) 为 1,500 字节。 不建议客户为巨型帧增加 VM MTU。

装载示例

下面的示例代码通过使用上述适用于 actimeonoctoNFSv3nconnectrsizewsizehardintrtcp 的最佳做法和默认 MTU (1,500) 来装载 Azure NetApp 文件卷:

sudo mount -t nfs -o rw,nconnect=16,nocto,actimeo=600,hard,intr,rsize=262144,wsize=262144,vers=3,tcp 10.1.x.x:/ultravol ultravol

基准结果

现在,我们检查基准结果,验证我们在上一单元中讨论的性能技巧。 具体来说,我们重点介绍如何使用 SPEC SFS 基准套件以生成模拟类似 EDA 生产的工作负载的多个线程。 此外,我们将展示 FIO 结果,以检查一些性能做法。

这两个基准工具的概览

SPEC SFS 套件是 EDA 的标准行业基准。 典型的 EDA 工作负载包括功能阶段和物理阶段。 功能阶段驱动大多数随机 I/O 和文件系统元数据操作。 物理阶段驱动大规模顺序读取和写入操作。

FIO 是一种 I/O 工具,它可以生成一致的随机或顺序读取/写入负载,以对存储目标的 IOPS 和吞吐量进行基准检验。

SPEC EDA 工具的基准检验结果

本部分中的图演示了 I/O 和延迟曲线。 它们检查以下性能做法的一些组合:

  • nocto,actimeo=600
  • sysctl tuned
  • nconnect=16

应用上述所有三种做法后,每秒 I/O 操作数会增加,同时仍保持较低的延迟(小于 1 毫秒)。

下图表明,NFSv3 的性能优于 NFSv4.1。

下图表明,rsize=wsize=262144(256 K) 的性能优于其他设置。

FIO 工具的基准结果

以下 FIO 命令分别对 IOPS 和吞吐量进行基准检验。

Bash复制

// FIO commands to benchmark IOPS:
// 8K Random Reads
fio --name=8krandomreads --rw=randread --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
// 8K Random Writes
fio --name=8krandomwrites --rw=randwrite --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting// FIO commands to benchmark throughput:
// 64K Sequential Reads
fio --name=64kseqreads --rw=read --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
// 64K Sequential Writes
fio --name=64kseqwrites --rw=write --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting

以下两个图表明了在优化 nocto,actimeo=600nconnect=16 和 sysctl 时,Azure NetApp 文件可以实现更高的 IOPS 和吞吐量。


摘要

回顾一下,你使用 Azure NetApp 文件作为后端存储解决方案,以便在 Azure 上运行 HPC 和 EDA 应用程序。 你需要了解性能技巧和最佳做法,以提高这些应用程序的 Azure NetApp 文件性能。

本模块介绍了关于参考体系结构、客户端 VM 和网络的性能建议。 然后,我们讨论了几个性能技巧,包括装载选项和客户端 VM 配置。 最后,我们检查了 SPEC EDA 和 FIO 基准检验结果,以验证所讨论的性能技巧。

现在,你应该能够列出并描述有助于提高 HPC 和 EDA 应用程序的 Azure NetApp 文件性能的性能做法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2776936.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

P59---第二阶段B C 相电流

P59---第二阶段B C 相电流

curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION

文章目录 curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION概述笔记END curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION 概述 在看一个开源工程, 里面用到了curl和openssl, 但是工程使用vcpkg来管理的包, 用CMake来编译 依赖太多了, win10 编译选项为 vs2019 x64/Win32(或者Ninja)…

STM32F1 - 标准外设库_规范

STM32F10x_StdPeriph_Lib_V3.6.0 1> 头文件包含关系2> .c文件内部结构3> 宏定义位置4> 位掩码bit mask5> .c文件中定义私有变量 1> 头文件包含关系 1个头文件stm32f10x.h 就把整个MCU以及标准外设库,就管理了; 2> .c文件内部结构 …

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障: 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列,服务器操作系统是WINDOWS SERVER,服务器中存放企业数据,无数据库文件。 服务器出故障之前出现过几次意外断电的情况,服务器断电…

C++ 中的模型预测控制(01/2)

目录 一、说明二、MPC原理说明三、分解算法的来源并显示关键特征,四、C 实现说明五、平衡 Q 和 R六、资源下载地址 一、说明 以下文章介绍了应用模型预测控制器的简单控制系统方法。本文讨论了这种控制的基本机制,该机制适用于各种工程领域。 MPC 涉及对…

4.5 特效规范与拆分实现及程序的调用原理

一、特效基础流程 落地方案 连入游戏 需求 策划需求,美术需求 需要的SHADER,功能 测试/反馈/修改 效果迭代 满足功能的特效 概念设计 参考图,设计图 二、规范的设计原理与目的 节约沟通成本 保持项目的一致性 工作交接可以更加便捷 降低出错的概率 提升工作效率…

【数据结构】前缀树的模拟实现

目录 1、什么是前缀树? 2、模拟实现 2.1、前缀树节点结构 2.2、字符串的添加 2.3、字符串的查寻 2.3.1、查询树中有多少个以字符串"pre"作为前缀的字符串 2.3.2、查询某个字符串被添加过多少次 2.4、字符串的删除 3、完整代码 1、什么是前缀树&…

Vue-Vue3 集成编辑器功能

1、安装依赖 编辑器插件需要安装 wangeditor/editor 和 wangeditor/editor-for-vue 两个插件 npm install wangeditor/editor --savevue3运行如下命令安装 npm install wangeditor/editor-for-vuenext --savevue2运行如下命令安装 npm install wangeditor/editor-for-vue -…

设计模式3-责任链模式

责任链模式是一种行为设计模式,它允许你创建一个对象链。请求沿着这条链传递,直到有一个对象处理它为止。这种模式通常用于需要以某种方式动态地决定处理请求的顺序或方式的情况。 类图: 从图中可见最大的特点是AbstractHandler它自己聚合了自…

华清作业day56

SQLite特性: 零配置一无需安装和管理配置;储存在单一磁盘文件中的一个完整的数据库;数据库文件可以在不同字节顺序的机器间自由共享;支持数据库大小至2TB;足够小,全部源码大致3万行c代码,250KB…

Redis——集群环境部署

一般情况下的Redis,我们都是在一台服务器上进行操作的,也就是说读、写以及备份操作都是在一台Redis服务器上进行的。随着项目访问量的增加,对Redis服务器的操作也更加频繁,虽然Redis读写速度都很快,但是一定程度上也会…

书生·浦语大模型全链路开源体系

参考:https://www.bilibili.com/video/BV1Rc411b7ns/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1 背景: 人工智能的发展从针对特定任务,用一个模型解决一个问题过渡到一个模型来应对多模态、多任务,大模…

程序设计基础实验破解(5)

一.前言 我上大一时接触到程序设计基础这门课,这门课有时会有实验,我便常常摸鱼,利用CSDN来做, 虽然有时搜不到,但每次搜到时我想:爽!!! 于是我也开始写,写…

【FFmpeg】ffplay 命令行参数 ⑤ ( 设置音频滤镜 -af 参数 | 设置统计信息 -stats 参数 | 设置同步时钟类型 -sync 参数 )

文章目录 一、ffplay 命令行参数 - 音频滤镜1、设置音频滤镜 -af 参数2、常用的 音频滤镜 参数3、音频滤镜链 示例 二、ffplay 命令行参数 - 统计信息1、设置统计信息 -stats 参数2、关闭统计信息 -nostats 参数 三、ffplay 命令行参数 - 同步时钟类型1、设置同步时钟类型 -syn…

盘点2024年1月Sui生态发展,了解Sui近期成长历程!

2024年1月是Sui生态开门大吉的一个月,在2023交出优异的成绩单后,2024年的首月也圆满结尾。在BTC现货ETF通过的大背景之下,Web3行业多项指标持续展现增长趋势。Sui也紧随行业脚步,开展了一系列活动助力Web3行业和生态持续发展。 其…

改变终端安全的革命性新兴技术:自动移动目标防御技术AMTD

自动移动目标防御技术通过启用终端配置的自适应防御来改变终端检测和响应能力。产品领导者可以实施AMTD来确保实时威胁响应,并减少检测和响应安全威胁所需的时间。 主要发现 通过动态修改系统配置、软件堆栈或网络特征,自动移动目标防御(AMTD…

肯尼斯·里科《C和指针》第13章 高级指针话题(1)进一步探讨指向指针的指针变量的高级声明

13.1 进一步探讨指向指针的指针 上一章使用了指向指针的指针,用于简化向单链表插入新值的函数。另外还存在许多领域,指向指针的指针可以在其中发挥重要的作用。这里有一个通用的例子: 这些声明在内存中创建了下列变量。如果它们是自动变量&am…

第四篇:数据库安装(命令行)

数据库命令行界面安装 mysql官网,下载解压 https://dev.mysql.com/downloads/mysql/ 在安装之前先去检查一下,本地计算机的用户合组 winr(输入lusrmgr.msc) -点击组-双击administrator 如果只有这两个,那么就添加一下,提高网络服务的权限(避免出现mysql启动失败) …

Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasm

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…

FPGA实现ISP用于无人车、无人机配送的方案调研

查到一个always 奥唯思公司做的用FPGA实现ISP的方案,采用易灵思钛金16nm的FPGA Ti60F225,通过MIPI CSI RX采集图像传感器的数据,在FPGA内部经过一系列复杂的ISP运算后,再通过MIPI CSI TX将图像数据发送给后端。 一套完整的ISP&a…