NUMA

Pochopenie architektúry NUMA

Pochopenie architektúry NUMA
Navrhovanie počítačov je vždy kompromis. Štyri základné komponenty počítača - centrálna procesorová jednotka (CPU) alebo procesor, pamäť, úložisko a doska na pripojenie komponentov (systém zbernice I / O) - sú čo najchytrejšie kombinované a vytvárajú tak stroj, ktorý je nákladovo efektívny aj výkonný. Proces návrhu väčšinou zahŕňa optimalizáciu smerom k procesorom (koprocesory, nastavenie viacerých jadier), typu a množstva pamäte, úložného priestoru (disky, súborový systém) a ceny.Základnou myšlienkou koprocesorov a viacjadrovej architektúry je rozdeliť operácie na toľko jednotlivých výpočtových jednotiek v čo najmenšom možnom priestore a sprístupniť a sprístupniť paralelné vykonávanie počítačových pokynov. Pokiaľ ide o pamäť, ide o veľkosť alebo veľkosť, ktoré môžu byť riešené jednotlivými výpočtovými jednotkami, a ktorý typ pamäte pracuje s čo najmenšou latenciou. Úložisko patrí do externej pamäte a jeho výkon závisí od typu disku, používaného systému súborov, vlákien, prenosového protokolu, komunikačnej štruktúry a počtu pripojených pamäťových zariadení.

Dizajn I / O zberníc predstavuje počítačové tepny a významne určuje, koľko a ako rýchlo je možné vymieňať údaje medzi jednotlivými vyššie uvedenými komponentmi. Najvyššiu kategóriu vedú komponenty používané v oblasti vysokovýkonných výpočtov (HPC). V polovici roku 2020 sú súčasnými predstaviteľmi spoločnosti HPC spoločnosti Nvidia Tesla a DGX, Radeon Instinct a produkty akcelerátora založené na GPU založené na Intel Xeon Phi (porovnanie produktov nájdete v [1,2]).

Rozumiem NUMA

Neuniformný prístup do pamäte (NUMA) popisuje architektúru zdieľanej pamäte používanú v súčasných systémoch s viacerými procesormi. NUMA je výpočtový systém zložený z niekoľkých samostatných uzlov takým spôsobom, že agregovaná pamäť je zdieľaná medzi všetky uzly: „každému CPU je pridelená vlastná lokálna pamäť a môže pristupovať k pamäti z iných CPU v systéme“ [12,7].

NUMA je šikovný systém používaný na pripojenie viacerých centrálnych procesorov (CPU) k ľubovoľnému množstvu pamäte počítača dostupného v počítači. Jednotlivé uzly NUMA sú pripojené cez škálovateľnú sieť (I / O zbernicu) tak, aby procesor mohol systematicky pristupovať k pamäti spojenej s inými uzlami NUMA.

Lokálna pamäť je pamäť, ktorú CPU používa v konkrétnom uzle NUMA. Cudzia alebo vzdialená pamäť je pamäť, ktorú procesor berie z iného uzla NUMA. Pojem pomer NUMA popisuje pomer nákladov na prístup do cudzej pamäte k nákladom na prístup do lokálnej pamäte. Čím väčší je pomer, tým vyššie sú náklady, a tým dlhšie trvá prístup do pamäte.

Trvá to však dlhšie, ako keď tento procesor pristupuje k svojej vlastnej lokálnej pamäti. Prístup k lokálnej pamäti je hlavnou výhodou, pretože kombinuje nízku latenciu a veľkú šírku pásma. Naopak prístup k pamäti patriacej k akémukoľvek inému CPU má vyššiu latenciu a nižší výkon v šírke pásma.

Pri pohľade späť: Vývoj multiprocesorov so zdieľanou pamäťou

