Znane problemy z maszynami wirtualnymi z serii H i N

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux:heavy_check_mark: maszyny wirtualne Windows:heavy_check_mark: elastyczne zestawy skalowania ✔️ jednolite zestawy skalowania

W tym artykule próbujemy wyświetlić listę najnowszych typowych problemów i ich rozwiązań podczas korzystania z maszyn wirtualnych HPC i GPU serii H i N.

Topologia pamięci podręcznej na Standard_HB120rs_v3

lstopo Wyświetla nieprawidłową topologię pamięci podręcznej na Standard_HB120rs_v3 maszyny wirtualnej. Może być wyświetlana tylko 32 MB L3 na jednostkę NUMA. Jednak w praktyce faktycznie jest 120 MB L3 na jednostkę NUMA zgodnie z oczekiwaniami, ponieważ te same 480 MB L3 dla całej maszyny wirtualnej jest dostępne jak w przypadku innych rozmiarów maszyn wirtualnych HBv3 z ograniczeniami. Jest to błąd wewnętrzny podczas wyświetlania poprawnej wartości, która nie powinna mieć wpływu na obciążenia.

Ograniczenie dostępu qp0

Aby zapobiec dostępowi sprzętowemu niskiego poziomu, który może spowodować luki w zabezpieczeniach, para kolejek 0 nie jest dostępna dla maszyn wirtualnych gościa. Powinno to mieć wpływ tylko na akcje zwykle skojarzone z administrowaniem kartą sieciową ConnectX InfiniBand i uruchamianiem niektórych diagnostyki InfiniBand, takich jak ibdiagnet, ale nie aplikacji użytkownika końcowego.

Instalacja mofed w systemie Ubuntu

W przypadku obrazów maszyn wirtualnych z witryny Marketplace opartych na systemie Ubuntu-18.04 z wersją jądra i nowszą wersją niektóre starsze pliki Mellanox OFED są niezgodne, co w niektórych przypadkach powoduje wzrost czasu rozruchu maszyny wirtualnej do 5.4.0-1039-azure #42 30 minut. Zgłoszono to zarówno dla wersji Mellanox OFED 5.2-1.0.4.0, jak i 5.2-2.2.0.0. Problem został rozwiązany za pomocą mellanox OFED 5.3-1.0.0.1. Jeśli konieczne jest użycie niezgodnej wersji OFED, rozwiązaniem jest użycie obrazu maszyny wirtualnej Canonical:UbuntuServer:18_04-lts-gen2:18.04.202101290 z witryny Marketplace lub starszego i nie zaktualizowanie jądra.

Błędy tworzenia mpi QP

Jeśli podczas uruchamiania obciążeń MPI zgłaszane są błędy tworzenia infiniBand QP, jak pokazano poniżej, sugerujemy ponowne uruchomienie maszyny wirtualnej i ponowną próbę uruchomienia obciążenia. Ten problem zostanie rozwiązany w przyszłości.

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

Możesz sprawdzić wartości maksymalnej liczby par kolejek, gdy problem zostanie zaobserwowany w następujący sposób.

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

Przyspieszona sieć na hb, HC, HBv2 i NDv2

Usługa Azure Accelerated Networking jest teraz dostępna w maszynach wirtualnych z obsługą rdMA i InfiniBand oraz z obsługą funkcji SR-IOV o rozmiarach HB, HC, HBv2 i NDv2. Ta funkcja umożliwia teraz rozbudowę (do 30 Gb/s) i opóźnienia w sieci Azure Ethernet. Chociaż jest to niezależne od funkcji RDMA za pośrednictwem sieci InfiniBand, niektóre zmiany platformy dotyczące tej funkcji mogą mieć wpływ na zachowanie niektórych implementacji MPI podczas uruchamiania zadań za pośrednictwem infiniBand. W szczególności interfejs InfiniBand na niektórych maszynach wirtualnych może mieć nieco inną nazwę (mlx5_1 w przeciwieństwie do wcześniejszego interfejsu mlx5_0), co może wymagać dostrojenia wierszy poleceń MPI, szczególnie w przypadku korzystania z interfejsu UCX (zazwyczaj w przypadku openMPI i HPC-X). Najprostszym rozwiązaniem obecnie może być użycie najnowszej wersji HPC-X na obrazach maszyn wirtualnych CentOS-HPC lub wyłączenie przyspieszonej sieci, jeśli nie jest to wymagane. Więcej informacji na ten temat można znaleźć w tym artykule z instrukcjami dotyczącymi sposobu rozwiązania wszelkich zaobserwowanych problemów.

