通过遵循最佳做法来提高 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://www.mzph.cn/news/678413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新春快乐(烟花、春联)【附源码】

新春快乐 一&#xff1a; C语言 -- 烟花二&#xff1a;Python -- 春联三&#xff1a;Python -- 烟花四&#xff1a;HTML -- 烟花 一&#xff1a; C语言 – 烟花 运行效果&#xff1a; #include <graphics.h> #include <math.h> #include <time.h> #include…

电商小程序07显示用户个人信息

目录 1 全局变量2 控制登录按钮显示3 设置布局4 搭建我的页面5 修改个人信息总结 在登录章节我们已经实现了用户名和密码登录首页的功能&#xff0c;在登录之后&#xff0c;可以切换到我的页面&#xff0c;显示用户的头像和名称&#xff0c;可以修改个人信息。本篇我们介绍一下…

【Spring MVC篇】参数的传递及json数据传参

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、普通参数的传…

STM32能够做到数据采集和发送同时进行吗?

STM32能够做到数据采集和发送同时进行吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「STM32的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&am…

专业140+总分420+河海大学863信号与系统考研经验电子信息通信与信息技术,真题,大纲,参考书。

今年的成绩出来倍感欣慰&#xff0c;决定考研的时候并没有想到自己可以考出420的分数&#xff0c;通过自己一年来的努力&#xff0c;成功上岸&#xff0c;期中专业课863信号与系统140接近满分&#xff08;非常感谢信息通信Jenny老师的专业课辅导和平时悉心答疑&#xff0c;不厌…

【MATLAB源码-第138期】基于matlab的D2D蜂窝通信仿真,对比启发式算法,最优化算法和随机算法的性能。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 D2D蜂窝通信介绍 D2D蜂窝通信允许在同一蜂窝网络覆盖区域内的终端设备直接相互通信&#xff0c;而无需数据经过基站或网络核心部分转发。这种通信模式具有几个显著优点&#xff1a;首先&#xff0c;它可以显著降低通信延迟&…

波奇学Linux: 文件描述符

文件和操作系统的关系 操作系统控制进程&#xff0c;文件的打开是在进程中进行。意味着用来控制进程的PCB必然有文件的信息&#xff0c;操作系统通过控制PCB的信息来控制文件的读写。 Q1&#xff1a;如何证明文件打开是在进程中进行&#xff1f; 编写c文件调用fopen来操作文件…

SpringBoot 接入讯飞星火大模型实现对话

申请地址 https://xinghuo.xfyun.cn/sparkapi?scrprice 免费申请200万Token 开发文档 https://www.xfyun.cn/doc/spark/Web.html#_1-接口说明 页面最下面有相关demo可以参考 介绍 接口是以套接字的形式分段返回&#xff0c;而且非http请求&#xff0c;比较繁琐&#xff0c;官…

如何使用Airtest进行UI自动化测试

一、环境搭建 1、Airtest客户端下载 访问官网http://airtest.netease.com/&#xff0c;根据自己的系统下载相应的客户端安装&#xff1b; 2、python工具下载与环境搭建 在本地python环境中安装airtest和pocoui&#xff0c;然后用命令行运行脚本&#xff1b; 1、建议使用3.…

猫头虎分享已解决Bug || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10]

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

奶茶点餐|奶茶店自助点餐系统|基于微信小程序的饮品点单系统的设计与实现(源码+数据库+文档)

奶茶店自助点餐系统目录 目录 基于微信小程序的饮品点单系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、商品信息管理 2、商品评价管理 3、商品订单管理 4、用户管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 …

Linux操作系统基础(八):Linux的vi/vim编辑器

文章目录 Linux的vi/vim编辑器 一、vi/vim编辑器介绍 二、打开文件 三、VIM编辑器的三种模式(重点) 四、命令模式相关命令 五、底行模式相关命令 Linux的vi/vim编辑器 一、vi/vim编辑器介绍 vi是visual interface的简称, 是Linux中最经典的文本编辑器 vi的核心设计思想…

在 Windows上恢复删除照片的 4 种有效方法

您是否曾在 Windows 7/8/10/11 中不小心删除过照片&#xff1f;如何轻松快速地恢复已删除的照片&#xff1f;在这里这篇文章列出了几种在Windows 11/10/8/7中恢复已删除照片的可行方法&#xff0c;而MiniTool数据恢复软件 是丢失照片恢复的最佳选择。 意外删除的照片 根据一项…

蓝桥杯官网练习题(翻转)

问题描述 小蓝用黑白棋的 n 个棋子排成了一行&#xff0c;他在脑海里想象出了一个长度为 n 的 01 串 T&#xff0c;他发现如果把黑棋当做 1&#xff0c;白棋当做 0&#xff0c;这一行棋子也是一个长度为 n 的 01 串 S。 小蓝决定&#xff0c;如果在 S 中发现一个棋子…

口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)

口腔小程序目录 目录 基于微信小程序的口腔门诊预约系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序前台界面实现 2、后台管理员模块实现 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、论文参考 七、最新…

【调试】pstore原理和使用方法总结

什么是pstore pstore最初是用于系统发生oops或panic时&#xff0c;自动保存内核log buffer中的日志。不过在当前内核版本中&#xff0c;其已经支持了更多的功能&#xff0c;如保存console日志、ftrace消息和用户空间日志。同时&#xff0c;它还支持将这些消息保存在不同的存储…

JavaScript 遍历文档生成目录结构

JavaScript 遍历文档生成目录结构 要遍历 HTML 文档并生成目录结构&#xff0c;你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码&#xff0c;演示了如何遍历文档中的标题元素&#xff08;例如 <h1>、<h2>、<h3> 等&#xff09;&…

Rust基础拾遗--核心功能

Rust基础拾遗 前言1.所有权与移动1.1 所有权 2.引用3.特型与泛型简介3.1 使用特型3.2 特型对象3.3 泛型函数与类型参数 4.实用工具特型5.闭包 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总&#xff0c;读者通读此系列文章就可以轻松的把该语言基础捡起来…

在VSCode中创建Java项目

在VSCode中创建Java项目 首先&#xff0c;保证安装了Java的JDK. WinR -> 输入cmd -> 输入 java -version -> 然后可以看到安装的JDK版本&#xff0c;如果没安装可以去找教程。 JDK安装参考教程 打开VSCode&#xff0c;打开扩展&#xff08;Ctrl Shift S&#xff…

FreeRTOS.chg脚本出现意外状态

PE代码生成的时候遇到这么个问题 警报如下 Description Resource Path Location Type ERROR: Unexpected status of script: Beans\FreeRTOS\FreeRTOS.chg, please contact Freescale support. M18_BMCU FreeRTOS Processor Expert Problem 意思就是这个脚本文件有问题&…