Frank Dennemann [8] uvádza, že moderné systémové architektúry neumožňujú skutočne jednotný prístup k pamäti (UMA), aj keď sú tieto systémy na tento účel špeciálne navrhnuté. Jednoducho povedané, myšlienkou paralelného výpočtu bolo mať skupinu procesorov, ktoré spolupracujú na výpočte danej úlohy, čím by sa urýchlil inak klasický postupný výpočet.

Ako vysvetlil Frank Dennemann [8], na začiatku 70. rokov „zavedenie relačných databázových systémov„ vyžadovalo systémy, ktoré by mohli obsluhovať viac súbežných operácií používateľov a nadmerné generovanie údajov “. „Napriek pôsobivej miere jednoprocesorového výkonu boli viacprocesorové systémy lepšie vybavené na zvládnutie tohto pracovného zaťaženia. V záujme poskytnutia nákladovo efektívneho systému sa výskum zameral na adresný priestor zdieľanej pamäte. Hneď na začiatku sa presadzovali systémy využívajúce priečny prepínač, avšak s touto zložitosťou návrhu sa počítalo spolu s nárastom procesorov, čo zatraktívnilo systém založený na zbernici. Procesory v systéme zbernice [môžu] získať prístup do celého pamäťového priestoru zasielaním požiadaviek na zbernicu, čo je veľmi nákladovo efektívny spôsob, ako čo najlepšie využiť dostupnú pamäť.“

Počítačové systémy založené na zberniciach však prichádzajú s úzkym miestom - obmedzené množstvo šírky pásma, ktoré vedie k problémom so škálovateľnosťou. Čím viac CPU je do systému pridaných, tým menšia je šírka pásma na každý uzol. Ďalej, čím viac CPU je pridaných, tým dlhšia je zbernica a tým vyššia je latencia.

Väčšina CPU bola skonštruovaná v dvojrozmernej rovine. CPU tiež museli mať pridané integrované radiče pamäte. Jednoduché riešenie, ktoré má štyri pamäťové zbernice (horná, dolná, ľavá, pravá) pre každé jadro procesora, umožňovalo úplnú dostupnú šírku pásma, ale to ide iba tak ďaleko. CPU pomerne dlho stagnovali so štyrmi jadrami. Pridávanie stôp nad a pod umožňovalo priame zbernice naprieč diagonálne protikladným procesorom, keď sa čipy stali 3D. Ďalším logickým krokom bolo umiestnenie štvorjadrového procesora na kartu, ktorá sa potom pripojila k zbernici.

Každý procesor dnes obsahuje veľa jadier so zdieľanou medzipamäťou na čipu a pamäťou mimo čip a má variabilné náklady na prístup do pamäte v rôznych častiach pamäte na serveri.

Zlepšenie efektívnosti prístupu k dátam je jedným z hlavných cieľov súčasného dizajnu CPU. Každé jadro CPU bolo vybavené malou vyrovnávacou pamäťou jednej úrovne (32 KB) a väčšou (256 KB) vyrovnávacou pamäťou úrovne 2. Rôzne jadrá by neskôr zdieľali medzipamäť úrovne 3 s veľkosťou niekoľkých MB, ktorej veľkosť sa postupom času značne zväčšila.

Aby ste sa vyhli vynechaniu pamäte cache - požadovaniu údajov, ktoré sa v pamäti cache nenachádzajú - veľa času sa venuje hľadaniu správneho počtu pamätí cache CPU, štruktúr ukladania do pamäte cache a zodpovedajúcich algoritmov. Podrobnejšie vysvetlenie protokolu pre ukladanie do pamäte cache snoop [4] a koherencie pamäte cache [3,5], pozri tiež [8], ako aj návrhové nápady, ktoré stoja za NUMA.

Softvérová podpora pre NUMA

Existujú dve opatrenia na optimalizáciu softvéru, ktoré môžu zlepšiť výkon systému podporujúceho architektúru NUMA - afinita procesora a umiestnenie dát. Ako je vysvetlené v [19], „afinita procesora [...] umožňuje väzbu a zrušenie spojenia procesu alebo vlákna s jedným CPU alebo s radom CPU tak, aby sa proces alebo vlákno vykonávalo iba na určenom CPU alebo CPU skôr ako ktorýkoľvek procesor.„Termín„ umiestnenie dát “sa vzťahuje na softvérové ​​modifikácie, pri ktorých sú kód a údaje uchovávané čo najbližšie v pamäti.

