Problemi noti delle VM serie HB e serie N

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi

Questo articolo tenta di elencare i problemi comuni recenti e le relative soluzioni quando si usano le macchine virtuali HPC e GPU serie HB e N .

Topologia della cache in Standard_HB120rs_v3

lstopo visualizza una topologia di cache non corretta nella dimensione della macchina virtuale Standard_HB120rs_v3. Può essere visualizzato che sono presenti solo 32 MB L3 per NUMA. Tuttavia, in pratica, c'è effettivamente 120 MB L3 per NUMA come previsto poiché gli stessi 480 MB di L3 per l'intera macchina virtuale sono disponibili come con le altre dimensioni HBv3 vincolate della macchina virtuale. Si tratta di un errore estetico nella visualizzazione del valore corretto, che non dovrebbe influire sui carichi di lavoro.

Restrizione di accesso qp0

Per impedire l'accesso hardware di basso livello che può causare vulnerabilità di sicurezza, la coppia di code 0 non è accessibile alle macchine virtuali guest. Questo dovrebbe influire solo sulle azioni in genere associate all'amministrazione della scheda di interfaccia di rete Connessione X InfiniBand e all'esecuzione di una diagnostica InfiniBand come ibdiagnet, ma non applicazioni dell'utente finale.

Installazione MOFED in Ubuntu

Nelle immagini di macchine virtuali del Marketplace basate su Ubuntu-18.04 con kernel versione 5.4.0-1039-azure #42 e versioni successive, alcune versioni precedenti di Mellanox OFED non sono compatibili causando un aumento del tempo di avvio della macchina virtuale fino a 30 minuti in alcuni casi. Questo problema è stato segnalato per entrambe le versioni Mellanox OFED 5.2-1.0.4.0 e 5.2-2.2.0.0. Il problema viene risolto con Mellanox OFED 5.3-1.0.0.1. Se è necessario usare OFED non compatibile, una soluzione consiste nell'usare l'immagine della macchina virtuale marketplace Canonical:UbuntuServer:18_04-lts-gen2:18.04.202101290 marketplace o meno recente e non aggiornare il kernel.

Rete accelerata in HB, HC, HBv2, HBv3, HBv4, HX, NDv2 e NDv4

La rete accelerata di Azure è ora disponibile nelle dimensioni di VM abilitate per RDMA e InfiniBand e SR-IOV con supporto HB, HC, HBv2, HBv3, HBv4, HX, NDv2 e NDv4. Questa funzionalità consente ora un miglioramento in tutto (fino a 30 Gbps) e latenze sulla rete Ethernet di Azure. Anche se questa funzionalità è separata dalle funzionalità RDMA sulla rete InfiniBand, alcune modifiche della piattaforma per questa funzionalità possono influire sul comportamento di determinate implementazioni MPI durante l'esecuzione di processi su InfiniBand. In particolare, l'interfaccia InfiniBand in alcune macchine virtuali può avere un nome leggermente diverso (mlx5_1 rispetto alle mlx5_0 precedenti). Ciò può richiedere la modifica delle righe di comando MPI soprattutto quando si usa l'interfaccia UCX (comunemente con OpenMPI e HPC-X).

La soluzione più semplice consiste attualmente nell'usare le immagini delle macchine virtuali CentOS-HPC più recenti in cui si rinominano di conseguenza le interfacce InfiniBand e Rete accelerata o per eseguire lo script per rinominare l'interfaccia InfiniBand.

Altri dettagli su questo articolo techCommunity sono disponibili in questo articolo techCommunity con istruzioni su come risolvere eventuali problemi osservati.

Installazione del driver InfiniBand in macchine virtuali non SR-IOV