Instalacja sterownika InfiniBand na maszynach wirtualnych innych niż SR-IOV

Obecnie H16r, H16mr i NC24r nie są włączone SR-IOV. Aby uzyskać więcej informacji na temat bifikacji stosu InfiniBand, zobacz Rozmiary maszyn wirtualnych platformy Azure — HPC. Sieć InfiniBand można skonfigurować dla rozmiarów maszyn wirtualnych z włączoną obsługą funkcji SR-IOV za pomocą sterowników OFED, natomiast rozmiary maszyn wirtualnych inne niż SR-IOV wymagają sterowników ND. Ta obsługa IB jest dostępna odpowiednio dla centOS, RHEL i Ubuntu.

Duplikowanie adresów MAC za pomocą cloud-init z systemem Ubuntu na maszynach wirtualnych serii H i N

Istnieje znany problem z plikiem cloud-init w obrazach maszyn wirtualnych z systemem Ubuntu, gdy próbuje on uruchomić interfejs IB. Może się to zdarzyć podczas ponownego uruchamiania maszyny wirtualnej lub próby utworzenia obrazu maszyny wirtualnej po uogólnieniu. W dziennikach rozruchu maszyny wirtualnej może być wyświetlany błąd podobny do tego:

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

Ten "zduplikowany komputer MAC z cloud-init w systemie Ubuntu" jest znanym problemem. Ten problem zostanie rozwiązany w przypadku nowszej wersji jądra. Jeśli problem zostanie napotkany, obejście jest następujące:

  1. Wdrażanie obrazu maszyny wirtualnej z witryny Marketplace (Ubuntu 18.04)
  2. Zainstaluj pakiety oprogramowania niezbędne do włączenia funkcji IB(instrukcje dostępne tutaj)
  3. Edytuj waagent.conf, aby zmienić wartość EnableRDMA=y
  4. Wyłączanie sieci w aplikacji cloud-init
    echo network: {config: disabled} | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
    
  5. Edytuj plik konfiguracji sieci netplan wygenerowany przez cloud-init, aby usunąć komputer MAC
    sudo bash -c "cat > /etc/netplan/50-cloud-init.yaml" <<'EOF'
    network:
      ethernets:
        eth0:
          dhcp4: true
      version: 2
    EOF
    

Pamięć DRAM na maszyn wirtualnych z serii HB

Obecnie maszyny wirtualne z serii HB mogą uwidocznić tylko 228 GB pamięci RAM dla maszyn wirtualnych gościa. Podobnie 458 GB na HBv2 i 448 GB na maszyny wirtualne HBv3. Jest to spowodowane znanym ograniczeniem funkcji hypervisor platformy Azure, które uniemożliwia przypisywanie stron do lokalnego pamięci DRAM (domen NUMA) firmy AMD (domen NUMA) zarezerwowanych dla maszyny wirtualnej gościa.

GSS Proxy

Serwer proxy GSS ma znaną usterkę w systemie CentOS/RHEL 7.5, która może być manifestem jako znacząca wydajność i spadek czasu odpowiedzi w przypadku korzystania z systemu plików NFS. Można temu ograniczyć:

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

Czyszczenie pamięci podręcznej

W systemach HPC często warto wyczyścić pamięć po zakończeniu zadania przed przypisaniem kolejnego użytkownika do tego samego węzła. Po uruchomieniu aplikacji w systemie Linux może się okazać, że ilość dostępnej pamięci zmniejsza się w czasie, gdy pamięć buforu zwiększa się, mimo że nie są uruchomione żadne aplikacje.

Zrzut ekranu przedstawiający wiersz polecenia przed czyszczeniem

Użycie funkcji spowoduje pokazanie, za pomocą których numactl -H NUMAnode (prawdopodobnie wszystkich) pamięć jest buforowana. W systemie Linux użytkownicy mogą czyścić pamięci podręczne na trzy sposoby, aby przywrócić buforowane lub buforowane pamięci do "wolnej". Musisz mieć uprawnienia root lub 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]

Zrzut ekranu przedstawiający wiersz polecenia po wyczyszczeniu

Ostrzeżenia jądra

Podczas rozruchu maszyny wirtualnej z serii HB w systemie Linux można zignorować następujące komunikaty ostrzegawcze jądra. Jest to spowodowane znanym ograniczeniem funkcji hypervisor platformy Azure, które będzie rozwiązane w czasie.

[  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 ]---

Następne kroki