NUMA

Razumevanje arhitekture NUMA

Razumevanje arhitekture NUMA
Oblikovanje računalnikov je vedno kompromis. Štiri osnovne komponente računalnika - centralna procesna enota (CPU) ali procesor, pomnilnik, pomnilnik in plošča za povezovanje komponent (sistem I / O vodila) - so kar se da pametno kombinirane, da ustvarijo stroj, ki je stroškovno učinkovit in močan. Proces oblikovanja večinoma vključuje optimizacijo procesorjev (soprocesorji, večjedrna nastavitev), vrste in količine pomnilnika, pomnilnika (diski, datotečni sistem) in cene.Zamisel soprocesorjev in večjedrne arhitekture je distribucija operacij na čim več posameznih računalniških enot v najmanjšem možnem prostoru in omogočanje vzporednega izvajanja računalniških navodil bolj dostopnega in cenovno ugodnega. Kar zadeva pomnilnik, gre za količino ali velikost, ki ju lahko obravnava posamezna računalniška enota, in kateri tip pomnilnika deluje z najnižjo možno zakasnitvijo. Shramba pripada zunanjemu pomnilniku, njegova zmogljivost pa je odvisna od vrste diska, datotečnega sistema, ki je v uporabi, navojev, protokola prenosa, komunikacijskega materiala in števila priključenih pomnilniških naprav.

Zasnova I / O vodilov predstavlja računalniške žile in bistveno določa, koliko in kako hitro je mogoče izmenjati podatke med zgoraj navedenimi komponentami. Vrhunsko kategorijo vodijo komponente, ki se uporabljajo na področju visokozmogljivega računalništva (HPC). Od sredine leta 2020 so med sodobnimi predstavniki HPC Nvidia Tesla in DGX, Radeon Instinct in pospeševalniki na osnovi Intel Xeon Phi GPU (za primerjave izdelkov glej [1,2]).

Razumevanje NUMA

Neenoten dostop do pomnilnika (NUMA) opisuje arhitekturo skupnega pomnilnika, ki se uporablja v sodobnih večprocesorskih sistemih. NUMA je računalniški sistem, sestavljen iz več posameznih vozlišč, tako da je skupni pomnilnik deljen med vsemi vozlišči: "vsakemu CPU je dodeljen lasten lokalni pomnilnik in lahko dostopa do pomnilnika iz drugih CPU v sistemu" [12,7].

NUMA je pameten sistem, ki se uporablja za povezovanje več centralnih procesorskih enot (CPU) s poljubno količino računalniškega pomnilnika, ki je na voljo v računalniku. Posamezna vozlišča NUMA so povezana prek razširljivega omrežja (V / I vodilo), tako da lahko CPU sistematično dostopa do pomnilnika, povezanega z drugimi vozlišči NUMA.

Lokalni pomnilnik je pomnilnik, ki ga CPU uporablja v določenem vozlišču NUMA. Tuji ali oddaljeni pomnilnik je pomnilnik, ki ga CPU zajema z drugega vozlišča NUMA. Izraz razmerje NUMA opisuje razmerje med stroški dostopa do tujega pomnilnika in stroški dostopa do lokalnega pomnilnika. Večje ko je razmerje, večji so stroški in s tem daljši čas za dostop do pomnilnika.

Vendar traja dlje kot takrat, ko CPU dostopa do lastnega lokalnega pomnilnika. Dostop do lokalnega pomnilnika je glavna prednost, saj združuje nizko zakasnitev in visoko pasovno širino. Nasprotno pa ima dostop do pomnilnika katerega koli drugega CPU višjo zakasnitev in nižjo pasovno širino.

Pogled nazaj: Razvoj večprocesorjev z deljenim pomnilnikom

Frank Dennemann [8] navaja, da sodobne sistemske arhitekture ne omogočajo resnično enotnega dostopa do pomnilnika (UMA), čeprav so ti sistemi posebej zasnovani za ta namen. Preprosto povedano, ideja vzporednega računalništva je bila imeti skupino procesorjev, ki sodelujejo pri izračunu določene naloge in s tem pospešijo sicer klasično zaporedno računanje.

Kot je pojasnil Frank Dennemann [8], je bila v začetku sedemdesetih let "uvedba sistemov relacijskih baz podatkov postala glavna potreba po sistemih, ki bi lahko servisirali več sočasnih uporabniških operacij in pretirano generiranje podatkov". »Kljub impresivni stopnji zmogljivosti enoprocesorjev so bili večprocesorski sistemi bolje opremljeni za to obremenitev. Da bi zagotovili stroškovno učinkovit sistem, je bil v središču raziskav prostor z naslovom skupnega pomnilnika. Že na začetku so zagovarjali sisteme, ki uporabljajo prečno stikalo, vendar je bila ta zapletenost zasnove povečana skupaj s povečanjem števila procesorjev, zaradi česar je sistem na osnovi vodila privlačnejši. Procesorji v sistemu vodila [lahko] dostopajo do celotnega pomnilniškega prostora s pošiljanjem zahtev na vodilo, kar je zelo stroškovno učinkovit način za čim bolj optimalno uporabo razpoložljivega pomnilnika."

