通过遵循最佳做法来提高 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 文件性能的性能做法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ajax+JSON学习一

AjaxJSON学习一 文章目录 前言一、Ajax简介1.1. Ajax基础1.2. 同源策略 二、Ajax的核心技术2.1. XMLHttpRequest 类2.2. open指定请求2.3. setRequestHeader 设置请求头2.4. send发送请求主体2.5. Ajax取得响应 总结 前言 一、Ajax简介 1.1. Ajax基础 Ajax 的全称是 Asynchron…

【项目问题解决】java. net.SocketException: Connection reset

目录 【项目问题解决】java. net.SocketException: Connection reset 1.问题描述2.问题原因3.解决思路4.解决方案5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 通过JMeter 压测接口,无并发,无间歇时间跑接口10000次报错,后续改成建个…

DBdoctor恭祝大家龙行龘龘,前程朤朤

值此新年之际,DBdoctor恭祝大家龙行龘龘,前程朤朤。尤其是当前还跟我一样奋斗在护航春节一线的战友们,祝愿大家2024年系统又快又稳。 今年是DBdoctor护航春晚的第三年,聚好看作为海信旗下的互联网科技公司,服务着海信…

再识C语言 DAY17 【什么是原码、反码和补码】

文章目录 前言本文总结于此文章 一、知识补充二、原码三、反码四,补码 总结如果您发现文章有错误请与我留言,感谢 前言 本文总结于此文章 一、知识补充 通常,1字节包含8位。C语言用字节(byte)表示储存系统字符集所需…

导入jar包的办法,若Maven报日志错误,Cannnot resolve XXXXX.jar

相信很多人在进行涉及到java工程项目,都会遇到很多问题,在pom文件中导入jar包,或许会出现cannot resolve XXXXX的问题,从而会报个别的错误。 接下来我将介绍两种导入jar包的方法 导入jar包,从官网直接下载下来相关的…

国产光耦2024:发展机遇与挑战全面解析

随着科技的不断进步,国产光耦在2024年正面临着前所未有的机遇与挑战。本文将深入分析国产光耦行业的发展现状,揭示其在技术创新、市场需求等方面的机遇和挑战。 国产光耦技术创新的机遇: 国产光耦作为光电器件的重要组成部分,其技…

Flume安装部署

安装部署 安装包连接:链接:https://pan.baidu.com/s/1m0d5O3Q2eH14BpWsGGfbLw?pwd6666 (1)将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下 (2)解压apache-flume-1.10.1-bin.tar.gz…

mysql 中文编码问题

前言 最近在学springboot整合mybatisplus技术,用到mysql数据库,然后发现在windows下插入数据表会出现中文乱码现象 (例如 “我是谁” 在数据库中就成了 “???”) windows show variables like %char%;建表时, 设置默认charset为gbk create table u…

linux系统定时任务管理

crontab使用 一、crontab简介 crontab 这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑 /etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服…

InternLM大模型实战-1.书生浦语大模型全链路开源体系

文章目录 前言笔记正文大模型成为热门关键词书生浦语开源历程从模型到应用书生浦语全链条开源开放体系数据预训练微调评测部署部署智能体LagentAgentLego 总结 前言 本系列文章是参与书生浦语全链路开源体系学习的笔记文章。B站视频教程地址: 笔记正文 大模型成为…

【玩转408数据结构】线性表——定义和基本操作

考点剖析 线性表是算法题命题的重点,该类题目实现相对容易且代码量不高,但需要最优的性能(也就是其时间复杂度以及空间复杂度最优),这样才可以获得满分。所以在考研复习中,我们需要掌握线性表的基本操作&am…

vue3集成bpmn

文章目录 前言一、依赖二、汉化配置1.引入文件2.样式文件 总结 前言 vue3 集成bpmn 配置工作流 一、依赖 "bpmn-js": "^7.3.1", "bpmn-js-properties-panel": "^0.37.2", "bpmn-moddle": "^6.0.0", "camu…

MySQL 主键策略导致的效率性能

MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment 一、准备三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键…

深度学习自然语言处理(NLP)模型BERT:从理论到Pytorch实战

文章目录 深度学习自然语言处理(NLP)模型BERT:从理论到Pytorch实战一、引言传统NLP技术概览规则和模式匹配基于统计的方法词嵌入和分布式表示循环神经网络(RNN)与长短时记忆网络(LSTM)Transform…

从模型到前端,你应该知道的LLM生态系统指南

LLM在在2023年发展的风生水起,一个围绕LLM的庞大生态系统正在形成,本文通过介绍这个生态系统的核心组成部分,来详细整理LLM的发展。 模型-核心组件 大型语言模型(llm)是人工智能应用程序背后的原材料。这些模型最初被预先训练来预测句子中的…

基于YOLOv7算法的高精度实时老鼠目标检测系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算的高精度实时老鼠目标检测系统可用于日常生活中检测与定位老鼠目标,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训练数据…

每日一练:LeeCode-113、路径总和 II【二叉树+DFS+回溯+是否有返回值】

本文是力扣LeeCode-113、路径总和 II【二叉树DFS回溯是否有返回值】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你二叉树的根节点 root 和一个整数目标和 targetSum , 找出所有从根节点到叶子节点路径总…

【精选】java初识多态 子类继承父类

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

vscode开发FPGA(0)--windows平台搭建

一、从官网下载安装VScode Download Visual Studio Code - Mac, Linux, Windows 二、安装配置插件 1. 安装Chinese(simplified)中文汉化包 2.安装Verilog-HDL/systemVerilog插件(支持verilog语法) 3.配置CTags Support插件(支持代码跳转) 1)在github下…

在虚拟机上搭建CentOS环境并配置静态IP

在虚拟机上搭建CentOS环境并配置静态IP 在进行Linux系统的学习和实践时,搭建一个本地的CentOS环境是一个非常好的方式。本文将介绍如何使用虚拟机(VM)搭建CentOS环境,并配置静态IP,以便更好地进行网络管理和测试。 步…