Czy nadal istnieje możliwość nierównowagi na nowoczesnym sprzęcie?

39

To pytanie zostało zadane wcześniej, ale wierzę, że świat zmienił się na tyle, że można go zadać ponownie.

Czy irqbalance ma zastosowanie w dzisiejszych systemach, w których mamy procesory obsługujące NUMA z dzieleniem pamięci między ich rdzeniami?

Uruchomienie irqbalance --oneshot --debugpokazuje, że wirtualny gość w nowoczesnym środowisku VMware ESXi współdzieli węzły NUMA między rdzeniami.

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

irqbalance wykryje w tym przypadku, że jest uruchamiany w systemie NUMA i zakończy działanie. To zakłóca nasze monitorowanie procesu.

Czy powinniśmy zastanowić się nad uruchomieniem numada zamiast nierównowagi w takich systemach?

Jest to szczególnie interesujące w przypadku serwerów zwirtualizowanych VMware.

espenfjo
źródło

Odpowiedzi:

27

Oto jedna odpowiedź od technika z RedHat. Chociaż uważam, że większość sprzętu dla przedsiębiorstw obsługuje NUMA. I o ile wiem, VMware będzie również próbowało dopasować twoje maszyny wirtualne do tego samego węzła NUMA, o ile pasuje do niego konfiguracja procesora.

Bardzo mile widziane byłyby doświadczenia (zwłaszcza dotyczące VMware).

Jest to prawdą „z powodu” współczesnych serwerów. Pamiętaj, że Multi-CPU / Muli-Core to nie to samo co NUMA. Istnieje wiele systemów wieloprocesorowych / rdzeniowych, które nie mają NUMA.

Przed przeczytaniem mojego wyjaśnienia poniżej przeczytaj powyższy dokument dotyczący powinowactwa IRQ, a także następujące przewodniki:

RHEL 6 Performance Tuning Guide

Strojenie wydajności przy niskim opóźnieniu dla RHEL 6

Masz to wszystko przeczytane? Świetnie, nie musisz nic więcej ode mnie słyszeć! ;-) Ale na wypadek, gdybyś był niecierpliwy, oto dlaczego chcesz je ...

IRQbalance utrzymuje kopię zapasową wszystkich żądań IRQ na jednym procesorze. Widziałem, że wiele systemów z 4+ rdzeniami procesorów działa wolno, ponieważ wszystkie procesy na różnych procesorach oczekują na CPU 0 na przetwarzanie żądań IRQ sieci lub pamięci. Procesor 0 wygląda bardzo, bardzo zajęty, wszystkie pozostałe procesory nie są zajęte, ale aplikacje są bardzo wolne. Aplikacje działają wolno, ponieważ czekają na żądania We / Wy z procesora 0.

IRQbalance próbuje to zrównoważyć w inteligentny sposób we wszystkich procesorach i, jeśli to możliwe, ustawia przetwarzanie IRQ tak blisko procesu, jak to możliwe. Może to być ten sam rdzeń, rdzeń na tej samej kości dzielącej tę samą pamięć podręczną lub rdzeń w tej samej strefie NUMA.

Powinieneś używać nierównowagi, chyba że:

Ręcznie przypinasz aplikacje / IRQ do określonych rdzeni z bardzo dobrego powodu (małe opóźnienia, wymagania w czasie rzeczywistym itp.)

Wirtualni goście. To naprawdę nie ma sensu, ponieważ dopóki nie przypniesz gościa do określonych procesorów i przerwań IRQ oraz dedykowanego sprzętu sieciowego / pamięci masowej, prawdopodobnie nie zobaczysz korzyści, które uzyskałbyś na czystym metalu. Ale twój gospodarz KVM / RHEV POWINIEN używać nierównowagi, numad i dostroić .

Inne bardzo ważne narzędzia do strojenia to dostrojone profile i numad. Przeczytaj o nich! Użyj ich!

Numad jest podobny do nierównowagi, ponieważ stara się upewnić, że proces i jego pamięć znajdują się w tej samej strefie numa. W przypadku wielu rdzeni widzimy znaczne zmniejszenie opóźnień, co skutkuje znacznie płynniejszą i niezawodną wydajnością pod obciążeniami.

Jeśli jesteś wykwalifikowany, pracowity i regularnie monitorujesz lub masz bardzo przewidywalne obciążenie pracą, możesz uzyskać lepszą wydajność, ręcznie przypinając procesy / IRQ do procesorów. Nawet w takich sytuacjach nierównowaga i numad są bardzo zbliżone do siebie. Ale jeśli jesteś niepewny lub twoje obciążenie pracą jest nieprzewidywalne, powinieneś użyć nierównowagi i numad.

espenfjo
źródło
5
FWIW, niektóre podręczniki 10GbE zalecają wyłączenie nierównowagi, aby uzyskać lepszą przepustowość ...
rogerdpack
8
Aby uzyskać absolutne maksimum odpowiadające ich wartościom porównawczym, tak, musisz połączyć pewne elementy w określony sposób, ale te testy porównawcze na ogół nie odpowiadają rzeczywistym obciążeniom roboczym. Jeśli JEDNA aplikacja działa na serwerze z wymaganiem bardzo wrażliwym na opóźnienia w bardzo przewidywalnym wzorcu użytkowania, dobrze, śmiało i ręcznie skonfiguruj koligację procesora dla różnych rzeczy. Ale jeśli aplikacja jest bardziej realistycznym przykładem zastosowania, w którym rzeczy mogą się różnić w szerokim zakresie procesów i obciążeń, zgadzam się z technologią Red Hat. Równoważenie NUMA w Linuksie przebiega dobrze.
GeorgeB