C'è ancora un uso dell'irqbalance su hardware moderno?


39

Questa domanda è stata posta in precedenza, ma credo che il mondo sia cambiato abbastanza da poterlo ripetere.

Irqbalance ha qualche utilità sui sistemi di oggi in cui abbiamo CPU compatibili con NUMA con condivisione della memoria tra i loro core?

L'esecuzione irqbalance --oneshot --debugmostra che un guest virtuale in un moderno ambiente VMware ESXi sta condividendo i nodi NUMA tra i core.

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

in questo caso irqbalance rileverà che è in esecuzione su un sistema NUMA e uscirà. Questo è un problema con il nostro monitoraggio dei processi.

Dovremmo esaminare l'esecuzione numad anziché l'irqbalance su tali sistemi?

Ciò è particolarmente interessante per i server virtualizzati VMware.

Risposte:


27

Ecco una risposta da un tecnico in RedHat. Anche se credo che la maggior parte dell'hardware aziendale sia compatibile con NUMA. E per quanto ne so VMware cercherà anche di adattare le VM sullo stesso nodo NUMA purché si adatti alla sua configurazione CPU.

Le esperienze (specialmente riguardo a VMware) sarebbero molto apprezzate.

Questo è vero "perché" dei server moderni. Tieni presente che Multi-CPU / Muli-Core non è uguale a NUMA. Esistono molti sistemi multi-CPU / core che non dispongono di NUMA.

Prima di leggere la mia spiegazione di seguito, leggere il documento di Affinity IRQ sopra, nonché le seguenti guide:

Guida all'ottimizzazione delle prestazioni di RHEL 6

Ottimizzazione delle prestazioni a bassa latenza per RHEL 6

Hai letto tutto ciò? Fantastico, non hai bisogno di sentire altro da me! ;-) Ma nel caso fossi impaziente, ecco perché li vuoi ...

IRQbalance evita il backup di tutte le richieste IRQ su una singola CPU. Ho visto molti sistemi con 4+ core della CPU funzionare lentamente perché tutti i processi su varie CPU sono in attesa su CPU 0 per elaborare le richieste IRQ di rete o di archiviazione. La CPU 0 sembra molto, molto occupata, tutte le altre CPU non sono occupate, ma le app sono molto lente. Le app sono lente perché attendono le loro richieste IO dalla CPU 0.

IRQbalance cerca di bilanciare questo in modo intelligente attraverso tutte le CPU e, quando possibile, avvicina il più possibile l'elaborazione dell'IRQ al processo. Potrebbe trattarsi dello stesso core, un core sullo stesso die che condivide la stessa cache o un core nella stessa zona NUMA.

Dovresti usare irqbalance a meno che:

Stai bloccando manualmente le tue app / IRQ su core specifici per una ragione molto buona (bassa latenza, requisiti in tempo reale, ecc.)

Ospiti virtuali. Non ha davvero senso perché, a meno che non si stia bloccando il guest su CPU e IRQ specifici e hardware di rete / archiviazione dedicato, è probabile che non si vedano i vantaggi che si avrebbero sul bare metal. Ma il tuo host KVM / RHEV DOVREBBE usare irqbalance, numad e accordato .

Altri strumenti di ottimizzazione molto importanti sono i profili sintonizzati e numad. Leggi di loro! Usali!

Numad è simile all'irqbalance in quanto cerca di assicurarsi che un processo e la sua memoria siano nella stessa zona numa. Con molti core notiamo una significativa riduzione delle latenze che si traduce in prestazioni affidabili molto più fluide sotto carichi.

Se sei abile, diligente e controlla regolarmente o hai un carico di lavoro molto prevedibile, puoi ottenere prestazioni migliori bloccando manualmente i processi / IRQ sulle CPU. Anche in queste situazioni, irqbalance e numad si avvicinano molto alla corrispondenza. Ma se non sei sicuro o il tuo carico di lavoro è imprevedibile, dovresti usare irqbalance e numad.


5
FWIW, alcuni manuali di 10GbE raccomandano di disabilitare l'irqbalance per ottenere un throughput migliore ...
rogerdpack

8
Al fine di ottenere il massimo assoluto per abbinare i loro numeri di riferimento, sì, è necessario riunire le cose in un certo modo, ma questi benchmark generalmente non corrispondono ai carichi di lavoro della vita reale. Se hai un'applicazione ONE in esecuzione nel server con un requisito estremamente sensibile alla latenza in un modello di utilizzo molto prevedibile, va bene, vai avanti e configura manualmente l'affinità del processore per le cose. Ma se l'applicazione è più un caso d'uso reale in cui le cose possono variare in una vasta gamma di processi e carichi, sono d'accordo con la tecnologia Red Hat. Il bilanciamento NUMA di Linux sta procedendo bene.
George,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.