创建支持 HPC 的虚拟机实例


简介

紧密耦合的高性能计算 (HPC) 工作负载通常使用消息传递接口 (MPI) 来在进程和虚拟机 (VM) 实例之间进行通信。但是,要自行构建经过调整的虚拟机映像来实现最优 MPI 性能,您需要具备系统专业知识、Google Cloud 相关知识以及额外的维护时间。如需为 HPC 工作负载快速创建虚拟机实例,您可以使用 HPC 虚拟机映像。 或者,您也可以使用 H3 机器系列创建虚拟机。

HPC 虚拟机映像是基于 CentOS 7.9 或 Rocky Linux 8 的虚拟机映像,针对紧密耦合的 HPC 工作负载进行了优化。其中包含创建在 Google Cloud 上实现最佳 MPI 性能的虚拟机实例所需的预配置内核和网络调整参数。

您可以使用以下选项创建支持 HPC 的虚拟机:

优势

HPC 虚拟机映像具有以下优势:

  1. 支持开箱即用的 HPC 的虚拟机:无需手动调整性能、管理虚拟机重新启动,也不必及时了解最新 Google Cloud 更新即可实现紧密耦合的 HPC 工作负载。
  2. 紧密耦合的工作负载的网络优化:可缩短简短消息的延迟时间的优化包括在内,这种优化对很大程度依赖于点到点和 Collective 通信的应用很有利。
  3. HPC 工作负载的计算优化:可降低系统抖动的优化包括在内,使单节点高性能更容易预测。
  4. 一致、可重现的性能。虚拟机映像标准化可提供一致、可重现的应用级性能。
  5. 提升应用兼容性。与 Intel HPC 平台规范的节点级要求一致,能够在系统之间实现高度互操作性。

功能

Intel MPI Collective 调节

HPC 虚拟机映像包括使用紧凑放置政策针对 c2-standard-60c2d-standard-112 实例执行的 Intel MPI Collective 调节

预安装的 RPM

HPC 虚拟机映像预安装了以下 RPM 软件包:

  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • kernel-devel
  • ltrace
  • libXt
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • “开发工具”软件包组

快速入门

准备工作

  1. 如需使用 Google Cloud CLI 完成本快速入门中的操作,您必须先安装并初始化 Google Cloud CLI
  2. 在 Google Cloud 控制台的“项目选择器”页面上,选择或创建一个 Google Cloud 项目。

创建 HPC 虚拟机实例

创建虚拟机

我们强烈建议您选择计算优化机器类型,例如 C2C2DH3。这些虚拟机具有虚拟核心到物理核心的固定映射,并向客机操作系统公开 NUMA 单元架构,这两种特性对于紧密耦合的 HPC 应用性能至关重要。

控制台

  1. 在 Google Cloud 控制台中,转到“HPC 虚拟机 Cloud Marketplace”页面。转到“HPC 虚拟机 Cloud Marketplace”页面

  2. 点击启动

  3. 在“HPC 虚拟机部署”页面上,输入部署名称。此名称将成为虚拟机的根名称。为实例命名时,Compute Engine 会将 -vm 附加到此名称。

  4. 选择可用区机器类型。对于本快速入门,您可以保留所有设置,也可以根据需要进行更改。我们强烈建议您选择计算优化机器类型,例如 C2C2DH3

  5. 启动磁盘类型启动磁盘大小网络接口保留为默认设置。

  6. 点击部署

虚拟机实例创建完成后,Cloud Deployment Manager 即会打开,您可以在其中管理 HPC 虚拟机和其他部署。

gcloud

使用 instances create 命令创建 HPC 虚拟机。我们强烈建议您使用紧凑布置政策创建 HPC 虚拟机,以实现低网络延迟。如果单个紧凑布置政策不能满足您需要的虚拟机数量,请将虚拟机划入多个放置政策。我们建议您使用满足虚拟机数量的最低布置政策数量。

gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=cloud-hpc-image-public \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

替换以下内容:

  • VM_NAME:要创建的 HPC 虚拟机的名称。
  • ZONE:要在其中创建虚拟机的可用区
  • IMAGE_FAMILY:要用于创建虚拟机实例的映像所属的映像系列。对于基于 CentOS 的映像,请使用 hpc-centos-7;对于基于 Rocky Linux 8 的映像,请使用 hpc-rocky-linux-8
  • MACHINE_TYPE:新虚拟机的机器类型