Attualmente H16r, H16mr e NC24r non sono abilitati SR-IOV. Per altre informazioni sulla biforcazione dello stack InfiniBand, vedere Dimensioni delle macchine virtuali di Azure - HPC. InfiniBand può essere configurato nelle dimensioni della macchina virtuale abilitata per SR-IOV con i driver OFED, mentre le dimensioni della macchina virtuale non SR-IOV richiedono driver ND. Questo supporto IB è disponibile in modo appropriato per CentOS, RHEL e Ubuntu.

Duplicare MAC con cloud-init con Ubuntu in macchine virtuali serie H e serie N

Si è verificato un problema noto con cloud-init nelle immagini di macchine virtuali Ubuntu durante il tentativo di visualizzare l'interfaccia IB. Questo problema può verificarsi al riavvio della macchina virtuale o quando si tenta di creare un'immagine di macchina virtuale dopo la generalizzazione. I log di avvio della macchina virtuale possono visualizzare un errore simile al seguente:

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

Questo 'mac duplicato con cloud-init in Ubuntu' è un problema noto. Questo problema verrà risolto nei kernel più recenti. Se si verifica questo problema, la soluzione alternativa è:

  1. Distribuire l'immagine della macchina virtuale del marketplace (Ubuntu 18.04)
  2. Installare i pacchetti software necessari per abilitare IB (istruzioni qui)
  3. Modificare waagent.conf per modificare EnableRDMA=y
  4. Disabilitare la rete in cloud-init
    echo network: {config: disabled} | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
    
  5. Modificare il file di configurazione di rete di netplan generato da cloud-init per rimuovere il MAC
    sudo bash -c "cat > /etc/netplan/50-cloud-init.yaml" <<'EOF'
    network:
      ethernets:
        eth0:
          dhcp4: true
      version: 2
    EOF
    

DRAM nelle macchine virtuali serie HB

Le macchine virtuali serie HB possono esporre attualmente solo 228 GB di RAM alle macchine virtuali guest. Analogamente, 458 GB in HBv2 e 448 GB nelle macchine virtuali HBv3. Ciò è dovuto a una limitazione nota dell'hypervisor di Azure per impedire che le pagine vengano assegnate alla DRAM locale dei domini NUMA (AMD CCX) riservati per la macchina virtuale guest.

GSS Proxy

Il proxy GSS presenta un bug noto in CentOS/RHEL 7.5 che può manifestarsi come una riduzione significativa delle prestazioni e della velocità di risposta quando viene usato con NFS. Questo può essere mitigato con:

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

Pulizia cache

Nei sistemi HPC è spesso utile pulire la memoria al termine di un processo prima che all'utente successivo venga assegnato lo stesso nodo. Dopo l'esecuzione di applicazioni in Linux, è possibile che la memoria disponibile venga ridotta mentre la memoria del buffer aumenta, nonostante non esegua alcuna applicazione.

Screenshot del prompt dei comandi prima della pulizia

L'uso numactl -H di mostrerà i NUMAnode con cui è memorizzata nel buffer la memoria (possibilmente tutte). In Linux gli utenti possono pulire le cache in tre modi per restituire la memoria memorizzata nel buffer o memorizzata nella cache in "free". È necessario essere root o disporre delle autorizzazioni sudo.

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

Screenshot del prompt dei comandi dopo la pulizia

Avvisi del kernel

È possibile ignorare i messaggi di avviso del kernel seguenti durante l'avvio di una macchina virtuale serie HB in Linux. Ciò è dovuto a una limitazione nota dell'hypervisor di Azure che verrà risolto nel tempo.

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

Passaggi successivi

  • Esaminare la panoramica della serie HB e la panoramica della serie HC per informazioni su come configurare in modo ottimale i carichi di lavoro ai fini delle prestazioni e della scalabilità.
  • Per informazioni sugli annunci più recenti, sugli esempi di carico di lavoro HPC e sui risultati delle prestazioni, vedere i blog della community tecnica di calcolo di Azure.
  • Per una vista architetturale di livello superiore dell'esecuzione di carichi di lavoro HPC, vedere High Performance Computing (HPC) in Azure.