Projekt autobusów we/wy reprezentuje tętnice komputerowe i znacząco określa, ile i jak szybko można wymieniać dane między pojedynczymi komponentami wymienionymi powyżej. Najważniejsza kategoria jest prowadzona przez komponenty używane w dziedzinie obliczeń o wysokiej wydajności (HPC). Od połowy 2020 r. Wśród współczesnych przedstawicieli HPC są Nvidia Tesla i DGX, Radeon Instinct i Intel Xeon Phi GPU produkty akceleratora (patrz [1,2] porównania produktów).
Zrozumienie NUMA
Dostęp do pamięci niejednorodności (NOMA) opisuje wspólną architekturę pamięci używaną we współczesnych systemach wieloprocesowych. NOMA jest systemem obliczeniowym złożonym z kilku pojedynczych węzłów w taki sposób, że pamięć agregująca jest udostępniana między wszystkimi węzłami: „Każdy procesor przypisuje się własne pamięć lokalna i może uzyskać dostęp do pamięci z innych procesorów w systemie” [12,7].
NOMA to sprytny system używany do łączenia wielu jednostek przetwarzania centralnego (CPU) z dowolną ilością pamięci komputera dostępnej na komputerze. Pojedyncze węzły NUMA są podłączone do skalowalnej sieci (magistralowa magistra.
Pamięć lokalna to pamięć, której procesor używa w określonym węźle Numa. Pamięć obca lub zdalnej to pamięć, którą procesor przyjmuje z innego węzła Numa. Termin Współczynnik NUMA opisuje stosunek kosztu dostępu do pamięci obcych do kosztu dostępu do pamięci lokalnej. Im większy stosunek, tym większy koszt, a tym samym dłużej potrzebować dostępu do pamięci.
Jednak trwa to dłużej niż wtedy, gdy procesor uzyskuje dostęp do własnej pamięci lokalnej. Dostęp do pamięci lokalnej jest główną zaletą, ponieważ łączy niskie opóźnienia z wysoką przepustowością. Natomiast dostęp do pamięci należących do dowolnego innego procesora ma wyższe opóźnienie i niższą wydajność przepustowości.
Patrząc wstecz: ewolucja wieloprocesorów współdzielonych
Frank Dennemann [8] stwierdza, że nowoczesne architektury systemu nie pozwalają na naprawdę jednolity dostęp do pamięci (UMA), mimo że systemy te są specjalnie zaprojektowane w tym celu. Mówiąc prosto, ideą obliczeń równoległych było posiadanie grupy procesorów, które współpracują w celu obliczenia danego zadania, przyspieszając w ten sposób klasyczne obliczenie sekwencyjne.
Jak wyjaśnił Frank Dennemann [8], na początku lat 70. „potrzeba systemów, które mogłyby obsługiwać wiele równoległych operacji użytkowników i nadmierne generowanie danych, stała się głównym nurtem”. „Pomimo imponującej szybkości wydajności uniprocesor, systemy wieloprocesorowe były lepiej przygotowane do obsługi tego obciążenia pracą. Aby zapewnić opłacalny system, wspólna przestrzeń adresowa pamięci stała się przedmiotem badań. Na początku opowiadano się na systemach korzystających z przełącznika poprzecznego, jednak przy tej złożoności projektowej skalowanej wraz ze wzrostem procesorów, co sprawiło, że system oparty na autobusach był bardziej atrakcyjny. Procesory w systemie magistrali [mogą] uzyskać dostęp do całej przestrzeni pamięci, wysyłając żądania w autobus."
Jednak systemy komputerowe oparte na autobusach są wyposażone w wąskie gardło - ograniczoną ilość przepustowości, która prowadzi do problemów z skalowalnością. Im więcej procesorów, które są dodawane do systemu, tym mniej pasma na węzeł dostępny. Ponadto, im więcej procesorów, tym dłuższy autobus, a tym wyższe opóźnienie.
Większość procesorów skonstruowano w dwuwymiarowej płaszczyźnie. PROPUS musiały również dodać zintegrowane kontrolery pamięci. Proste rozwiązanie posiadania czterech autobusów pamięci (górna, dolna, po lewej, prawej) do każdego rdzenia procesora pozwoliło na pełną dostępną przepustowość, ale to idzie tylko do tej pory. Procesor stagnowany czterema rdzeniami przez długi czas. Dodanie śladów powyżej i poniżej pozwoliło bezpośrednim autobusom do przestawnego procesora przekątnego, gdy żetony stały się 3D. Kolejnym logicznym krokiem było umieszczenie czterokwałowego procesora na karcie, która następnie podłączyła się do autobusu.
Obecnie każdy procesor zawiera wiele rdzeni ze współdzieloną pamięcią podręczną na chipie i pamięcią poza chipem i ma zmienne koszty dostępu do pamięci w różnych częściach pamięci na serwerze.
Poprawa wydajności dostępu do danych jest jednym z głównych celów współczesnego projektowania procesora. Każdy rdzeń procesora został wyposażony małą pamięcią podręczną 1 poziomu (32 kb) i większą (256 kb) pamięci podręcznej poziomu 2. Różne rdzenie miały później pamięć podręczną poziomu 3 mb, której wielkość znacznie się rozwijała w czasie.
Aby uniknąć braków pamięci podręcznej - żądanie danych, które nie są w pamięci podręcznej - dużo czasu badań poświęca się na znalezienie odpowiedniej liczby pamięci podręcznej procesora, struktur buforowania i odpowiadających algorytmach. Patrz [8], aby uzyskać bardziej szczegółowe wyjaśnienie protokołu buforowania Snoop [4] i Cache Cheherency [3,5], a także pomysły projektowe za NOMA.
Obsługa oprogramowania dla NUMA
Istnieją dwa miary optymalizacji oprogramowania, które mogą poprawić wydajność systemu obsługującego architekturę NUMA - powinowactwo i umieszczenie danych procesora. Jak wyjaśniono w [19], „powinowactwo procesora […] umożliwia wiązanie i rozpinanie procesu lub wątku z pojedynczym procesorem lub zakres procesorów, aby proces lub wątek wykonywałby tylko na wyznaczonym procesorze lub procesor raczej niż jakikolwiek procesor.„Termin„ umieszczenie danych ”odnosi się do modyfikacji oprogramowania, w których kod i dane są trzymane jak najbliżej pamięci.
Różne systemy operacyjne związane z UNIX i UNIX obsługują NOMA w następujący sposób (poniższa lista jest pobierana z [14]):
W książce „Informatyka i technologia postępowanie Międzynarodowej Konferencji (CST2016)” Ning CAI sugeruje, że badanie architektury NUMA koncentrowało się głównie na wysokiej klasy środowisku obliczeniowym i proponował Particing Radix (NARP), który optymalizuje Wydajność wspólnych pamięci podręcznych w węzłach NUMA w celu przyspieszenia aplikacji do wywiadu biznesowego. Jako taka, NOMA reprezentuje środkowy grunt między systemami pamięci wspólnej (SMP) z kilkoma procesorami [6].
Numa i Linux
Jak wspomniano powyżej, jądro Linux obsługiwało NOMA od wersji 2.5. Zarówno Debian GNU/Linux, jak i Ubuntu oferują obsługę Numa dla optymalizacji procesu za pomocą dwóch pakietów oprogramowania Numactl [16] i Numad [17]. Za pomocą polecenia NUMACTL możesz wymienić ekwipunek dostępnych węzłów NUMA w swoim systemie [18]:
# Numactl -Hardware
Dostępne: 2 węzły (0-1)
Węzeł 0 procesory: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
Węzeł 0 Rozmiar: 8157 MB
Węzeł 0 za darmo: 88 MB
Węzeł 1 procesory: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
Węzeł 1 Rozmiar: 8191 MB
Węzeł 1 za darmo: 5176 MB
Odległości węzła:
Węzeł 0 1
0: 10 20
1: 20 10
Numatop jest przydatnym narzędziem opracowanym przez Intel do monitorowania lokalizacji pamięci wykonawczej i analizy procesów w systemach NUMA [10,11]. Narzędzie może zidentyfikować potencjalne wąskie gardła związane z NUMA, a tym samym pomóc w ponownej równowagi pamięci/alokacji procesora, aby zmaksymalizować potencjał systemu NUMA. Zobacz [9], aby uzyskać bardziej szczegółowy opis.
Scenariusze użytkowania
Komputery obsługujące technologię NOMA pozwalają wszystkim procesom na bezpośredni dostęp do całej pamięci - procesory postrzegają to jako pojedynczą, liniową przestrzeń adresową. Prowadzi to do bardziej wydajnego wykorzystania 64-bitowego schematu adresowania, co powoduje szybszy przemieszczanie danych, mniejszą replikację danych i łatwiejsze programowanie.
Systemy NUMA są dość atrakcyjne dla aplikacji po stronie serwera, takich jak systemy eksploracji danych i systemy obsługi decyzyjnej. Ponadto pisanie aplikacji do gier i oprogramowania o wysokiej wydajności staje się znacznie łatwiejsze dzięki tej architekturze.
Wniosek
Podsumowując, architektura NUMA dotyczy skalowalności, która jest jedną z jej głównych korzyści. W procesorze NUMA jeden węzeł będzie miał wyższą przepustowość lub niższą opóźnienie, aby uzyskać dostęp do pamięci w tym samym węźle (e.G., Lokalny procesor żąda dostępu do pamięci w tym samym czasie, co dostęp do zdalnego; Priorytetem jest lokalny procesor). To znacznie poprawi przepustowość pamięci, jeśli dane są zlokalizowane w określonych procesach (a tym samym procesorom). Wady to wyższe koszty przenoszenia danych z jednego procesora do drugiego. Tak długo, jak ten przypadek nie zdarza się zbyt często, system NUMA przewyższy systemy o bardziej tradycyjnej architekturze.
Linki i referencje
Dziękuję
Autorzy chcieliby podziękować Geroldowi Rupprechtowi za jego wsparcie podczas przygotowywania tego artykułu.
O Autorach
Plaxedes Nehanda to wielokartowana, wszechstronna wszechstronna osoba, która nosi wiele czapek, wśród nich planistę wydarzeń, wirtualny asystent, transkrybent, a także zapalony badacz z siedzibą w Johannesburgu w Południowej Afryce.
Prince k. Nehanda jest inżynierem oprzyrządowania i kontroli (Metrology) w Paeflow Metering w Harare w Zimbabwe.
Frank Hofmann pracuje na drodze - najlepiej z Berlina (Niemcy), Genewy (Szwajcaria) i Kapsztadu (Republika Południowej Afryki) - jako deweloper, trener i autor czasopism takich jak Linux -User i Linux Magazine. Jest także współautorem książki zarządzania pakietami Debian (http: // www.DPMB.org).