H 系列和 N 系列 VM 的已知問題

適用於:✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集

本文會嘗試列出在使用 H 系列N 系列的 HPC 和 GPU VM 時,最近常見的問題及其解決方案。

HBv3 上的 InfiniBand 錯誤

在 8 月 12 日當週,我們已在 HBv3 系列 VM 的 ConnectX-6 InfiniBand NIC 介面卡韌體中發現錯誤,該錯誤會導致 MPI 作業暫時性失敗。 此問題適用於 HBv3 系列的所有 VM 大小。 此問題不適用於其他 H 系列 VM (HB 系列、HBv2 系列或 HC 系列)。 韌體更新將在未來幾天發出,以補救此問題。

Standard_HB120rs_v2 上的記憶體容量

在 2021 年 12 月 6 日當週,我們已暫時減少向 Standard_HB120rs_v2 VM 大小 (亦稱為 HBv2) 公開的記憶體 (RAM) 數量。 我們已將記憶體使用量從目前的 456 GB 減少到 432 GB (降低 5.2%)。 這是暫時性縮減,2022 年初應該就會回復為完整的記憶體容量。 我們之所以進行這項變更,是為了確保解決一項問題,此問題會導致 VM 部署時間過長,或導致所部署的 VM 無法讓所有裝置都正常運作。 減少記憶體容量並不會影響 VM 效能。

Standard_HB120rs_v3 上的快取拓撲

lstopo 在 Standard_HB120rs_v3 VM 大小上顯示的快取拓撲不正確。 其可能會顯示每一 NUMA 只有 32 MB 的 L3。 不過,因為整個 VM 和其他限制核心的 HBv3 VM 大小一樣有 480 MB 的 L3,因此實際上每一 NUMA 有 120 MB 的 L3。 這只是未能顯示正確值的表面錯誤,應該不會影響工作負載。

qp0 存取限制

為了防止低階硬體進行存取而可能導致安全性弱點,客體 VM 無法存取佇列配對 0。 這應該只會影響通常會與管理 ConnectX InfiniBand NIC 和執行一些 InfiniBand 診斷 (例如 ibdiagnet) 有所關聯的動作,但不會影響終端使用者的應用程式。

Ubuntu 上的 MOFED 安裝

在核心版本為 5.4.0-1039-azure #42 和更新版本的 Ubuntu-18.04 型 Marketplace VM 映像上,某些較舊的 Mellanox OFED 並不相容,因此在某些情況下,VM 的開機時間最多會增加 30 分鐘。 Mellanox OFED 5.2-1.0.4.0 和 5.2-2.2.0.0 版均已報告此問題。 使用 Mellanox OFED 5.3-1.0.0.1 即可解決問題。 如果必須使用不相容的 OFED,解決方案是使用 Canonical:UbuntuServer:18_04-lts-gen2:18.04.202101290 Marketplace VM 映像或較舊版本,而不是更新核心。

MPI QP 建立錯誤

如果在執行任何 MPI 工作負載的過程中,系統擲回 InfiniBand QP 建立錯誤 (如下所示),建議您將 VM 重新開機,並重新嘗試工作負載。 我們日後會解決這個問題。

ib_mlx5_dv.c:150  UCX  ERROR mlx5dv_devx_obj_create(QP) failed, syndrome 0: Invalid argument

在發現此問題時,您可以確認佇列配對數目的上限值,如下所示。

[user@azurehpc-vm ~]$ ibv_devinfo -vv | grep qp
max_qp: 4096

HB、HC、HBv2、HBv3 和 NDv2 上的加速網路

支援 RDMA 和 InfiniBand 並已啟用 SR-IOV 的 VM 大小 HBHCHBv2HBv3NDv2 上現已提供 Azure 加速網路。 這項功能現在能透過 Azure 乙太網路來強化輸送量 (最高 30 Gbps) 和延遲。 雖然這與透過 InfiniBand 網路的 RDMA 功能不同,但此功能的某些平台變更可能會影響透過 InfiniBand 執行作業時某些 MPI 實作的行為。 具體而言,某些 VM 上的 InfiniBand 介面可能會有稍微不同的名稱 (mlx5_1 與先前的 mlx5_0)。 這可能需要微調 MPI 命令列,特別是在使用 UCX 介面時 (經常與 OpenMPI 和 HPC-X 搭配使用)。 目前最簡單的解決方案可能是在 CentOS-HPC VM 映像上使用最新的 HPC-X,或停用加速網路 (如果不需要此功能的話)。 如需詳細資訊,請參閱此 TechCommunity 文章,內有指示可解決所發現的任何問題。

非 SR-IOV VM 上的 InfiniBand 驅動程式安裝