Rôzne operačné systémy UNIX a operačné systémy spojené s UNIX podporujú NUMA nasledujúcimi spôsobmi (zoznam uvedený nižšie je prevzatý z [14]):

V knihe „Computer Science and Technology, Proceedings of the International Conference (CST2016)“ Ning Cai naznačuje, že štúdia architektúry NUMA bola zameraná hlavne na špičkové výpočtové prostredie a navrhla radenie oddielov (NaRP) s vedomím NUMA, ktoré optimalizuje výkon zdieľaných kešiek v uzloch NUMA na urýchlenie aplikácií business intelligence. Ako taký predstavuje NUMA prostredník medzi systémami zdieľanej pamäte (SMP) s niekoľkými procesormi [6].

NUMA a Linux

Ako bolo uvedené vyššie, linuxové jadro podporuje NUMA od verzie 2.5. Debian GNU / Linux aj Ubuntu ponúkajú podporu optimalizácie procesov pomocou dvoch softvérových balíkov numactl [16] a numad [17]. Pomocou príkazu numactl môžete vypísať zoznam dostupných uzlov NUMA vo vašom systéme [18]:

# numactl --hardware
k dispozícii: 2 uzly (0-1)
uzol 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
veľkosť uzla 0: 8157 MB
uzol 0 voľný: 88 MB
uzol 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
veľkosť uzla 1: 8191 MB
uzol 1 voľný: 5176 MB
vzdialenosti uzlov:
uzol 0 1
0: 10 20
1: 20 10

NumaTop je užitočný nástroj vyvinutý spoločnosťou Intel na monitorovanie lokalizácie runtime pamäte a analýzu procesov v systémoch NUMA [10,11]. Tento nástroj dokáže identifikovať potenciálne úzke miesta súvisiace s výkonom NUMA, a tým pomôcť vyrovnať alokácie pamäte / CPU s cieľom maximalizovať potenciál systému NUMA. Podrobnejší popis nájdete v časti [9].

Scenáre použitia

Počítače, ktoré podporujú technológiu NUMA, umožňujú všetkým procesorom priamy prístup k celej pamäti - procesory to vidia ako jeden lineárny adresný priestor. To vedie k efektívnejšiemu využívaniu 64-bitovej schémy adresovania, čo má za následok rýchlejší pohyb údajov, menšiu replikáciu údajov a jednoduchšie programovanie.

Systémy NUMA sú celkom atraktívne pre aplikácie na strane servera, ako sú systémy na dolovanie dát a systémy na podporu rozhodovania. S touto architektúrou je navyše písanie aplikácií pre hry a vysokovýkonný softvér oveľa jednoduchšie.

Záver

Záverom možno povedať, že architektúra NUMA sa zameriava na škálovateľnosť, čo je jednou z jej hlavných výhod. V procesore NUMA bude mať jeden uzol vyššiu šírku pásma alebo nižšiu latenciu na prístup do pamäte v rovnakom uzle (e.g., lokálny CPU žiada o prístup do pamäte súčasne so vzdialeným prístupom; priorita je na lokálnom CPU). Toto dramaticky zlepší priepustnosť pamäte, ak sú údaje lokalizované do konkrétnych procesov (a teda procesorov). Nevýhodou sú vyššie náklady na presun údajov z jedného procesora do druhého. Pokiaľ sa tento prípad nestane príliš často, systém NUMA prekoná systémy s tradičnejšou architektúrou.

