HPC 虚拟机的运行状况检查
Azure 提供了一些自动测试来帮助发现运行不正常的虚拟机。 通过这些自动测试,你可以在发现运行不正常的虚拟机 (VM) 时将其从舰队中移除,这样客户就不会有机会访问这些 VM 了。 然而,有时,这些自动测试并不能捕获所有运行不正常的 VM。
注意
Azure 中的自动运行状况检查正处于不断更新和改进中。
某些高性能计算 (HPC) 应用程序(尤其是紧密耦合的 HPC 应用程序)对不正常的 VM 敏感。 这种敏感性会导致 HPC 应用程序出现运行时故障或运行速度低于预期。 随着紧密耦合 HPC 应用程序的规模扩大,你遇到运行不正常的 VM 的可能性也会增加。
作为预防措施,应运行你自己的运行状况检查,尤其是在大规模运行紧密耦合 HPC 应用程序时。 自行运行运行状况检查可提高以最佳方式大规模运行 HPC 应用程序的概率。
建议 VM 运行状况检查验证以下组件的运行和性能是否符合预期:InfiniBand 网络、内存、存储和 CPU 核心。
InfiniBand 运行状况检查
在大多数情况下,通过 ping-pong 测试(发送和接收消息)来测量点对点 InfiniBand 延迟和带宽就足以验证 InfiniBand 网络的运行状况。
Intel IMP-MPI1 PingPong 测试是一个很好的选择,因为它是预生成的,可以在 Azure 市场的 CentOS HPC 7.7 及更高版本映像上使用。 有一个版本包含在 Intel MPI(消息传递接口)环境中,并有一个版本包含在 HPC-X MPI 环境中,不过通常使用 HPC-X 版本可以获得最佳的延迟和带宽性能。 用于运行 Intel IMP-MPI1 PingPong 测试的脚本可以在 IMB-MPI 基准检验项目中找到。
下表展示了在 HPC VM 上通过 HPC-X Intel IMB-IMP1 PingPong 基准检验所测量的 InfiniBand 网络延迟和带宽。 超出以下范围的值将视为运行不正常。
VM SKU | 预期网络延迟 | 预期网络带宽 |
---|---|---|
HB120_v2 | < 2 微秒 | > 23.0 GB/s |
HC44 | < 2 微秒 | > 11.5 GB/s |
HB60 | < 2 微秒 | > 11.5 GB/s |
要考虑的其他工具和基准是 osu-micro-benchmarks 和 Mellanox ClusterKit。 后者还预安装在 HPC-X 环境中的 CentOS HPC 7.7 及以上版本的 Azure 市场映像中。 示例 ClusterKit 脚本可以在 Azure 运行状况检查脚本项目中找到。
内存运行状况检查
测量内存带宽是验证 VM 的内存是否运行正常的好方法。 Intel 内存延迟检查器 (MLC) 是用于对内存带宽进行基准检验的有用工具。 其他选择包括生成并运行流基准检验,或使用也可以测量内存带宽的 ClusterKit。 可以在 Azure 运行状况检查脚本项目中找到示例脚本。
下表展示了在运行 Intel MLC 的每个 HPC VM 上测量的预期内存带宽。 超出以下范围的内存带宽将视为运行不正常。
VM SKU | 预期内存带宽 |
---|---|
HB120_v2 | > 300 GB/s |
HC44 | > 200 GB/s |
HB60 | > 250 GB/s |
存储运行状况检查
请务必了解所使用的存储解决方案及其预期 I/O 性能,然后通过运行 I/O 基准检验来验证预期 I/O 性能。 可以从多种 I/O 基准工具中进行选择:
为了测量存储运行状况,你将创建最大 I/O 吞吐量来生成 IOPS 基准。 然后,将存储解决方案测量的 I/O 基准结果与预期 I/O 性能进行比较。
可以在 IOR 和 mdtest 项目中找到示例 IOR 脚本。 可以在 FIO 项目中找到示例 FIO 脚本。
CPU 核心运行状况
验证 CPU 核心是否正常且性能是否符合预期的一个好方法是,测量最大每秒浮点运算数 (FLOPS)。 然后将测量结果与理论上的预期 FLOPS 进行比较。
可以使用 High Performance Linpack (HPL) 来测量最大 FLOPS。 运行 HPL 的一个副作用是,它可以帮助识别一些坏内存 DIMM(双内联内存模块)。运行 HPL 的另一个好处是,它可以帮助识别一些坏的内存 DIMM(双列直插式内存模块)。 此外,它还可以帮助评估 HPC 群集的整体运行状况,因为它对紧密耦合的通信执行了一些有限的测试。
HPC 数据中心通常使用 HPL 嵌入到新的 HPC 系统中。 可以在 linpack 项目中找到示例 HPL 脚本。