一段时间后,虚拟机实例将创建完成。如需验证虚拟机并查看其状态,请运行以下命令:

gcloud compute instances describe VM_NAME

访问虚拟机

控制台

创建 HPC 虚拟机实例后,它会自动启动。如需访问它,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击虚拟机实例的名称。

  3. 远程访问部分中,点击第一个下拉列表,然后选择您希望使用哪种方式访问该实例。

Compute Engine 会传播您的 SSH 密钥并创建您的用户。如需了解详情,请参阅连接到 Linux 虚拟机

gcloud

创建 HPC 虚拟机实例后,它会自动启动。如需使用 SSH 访问它,请使用 compute ssh 命令

gcloud compute ssh VM_NAME

Compute Engine 会传播您的 SSH 密钥并创建您的用户。如需了解详情,请参阅连接到实例

清理

为避免系统因本快速入门中使用的资源向您的 Google Cloud 账号收取费用,请删除您创建的 HPC 虚拟机实例。

控制台

  1. 在 Google Cloud 控制台中,转到 Deployment 页面。

    转到部署

  2. 选中 HPC 虚拟机部署旁边的复选框。

  3. 点击删除

gcloud

使用 instances delete 命令

gcloud compute instances delete VM_NAME

使用紧凑放置政策创建 HPC 虚拟机

您可以通过创建紧凑布置政策来降低虚拟机之间的延迟时间。紧凑布置政策可确保位于同一可用性可用区中的虚拟机彼此靠近。

如需创建指定紧凑布置政策的 HPC 虚拟机,请按照以下步骤操作:

  1. 创建紧凑布置政策

  2. 执行下列其中一项操作:

根据最佳做法配置 HPC 虚拟机

为了获得 HPC 虚拟机更好且更具预测性的性能,我们建议您使用以下最佳做法。

停用同步多线程

HPC 虚拟机映像默认启用并发多线程 (SMT),这在 Intel 处理器上也称为超线程。停用 SMT 可以提高性能的可预测性,并能缩短作业时间。

您可以使用以下方法停用 SMT:

  • 如需在创建新的 HPC 虚拟机时停用 SMT,请按照创建 HPC 虚拟机的步骤操作并添加 --threads-per-core=1 标志。

  • 如需在现有 HPC 虚拟机上停用 SMT,请连接到该虚拟机,然后从该虚拟机运行以下命令:

    sudo google_mpi_tuning --nosmt
    

如需了解详情,请参阅设置每个核心的线程数

将 gVNIC 用作虚拟网络接口

HPC 虚拟机映像支持将 Virtio-net 和 Google 虚拟 NIC (gVNIC) 作为虚拟网络接口。使用 gVNIC 而不是 Virtio-net 可以提供更好的通信性能和更高的吞吐量,从而提高 MPI 应用的可伸缩性。此外,gVNIC 是实现高级网络的前提条件,该网络提供更高的带宽并支持更高的吞吐量。

创建新虚拟机时,默认情况下将 Virtio-net 用作虚拟网络接口。如需使用 gVNIC,请按照创建 HPC 虚拟机的步骤操作并添加 --network-interface=nic-type=GVNIC 标志。HPC 虚拟机映像将 gVNIC 驱动程序添加为动态内核模块支持 (DKMS)。如需了解详情,请参阅使用 Google 虚拟 NIC

关闭 Meltdown 和 Spectre 缓解措施

HPC 虚拟机映像默认启用 Meltdown 和 Spectre 缓解措施。在某些情况下,这些缓解措施可能会导致特定于工作负载的性能下降。如需停用这些缓解措施并承担相关的安全风险,请执行以下操作:

  1. 在 HPC 虚拟机上运行以下命令:

    sudo google_mpi_tuning --nomitigation
    
  2. 重新启动虚拟机。

提升网络性能