Vendar računalniški sistemi, ki temeljijo na vodilih, prihajajo z ozkim grlom - omejena količina pasovne širine, ki vodi do težav z razširljivostjo. Več sistemskih procesorjev je dodanih v sistem, manj pasovne širine na vozlišče je na voljo. Poleg tega, več kot je dodanih CPU-jev, daljša je vodila in posledično večja zakasnitev.

Večina procesorjev je bila izdelanih v dvodimenzionalni ravnini. CPU so morali imeti tudi dodane integrirane krmilnike pomnilnika. Preprosta rešitev štirih pomnilniških vodilov (zgoraj, spodaj, levo, desno) za vsako jedro CPU je omogočala polno razpoložljivo pasovno širino, vendar to velja le zaenkrat. CPE so precej časa stagnirali s štirimi jedri. Dodajanje sledi zgoraj in spodaj je omogočilo neposredne vodile do diagonalno nasprotnih procesorjev, saj so čipi postali 3D. Naslednji logičen korak je bil namestitev štirijedrnega procesorja na kartico, ki se je nato povezal z vodilom.

Danes vsak procesor vsebuje veliko jeder s skupnim predpomnilnikom na čipu in pomnilnikom brez čipa ter ima spremenljive stroške dostopa do pomnilnika v različnih delih pomnilnika v strežniku.

Izboljšanje učinkovitosti dostopa do podatkov je eden glavnih ciljev sodobnega oblikovanja CPU. Vsako jedro procesorja je bilo obdarjeno z majhnim predpomnilnikom prve stopnje (32 KB) in večjim (256 KB) predpomnilnikom ravni 2. Različna jedra si bodo kasneje delila predpomnilnik nivoja 3 z več MB, katerih velikost se je sčasoma precej povečala.

Da bi se izognili napakam predpomnilnika - zahtevamo podatke, ki jih ni v predpomnilniku - veliko časa porabimo za iskanje pravega števila predpomnilnikov CPU, struktur predpomnjenja in ustreznih algoritmov. Glej [8] za podrobnejšo razlago protokola za predpomnjenje snoop [4] in koherenco predpomnilnika [3,5], pa tudi oblikovalske ideje za NUMA.

Programska podpora za NUMA

Obstajata dva ukrepa za optimizacijo programske opreme, ki lahko izboljšata delovanje sistema, ki podpira arhitekturo NUMA - afiniteta procesorja in umestitev podatkov. Kot je pojasnjeno v [19], »afiniteta procesorja […] omogoča vezavo in razvezavo procesa ali niti na en sam CPU ali vrsto CPU, tako da se bo postopek ali nit izvedel samo na določenem CPU ali CPU kot kateri koli CPU."Izraz" umestitev podatkov "se nanaša na spremembe programske opreme, pri katerih se koda in podatki hranijo čim bližje pomnilniku.

Različni operacijski sistemi UNIX in UNIX podpirajo NUMA na naslednje načine (spodnji seznam je vzet iz [14]):

V knjigi "Računalništvo in tehnologija, zbornik mednarodne konference (CST2016)" Ning Cai predlaga, da je bilo preučevanje arhitekture NUMA osredotočeno predvsem na vrhunsko računalniško okolje, in predlagal NUMA-osveščeno radijsko particioniranje (NaRP), ki optimizira zmogljivost skupnih predpomnilnikov v vozliščih NUMA za pospešitev aplikacij poslovne inteligence. NUMA kot taka predstavlja sredino med sistemi skupnega pomnilnika (SMP) z nekaj procesorji [6].

NUMA in Linux

Kot je navedeno zgoraj, jedro Linuxa podpira različico NUMA od različice 2.5. Tako Debian GNU / Linux kot Ubuntu ponujata podporo NUMA za optimizacijo procesov z dvema programskima paketoma numactl [16] in numad [17]. S pomočjo ukaza numactl lahko izpišete seznam razpoložljivih vozlišč NUMA v vašem sistemu [18]:

# numactl - Hardware
na voljo: 2 vozlišči (0-1)
vozlišče 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
velikost vozlišča 0: 8157 MB
vozlišče 0 brezplačno: 88 MB
vozlišče 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
velikost vozlišča 1: 8191 MB
vozlišče 1 brezplačno: 5176 MB
razdalje vozlišč:
vozlišče 0 1
0: 10 20
1: 20 10

NumaTop je uporabno orodje, ki ga je razvil Intel za spremljanje lokacije izvajalnega pomnilnika in analizo procesov v sistemih NUMA [10,11]. Orodje lahko prepozna morebitna ozka grla v zvezi z zmogljivostjo, povezano z NUMA, in s tem pomaga pri ponovnem uravnoteženju dodeljevanja pomnilnika / CPU, da se maksimira potencial sistema NUMA. Za podrobnejši opis glej [9].

Scenariji uporabe

