Y a-t-il encore une utilisation d'irqbalance sur du matériel moderne?

39

Cette question a déjà été posée, mais je pense que le monde a suffisamment changé pour qu'on le pose à nouveau.

Irqbalance a-t-il une utilité sur les systèmes actuels où nous disposons de processeurs compatibles NUMA avec un partage de mémoire entre leurs cœurs?

L'exécution irqbalance --oneshot --debugmontre qu'un invité virtuel dans un environnement VMware ESXi moderne partage les nœuds NUMA entre les cœurs.

# 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)

Dans ce cas, irqbalance détectera qu'il est exécuté sur un système NUMA et quitte. Cela perturbe notre surveillance des processus.

Devrions-nous envisager d’exécuter numad au lieu d’irqbalance sur de tels systèmes?

Ceci est principalement intéressant pour les serveurs virtualisés VMware.

Espenfjo
la source

Réponses:

27

Voici une réponse d'un technicien de RedHat. Bien que je pense que la plupart du matériel d’entreprise est compatible NUMA. Et pour autant que je sache, VMware essaiera également d’adapter vos ordinateurs virtuels au même nœud NUMA aussi longtemps que la configuration de son processeur le permettra.

Des expériences (concernant notamment VMware) seraient grandement appréciées.

Ceci est vrai "parce que" des serveurs modernes. Gardez à l'esprit que Multi-CPU / Muli-Core n'est pas identique à NUMA. Il existe de nombreux systèmes multi-processeurs / centraux qui n'ont pas NUMA.

Avant de lire mon explication ci-dessous, veuillez lire le document IRQ Affinity ci-dessus, ainsi que les guides suivants:

Guide de réglage des performances RHEL 6

Réglage des performances à faible latence pour RHEL 6

Vous avez tout lu? Génial, vous ne devez plus rien entendre de moi! ;-) Mais juste au cas où vous seriez impatient, voici pourquoi vous les voulez ...

IRQbalance empêche toutes les requêtes IRQ de sauvegarder sur une seule CPU. J'ai constaté que de nombreux systèmes dotés de 4 ou plus de cœurs de processeur fonctionnaient lentement, car tous les processus de plusieurs processeurs attendaient que le processeur 0 traite les requêtes IRQ de réseau ou de stockage. Le processeur 0 semble très occupé, tous les autres ne le sont pas, mais les applications sont très lentes. Les applications sont lentes car elles attendent leurs demandes d'E / S de la part de la CPU 0.

IRQbalance tente d'équilibrer cela de manière intelligente entre tous les processeurs et, lorsque cela est possible, place le traitement IRQ aussi près que possible du processus. Cela peut être le même noyau, un noyau de la même matrice partageant le même cache ou un noyau de la même zone NUMA.

Vous devez utiliser irqbalance sauf si:

Vous épinglez manuellement vos applications / IRQ dans des cœurs spécifiques pour une très bonne raison (faible temps de latence, exigences en temps réel, etc.).

Invités virtuels. Cela n’a aucun sens car, à moins que l’invité ne soit associé à des processeurs et des IRQ spécifiques et à un matériel net / de stockage dédié, vous ne verrez probablement pas les avantages que vous obtiendriez à nu. Mais votre hôte KVM / RHEV DEVRAIT utiliser irqbalance et numad et être réglé .

D'autres outils de réglage très importants sont les profils réglés et numad. Lisez à leur sujet! Utilise les!

Numad est similaire à irqbalance en ce sens qu'il essaie de s'assurer qu'un processus et sa mémoire sont dans la même zone numa. Avec de nombreux cœurs, nous constatons une réduction significative des latences, ce qui se traduit par une performance fiable beaucoup plus fluide sous des charges.

Si vous êtes compétent, diligent et surveillez régulièrement ou si vous avez une charge de travail très prévisible, vous obtiendrez de meilleures performances en épinglant manuellement des processus / IRQ sur des processeurs. Même dans ces situations, irqbalance et numad sont très proches. Mais si vous êtes incertain ou que votre charge de travail est imprévisible, vous devez utiliser irqbalance et numad.

Espenfjo
la source
5
FWIW, certains manuels 10GbE recommandent de désactiver irqbalance pour obtenir un meilleur débit ...
rogerdpack
8
Pour que le maximum absolu corresponde à leurs valeurs de référence, vous devez associer les éléments d’une certaine manière, mais ces références ne correspondent généralement pas aux charges de travail réelles. Si vous avez UNE application exécutée sur le serveur avec une exigence extrêmement sensible à la latence dans un modèle d’utilisation très prévisible, allez-y, configurez manuellement l’affinité des processeurs. Mais si l'application est davantage un cas d'utilisation réel, où les choses peuvent varier selon les processus et les charges, je suis d'accord avec la technologie Red Hat. L'équilibrage NUMA sous Linux progresse bien.
GeorgeB