Odkazy a referencie

  1. Porovnať NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / products / comparisons / nvidia-tesla_vs_radeon-instinct
  2. Porovnať NVIDIA DGX-1 vs. Radeon Instinct, https: // www.itcentralstation.com / products / comparisons / nvidia-dgx-1_vs_radeon-instinct
  3. Koherencia cache, Wikipedia, https: // en.wikipedia.org / wiki / Cache_coherence
  4. Bus snooping, Wikipedia, https: // en.wikipedia.org / wiki / Bus_snooping
  5. Protokoly súdržnosti vyrovnávacej pamäte v multiprocesorových systémoch, Geeks for geeks, https: // www.geeksforgeeks.org / cache-coherence-protocols-in-multiprocessor-system /
  6. Počítačová veda a technológia - Zborník z medzinárodnej konferencie (CST2016), Ning Cai (vyd.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel P. Bovet a Marco Cesati: Porozumenie architektúre NUMA v Porozumení jadru Linuxu, 3. vydanie, O'Reilly, https: // www.oreilly.com / library / view / understand-the-linux / 0596005652 /
  8. Frank Dennemann: NUMA Deep Dive Part 1: From UMA to NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-deep-dive-part-1-uma-numa /
  9. Colin Ian King: NumaTop: Nástroj na monitorovanie systému NUMA, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitorovací-nástroj.html
  10. Numatop, https: // github.com / intel / numatop
  11. Balík numatop pre balíčky Debian GNU / Linux, https: //.debian.org / buster / numatop
  12. Jonathan Kehayias: Pochopenie nejednotného prístupu do pamäte / architektúry (NUMA), https: // www.sqlskills.com / blogs / jonathan / understand-non-uniform-memory-accessarchitectures-numa /
  13. Novinky v jadre systému Linux pre jadro 3.8, https: // kernelnewbies.org / Linux_3.8
  14. Nejednotný prístup do pamäte (NUMA), Wikipedia, https: // en.wikipedia.org / wiki / Non-uniform_memory_access
  15. Dokumentácia k správe pamäte Linux, NUMA, https: // www.jadro.org / doc / html / latest / vm / numa.html
  16. Balík numactl pre balíčky Debian GNU / Linux, https: //.debian.org / sid / admin / numactl
  17. Balík numad pre Debian GNU / Linux, balíčky https: //.debian.org / buster / numad
  18. Ako zistiť, či je konfigurácia NUMA povolená alebo zakázaná?, https: // www.teekdiary.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Afinita procesora, Wikipedia, https: // en.wikipedia.org / wiki / Processor_affinity

Ďakujem

Autori ďakujú Geroldovi Rupprechtovi za podporu pri príprave tohto článku.

O autoroch

Plaxedes Nehanda je mnohostranný a všestranný človek s vlastným pohonom, ktorý nosí veľa klobúkov, medzi nimi napríklad plánovač udalostí, virtuálny asistent, prepisovateľ a zanietený výskumník so sídlom v Johannesburgu v Južnej Afrike.

Knieža K. Nehanda je inžinierka v oblasti prístrojovej techniky a riadenia (metrológie) v spoločnosti Paeflow Metering v Harare v Zimbabwe.

Frank Hofmann pracuje na cestách - najlepšie z Berlína (Nemecko), Ženevy (Švajčiarsko) a Cape Town (Južná Afrika) - ako vývojár, tréner a autor pre časopisy ako Linux-User a Linux Magazine. Je tiež spoluautorom knihy o správe balíkov Debianu (http: // www.dpmb.org).

WinMouse vám umožňuje prispôsobiť a vylepšiť pohyb ukazovateľa myši na počítači so systémom Windows
Ak chcete vylepšiť predvolené funkcie kurzora myši, použite freeware WinMouse. Pridáva ďalšie funkcie, ktoré vám pomôžu vyťažiť zo svojej skromnej myš...
Tlačidlo ľavého kliknutia myši nefunguje v systéme Windows 10
Ak používate samostatnú myš s prenosným počítačom alebo stolovým počítačom, ale nefunguje ľavé tlačidlo myši vo Windows 10/8/7 z nejakého dôvodu uvádz...
Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...