Računalniki, ki podpirajo tehnologijo NUMA, omogočajo vsem procesorjem neposreden dostop do celotnega pomnilnika - CPU to vidijo kot en sam, linearni naslovni prostor. To vodi do učinkovitejše uporabe 64-bitne sheme naslavljanja, kar povzroči hitrejše gibanje podatkov, manj podvajanja podatkov in lažje programiranje.

Sistemi NUMA so zelo privlačni za strežniške programe, kot so podatkovno rudarjenje in sistemi za podporo odločanju. Poleg tega je pisanje aplikacij za igre na srečo in visoko zmogljivo programsko opremo s to arhitekturo veliko lažje.

Zaključek

Na koncu arhitektura NUMA obravnava razširljivost, ki je ena glavnih prednosti. V CPU NUMA bo eno vozlišče imelo večjo pasovno širino ali manjšo zakasnitev za dostop do pomnilnika na istem vozlišču (npr.g., lokalni CPU zahteva dostop do pomnilnika hkrati z oddaljenim dostopom; prednost je na lokalnem CPU). To bo močno izboljšalo pretok pomnilnika, če so podatki lokalizirani za določene procese (in s tem procesorje). Slabosti so višji stroški selitve podatkov iz enega procesorja v drugega. Dokler se to ne zgodi prepogosto, bo sistem NUMA prekašal sisteme z bolj tradicionalno arhitekturo.

Povezave in reference

  1. Primerjaj NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / products / primerjave / nvidia-tesla_vs_radeon-instinct
  2. Primerjaj NVIDIA DGX-1 in. Radeon Instinct, https: // www.itcentralstation.com / products / primerjave / nvidia-dgx-1_vs_radeon-instinct
  3. Skladnost predpomnilnika, Wikipedia, https: // en.wikipedia.org / wiki / Cache_coherence
  4. Vožnja z avtobusom, Wikipedia, https: // en.wikipedia.org / wiki / Bus_snooping
  5. Protokoli skladnosti predpomnilnika v večprocesorskih sistemih, Geeks za geeks, https: // www.geeksforgeeks.org / cache-coherence-protocols-in-multiprocessor-system /
  6. Računalništvo in tehnologija - Zbornik mednarodne konference (CST2016), Ning Cai (Ed.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel P. Bovet in Marco Cesati: Razumevanje arhitekture NUMA v Razumevanje jedra Linuxa, 3. izdaja, O'Reilly, https: // www.oreilly.com / knjižnica / pogled / razumevanje-linux / 0596005652 /
  8. Frank Dennemann: NUMA Deep Dive 1. del: Od UMA do NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-deep-dive-part-1-uma-numa /
  9. Colin Ian King: NumaTop: orodje za nadzor sistema NUMA, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool.html
  10. Numatop, https: // github.com / intel / numatop
  11. Številka paketa za Debian GNU / Linux, https: // paketi.debian.org / buster / numatop
  12. Jonathan Kehayias: Razumevanje neenotnega dostopa do spomina / arhitekture (NUMA), https: // www.sqlskills.com / blogs / jonathan / razumevanje-neenoten-pomnilnik-dostopnearhitekture-numa /
  13. Novice o jedru Linuxa za jedro 3.8, https: // kernelnewbies.org / Linux_3.8
  14. Neenoten dostop do pomnilnika (NUMA), Wikipedia, https: // en.wikipedia.org / wiki / Uniform_memory_access
  15. Dokumentacija za upravljanje pomnilnika Linux, NUMA, https: // www.jedro.org / doc / html / najnovejši / vm / numa.html
  16. Numactl paket za Debian GNU / Linux, https: // paketi.debian.org / sid / admin / numactl
  17. Numad paket za Debian GNU / Linux, https: // paketi.debian.org / buster / numad
  18. Kako ugotoviti, ali je konfiguracija NUMA omogočena ali onemogočena?, https: // www.tegeekdiary.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Afiniteta procesorja, Wikipedia, https: // en.wikipedia.org / wiki / Processor_affinity

Hvala vam

Avtorji se zahvaljujejo Geroldu Rupprechtu za podporo pri pripravi tega članka.

O avtorjih

Plaxedes Nehanda je večnamenska samozavestna vsestranska oseba, ki nosi veliko klobukov, med njimi načrtovalec dogodkov, virtualni asistent, prepisovalec in navdušen raziskovalec s sedežem v Johannesburgu v Južni Afriki.

Princ K. Nehanda je inženir za merjenje in upravljanje (meroslovje) v Paeflow Metering v Harareju v Zimbabveju.

Frank Hofmann dela na cesti - po možnosti iz Berlina (Nemčija), Ženeve (Švica) in Cape Towna (Južna Afrika) - kot razvijalec, trener in avtor za revije, kot sta Linux-User in Linux Magazine. Je tudi soavtor knjige za upravljanje paketov Debian (http: // www.dpmb.org).

SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...
Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...
0 A.D. Vadnica
Od številnih strateških iger tam 0 A.D. uspe izstopati kot izčrpen naslov in zelo globoka, taktična igra, čeprav je odprtokodna. Razvoj igre deluje ze...