如需提升虚拟机的网络性能,请设置以下一个或多个配置:

  • 配置更高的带宽。如需配置每个虚拟机的 Tier_1 网络性能,请使用 gcloud compute instances create 命令创建虚拟机并指定 --network-performance-configs 标志。如需了解详情,请参阅创建具有高带宽配置的虚拟机

  • 使用巨型帧。为了帮助最大限度地减少网络数据包的处理开销,我们建议使用较大的数据包大小。您需要根据应用的具体情况验证较大的数据包大小。如需了解如何使用巨型帧和数据包大小,请参阅最大传输单元指南

  • 提高 TCP 内存限制。带宽越高,需要的 TCP 内存就越大。按照相关步骤提高 tcp_*mem 设置

  • 使用网络延迟配置文件。评估应用的延迟时间并启用频繁轮询以减少网络接收路径中的延迟时间。在 /etc/sysctl.conf 中调整 net.core.busy_pollnet.core.busy_read 设置,或使用 tuned-adm

使用 Intel MPI 2021

Google 建议使用 Intel MPI 2021 库在 Google Cloud 上运行 MPI 作业。

MPI 实现具有许多会影响通信性能的内部配置参数。这些参数与 MPI Collective 通信尤其相关,MPI Collective 通信可让您指定在 Google Cloud 环境中执行方式截然不同的算法和配置参数。

HPC 虚拟机映像包含一个实用程序 Google-hpc-compute,便于安装推荐的 MPI 库并使用通过 TCP 传输的 Google Cloud 定制的 Libfabric 提供程序。

使用 google-hpc-compute 实用程序来支持 IntelMPI 2021

google_install_intelmpi 脚本是 Google-hpc-compute 实用程序中的 MPI 相关工具。有助于安装和配置 IntelMPI 2021.11。

Google-hpc-compute 实用程序包含在 HPC 虚拟机映像中。

安装 IntelMPI 2021

如需在创建新的 HPC 虚拟机时安装 IntelMPI 库,请按照相关步骤创建 HPC 虚拟机,并在创建虚拟机实例时添加以下内容:

--metadata=google_install_intelmpi="--impi_2021"

如需在现有 HPC 虚拟机上安装该库,请在该虚拟机上运行以下命令:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

install_dir 的默认位置设置为 /opt/intel

HPC CentOS 7 映像中的 Intel MPI 2018

Google Cloud 上的 HPC CentOS 7 映像可提供对 Intel MPI 2018 的支持。如需了解详情,请参阅 google_install_mpi 的实用程序用户指南。

对于与 Intel MPI 2018 相关的其他应用场景(例如运行使用 Intel Parallel Studio XE 构建的 MPI 应用),请通过将上述命令中的 intel_mpi 替换为 intel_psxe_runtime来使用完整的 Intel Parallel Studio XE (PSXE) 运行时。PSXE 运行时包含一些对于运行 MPI 应用非常重要的库,例如 Intel 数学核心函数库 (MKL)。

使用 HPC 虚拟机映像创建自定义映像

  1. 创建使用 HPC 虚拟机映像的自定义虚拟机

  2. 通过 MPI 调节来自定义虚拟机

  3. 使用 HPC 虚拟机映像的启动磁盘作为来源磁盘创建自定义映像。您可以使用 Google Cloud 控制台Google Cloud CLI 执行此操作。

控制台

  1. 在 Google Cloud 控制台中,转到映像页面。

    转到“映像”

  2. 点击创建映像

  3. 为映像指定名称

  4. 来源磁盘下,选择 HPC 虚拟机上的启动磁盘的名称。

  5. 为映像选择其余属性。

  6. 点击创建

gcloud

使用 images create 命令创建自定义映像。

gcloud compute images create IMAGE_NAME \
         --source-disk=VM_NAME \
         --source-disk-zone=VM_ZONE \
         --family=IMAGE_FAMILY \
         --storage-location=LOCATION

请替换以下内容:

  • IMAGE_NAME:自定义映像的名称。
  • VM_NAME:您的 HPC 虚拟机的名称。
  • INSTANCE_ZONE:您的 HPC 虚拟机所在的可用区。
  • IMAGE_FAMILY:可选。此映像所属的映像系列
  • LOCATION:可选。存储自定义映像的区域。默认位置是最靠近来源磁盘位置的多区域。

价格

HPC 虚拟机映像无需额外付费即可使用。由于 HPC 虚拟机映像在 Compute Engine 上运行,因此 Compute Engine 资源(例如 C2 vCPU 和内存)可能会产生费用。如需了解详情,请参阅 Compute Engine 价格

限制

调节的好处因应用而异。在某些情况下,特定调节可能会对性能产生负面影响。请考虑对应用进行基准测试,以便找到最高效或最具成本效益的配置。

后续步骤