H16r、H16mr 和 NC24r 目前未啟用 SR-IOV。 如需 InfiniBand 堆疊 Bifurcation 的詳細資訊,請參閱 Azure VM 大小 - HPC。 InfiniBand 可以使用 OFED 驅動程式在已啟用 SR-IOV 的 VM 大小上進行設定,非 SR-IOV VM 大小則需要使用 ND 驅動程式。 此 IB 支援適用於 CentOS、RHEL 和 Ubuntu

在 H 系列和 N 系列的 VM 上,Ubuntu 的 cloud-init 有重複的 MAC

Ubuntu VM 映像上的 cloud-init 有一個已知問題,此問題會嘗試啟動 IB 介面。 在 VM 重新開機時,或在一般化後嘗試建立 VM 映像時,就會發生此問題。 VM 開機記錄可能會顯示如下的錯誤:

“Starting Network Service...RuntimeError: duplicate mac found! both 'eth1' and 'ib0' have mac”.

「Ubuntu 上的 cloud-init 有重複的 MAC」是已知問題。 較新版的核心會解決此問題。 如果您遇到此問題,因應措施如下:

  1. 部署 (Ubuntu 18.04) Marketplace VM 映像
  2. 安裝必要的軟體套件,以啟用 IB (指示在此)
  3. 編輯 waagent.conf 以變更 EnableRDMA=y
  4. 在 cloud-init 中停用網路功能
    echo network: {config: disabled} | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
    
  5. 編輯 cloud-init 所產生的 netplan 網路設定檔,以移除 MAC
    sudo bash -c "cat > /etc/netplan/50-cloud-init.yaml" <<'EOF'
    network:
      ethernets:
        eth0:
          dhcp4: true
      version: 2
    EOF
    

HB 系列 VM 上的 DRAM

HB 系列 VM 目前只能向客體 VM 公開 228 GB 的 RAM。 同樣地,HBv2 只能公開 458 GB,HBv3 VM 只能公開 448 GB。 這是因為 Azure Hypervisor 有已知限制,會防止系統將頁面指派給 AMD CCX (NUMA 網域) 保留給客體 VM 的本機 DRAM。

GSS Proxy

GSS Proxy 在 CentOS/RHEL 7.5 中有已知錯誤,在搭配 NFS 使用時,會顯示為有很大的效能和回應性負面影響。 其緩和方式如下:

sed -i 's/GSS_USE_PROXY="yes"/GSS_USE_PROXY="no"/g' /etc/sysconfig/nfs

清除快取

在 HPC 系統上,於作業完成後先清除記憶體,再將同一個節點指派給下一個使用者的做法通常會很有用。 在 Linux 中執行應用程式之後,您可能會發現即使未執行任何應用程式,可用記憶體卻會減少,緩衝區記憶體則會增加。

清除之前的命令提示字元螢幕擷取畫面

使用 numactl -H 會顯示記憶體有進行緩衝處理的 NUMAnode (可能全部都有)。 在 Linux 中,使用者可以透過三種方式清除快取,以將已緩衝或快取的記憶體回復為「可用」狀態。 您必須是根使用者或擁有 sudo 權限。

echo 1 > /proc/sys/vm/drop_caches [frees page-cache]
echo 2 > /proc/sys/vm/drop_caches [frees slab objects e.g. dentries, inodes]
echo 3 > /proc/sys/vm/drop_caches [cleans page-cache and slab objects]

清除之後的命令提示字元螢幕擷取畫面

核心警告

在 Linux 底下將 HB 系列 VM 開機時,您可以忽略下列核心警告訊息。 會有警告訊息是因為 Azure Hypervisor 有已知限制,但一段時間後便會解決。

[  0.004000] WARNING: CPU: 4 PID: 0 at arch/x86/kernel/smpboot.c:376 topology_sane.isra.3+0x80/0x90
[  0.004000] sched: CPU #4's llc-sibling CPU #0 is not on the same node! [node: 1 != 0]. Ignoring dependency.
[  0.004000] Modules linked in:
[  0.004000] CPU: 4 PID: 0 Comm: swapper/4 Not tainted 3.10.0-957.el7.x86_64 #1
[  0.004000] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090007 05/18/2018
[  0.004000] Call Trace:
[  0.004000] [<ffffffffb8361dc1>] dump_stack+0x19/0x1b
[  0.004000] [<ffffffffb7c97648>] __warn+0xd8/0x100
[  0.004000] [<ffffffffb7c976cf>] warn_slowpath_fmt+0x5f/0x80
[  0.004000] [<ffffffffb7c02b34>] ? calibrate_delay+0x3e4/0x8b0
[  0.004000] [<ffffffffb7c574c0>] topology_sane.isra.3+0x80/0x90
[  0.004000] [<ffffffffb7c57782>] set_cpu_sibling_map+0x172/0x5b0
[  0.004000] [<ffffffffb7c57ce1>] start_secondary+0x121/0x270
[  0.004000] [<ffffffffb7c000d5>] start_cpu+0x5/0x14
[  0.004000] ---[ end trace 73fc0e0825d4ca1f ]---

下一步