NUMA

Izpratne par NUMA arhitektūru

Izpratne par NUMA arhitektūru
Datoru projektēšana vienmēr ir kompromiss. Četri datora pamatkomponenti - centrālais procesors (CPU) vai procesors, atmiņa, krātuve un tāfele komponentu savienošanai (I / O kopņu sistēma) - tiek apvienoti pēc iespējas gudrāk, lai izveidotu mašīnu, kas ir gan rentabla, gan spēcīga. Projektēšanas process galvenokārt ietver optimizāciju attiecībā uz procesoriem (līdzprocesoriem, daudzkodolu iestatīšanu), atmiņas veidu un apjomu, krātuvi (diski, failu sistēma), kā arī cenu.Kopprocesoru un daudzkodolu arhitektūras ideja ir izplatīt operācijas pēc iespējas vairākām atsevišķām skaitļošanas vienībām pēc iespējas mazākā telpā un padarīt skaitļošanas instrukciju paralēlu izpildi pieejamāku un pieejamāku. Runājot par atmiņu, jautājums ir par apjomu vai lielumu, ko var risināt individuālā skaitļošanas vienība, un kurš atmiņas tips darbojas ar zemāko iespējamo latentumu. Krātuve pieder ārējai atmiņai, un tās veiktspēja ir atkarīga no diska veida, izmantojamās failu sistēmas, pavedieniem, pārsūtīšanas protokola, sakaru auduma un pievienoto atmiņas ierīču skaita.

I / O kopņu dizains atspoguļo datora artērijas un būtiski nosaka, cik daudz un cik ātri datus var apmainīt starp atsevišķiem iepriekš uzskaitītajiem komponentiem. Augstāko kategoriju vada komponenti, kurus izmanto augstas veiktspējas skaitļošanas (HPC) jomā. Sākot no 2020. gada vidus, starp mūsdienu HPC pārstāvjiem ir Nvidia Tesla un DGX, Radeon Instinct un Intel Xeon Phi GPU bāzes akseleratora produkti (produktu salīdzinājumus skatiet [1,2]).

Izpratne par NUMA

Non-Uniform Memory Access (NUMA) apraksta koplietojamās atmiņas arhitektūru, ko izmanto mūsdienu daudzapstrādes sistēmās. NUMA ir skaitļošanas sistēma, kas sastāv no vairākiem atsevišķiem mezgliem tādā veidā, ka kopīgā atmiņa tiek koplietota starp visiem mezgliem: “katram procesoram ir piešķirta sava vietējā atmiņa un tas var piekļūt atmiņai no citiem sistēmas centrālajiem procesoriem” [12,7].

NUMA ir gudra sistēma, ko izmanto vairāku centrālo procesoru (CPU) savienošanai ar jebkuru datorā pieejamo datora atmiņas daudzumu. Atsevišķi NUMA mezgli ir savienoti mērogojamā tīklā (I / O kopne) tā, ka centrālais procesors var sistemātiski piekļūt atmiņai, kas saistīta ar citiem NUMA mezgliem.

Vietējā atmiņa ir atmiņa, kuru centrālais procesors izmanto noteiktā NUMA mezglā. Svešā vai attālā atmiņa ir atmiņa, kuru procesors ņem no cita NUMA mezgla. Termins NUMA attiecība apraksta piekļuves ārvalstu atmiņai un vietējās atmiņas piekļuves izmaksas attiecību. Jo lielāka attiecība, jo lielākas izmaksas, un līdz ar to ilgāks laiks nepieciešams, lai piekļūtu atmiņai.

Tomēr tas prasa ilgāku laiku nekā tad, kad šis centrālais procesors piekļūst savai vietējai atmiņai. Piekļuve vietējai atmiņai ir galvenā priekšrocība, jo tā apvieno zemu latentumu ar lielu joslas platumu. Turpretī piekļuvei atmiņai, kas pieder jebkuram citam CPU, ir lielāks latentums un zemāks joslas platuma veiktspēja.

Atskatīšanās: koplietotās atmiņas daudzprocesoru attīstība

Frenks Dennemans [8] paziņo, ka mūsdienu sistēmu arhitektūras nepieļauj patiesi vienotu atmiņas piekļuvi (UMA), kaut arī šīs sistēmas ir īpaši paredzētas šim nolūkam. Vienkārši runājot, paralēlas skaitļošanas ideja bija tāda procesoru grupa, kas sadarbojas, lai aprēķinātu noteiktu uzdevumu, tādējādi paātrinot citādi klasisko secīgo aprēķinu.

Kā paskaidroja Frenks Dennemans [8], 1970. gadu sākumā “nepieciešamība pēc sistēmām, kas varētu apkalpot vairākas vienlaicīgas lietotāju darbības un pārmērīga datu ģenerēšana, kļuva par pamatu”, ieviešot relāciju datu bāzu sistēmas. Neskatoties uz iespaidīgo vienprocesora veiktspējas līmeni, daudzprocesoru sistēmas bija labāk aprīkotas, lai tiktu galā ar šo darba slodzi. Lai nodrošinātu rentablu sistēmu, kopīgā atmiņas adrešu telpa kļuva par pētījumu fokusu. Jau sākumā tika atbalstītas sistēmas, kurās izmanto šķērssviras slēdzi, tomēr šī sarežģītība tika samazināta līdz ar procesoru skaita pieaugumu, kas kopnes sistēmu padarīja pievilcīgāku. Procesori kopnes sistēmā [var] piekļūt visai atmiņas vietai, nosūtot pieprasījumus uz kopni, kas ir ļoti rentabls veids, kā pēc iespējas optimālāk izmantot pieejamo atmiņu.”

Tomēr kopņu datorsistēmām ir vājš punkts - ierobežots joslas platuma daudzums, kas izraisa mērogojamības problēmas. Jo vairāk procesoru tiek pievienoti sistēmai, jo mazāks joslas platums ir pieejams vienam mezglam. Turklāt, jo vairāk CPU tiek pievienots, jo ilgāks būs kopnes lielums, un tāpēc augstāks latentums.

Lielākā daļa procesoru tika konstruēti divdimensiju plaknē. Centrālajiem procesoriem bija jāpievieno arī integrēti atmiņas kontrolleri. Vienkāršs risinājums, ka katram CPU kodolam ir četras atmiņas kopnes (augšā, apakšā, pa kreisi, pa labi), ļāva pilnībā piekļūt joslas platumam, taču tas notiek tikai līdz šim. Procesori uz ilgu laiku stagnēja ar četriem kodoliem. Pieliekot pēdas virs un zem, tiešie autobusi šķērsoja diagonāli pretējos procesorus, jo mikroshēmas kļuva par 3D. Nākamais loģiskais solis bija četrkodolu procesora ievietošana kartē, kas pēc tam tika savienota ar kopni.

Mūsdienās katrā procesorā ir daudz kodolu ar kopīgu čipa kešatmiņu un atmiņu, kas nav mikroshēma, un ir dažādas mainīgās piekļuves izmaksas dažādām servera atmiņas daļām.

Datu piekļuves efektivitātes uzlabošana ir viens no mūsdienu CPU dizaina galvenajiem mērķiem. Katram CPU kodolam tika piešķirta neliela līmeņa pirmā līmeņa kešatmiņa (32 KB) un lielāka (256 KB) 2. līmeņa kešatmiņa. Dažādie kodoli vēlāk koplietotu vairāku MB 3. līmeņa kešatmiņu, kuras lielums laika gaitā ir ievērojami pieaudzis.

Lai izvairītos no kešatmiņas kļūdām - pieprasot datus, kas nav kešatmiņā - daudz laika tiek tērēts pareizā CPU kešatmiņu, kešatmiņas struktūru un atbilstošo algoritmu atrašanai. Sīkāku skaidrojumu par kešatmiņas snoop [4] un kešatmiņas saskaņotības [3,5] protokolu, kā arī NUMA dizaina idejas skatiet [8].

NUMA programmatūras atbalsts

Ir divi programmatūras optimizācijas pasākumi, kas var uzlabot NUMA arhitektūru atbalstošās sistēmas darbību - procesora afinitāte un datu izvietošana. Kā paskaidrots [19], “procesora afinitāte […] ļauj procesu vai pavedienu saistīt un atsaistīt vienam procesoram vai CPU diapazonam tā, lai process vai pavediens tiktu izpildīts tikai norādītajā CPU vai CPU. nekā jebkurš centrālais procesors.Termins “datu izvietošana” attiecas uz programmatūras modifikācijām, kurās kods un dati tiek glabāti pēc iespējas tuvāk atmiņā.

Dažādas ar UNIX un UNIX saistītas operētājsistēmas atbalsta NUMA šādos veidos (zemāk redzamais saraksts ir ņemts no [14]):

Grāmatā “Computer Science and Technology, Proceedings of the International Conference (CST2016)” Ning Cai ierosina, ka NUMA arhitektūras izpēte galvenokārt bija vērsta uz augstākās klases skaitļošanas vidi un piedāvāja NUMA zinošo Radix Partitioning (NaRP), kas optimizē koplietoto kešatmiņu veiktspēju NUMA mezglos, lai paātrinātu biznesa inteliģences lietojumprogrammas. Tādējādi NUMA ir vidusceļš starp koplietotās atmiņas (SMP) sistēmām ar dažiem procesoriem [6].

NUMA un Linux

Kā minēts iepriekš, Linux kodols ir atbalstījis NUMA kopš 2. versijas.5. Gan Debian GNU / Linux, gan Ubuntu piedāvā NUMA atbalstu procesu optimizācijai ar abām programmatūras pakotnēm numactl [16] un numad [17]. Ar komandas numactl palīdzību jūs varat uzskaitīt pieejamo NUMA mezglu sarakstu savā sistēmā [18]:

# numactl --aparatūra
pieejams: 2 mezgli (0-1)
mezgls 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
mezgla 0 izmērs: 8157 MB
mezgls 0 bez maksas: 88 MB
1. mezgls cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
1. mezgla izmērs: 8191 MB
1. mezgls bez maksas: 5176 MB
mezglu attālumi:
mezgls 0 1
0: 10 20
1: 20 10

NumaTop ir noderīgs Intel izstrādāts rīks izpildlaika atmiņas lokalizācijas uzraudzībai un procesu analīzei NUMA sistēmās [10,11]. Šis rīks var identificēt potenciālās ar NUMA saistītās veiktspējas vājās vietas un tādējādi palīdzēt līdzsvarot atmiņas / CPU sadalījumu, lai maksimāli palielinātu NUMA sistēmas potenciālu. Sīkāku aprakstu skatiet [9].

Lietošanas scenāriji

Datori, kas atbalsta NUMA tehnoloģiju, ļauj visiem CPU tieši piekļūt visai atmiņai - CPU to redz kā vienu, lineāru adrešu telpu. Tas ļauj efektīvāk izmantot 64 bitu adresēšanas shēmu, kā rezultātā ātrāka datu kustība, mazāka datu replikācija un vieglāka programmēšana.

NUMA sistēmas ir diezgan pievilcīgas servera puses lietojumprogrammām, piemēram, datu ieguves un lēmumu atbalsta sistēmām. Turklāt ar šo arhitektūru lietojumprogrammu rakstīšana spēļu un augstas veiktspējas programmatūrai kļūst daudz vienkāršāka.

Secinājums

Noslēgumā jānorāda, ka NUMA arhitektūra pievērš uzmanību mērogojamībai, kas ir viena no tās galvenajām priekšrocībām. NUMA centrālajā procesorā vienam mezglam būs lielāks joslas platums vai mazāks latentums, lai piekļūtu tā paša mezgla atmiņai (e.g., vietējais centrālais procesors pieprasa piekļuvi atmiņai vienlaikus ar attālo piekļuvi; prioritāte ir vietējam procesoram). Tas ievērojami uzlabos atmiņas caurlaidspēju, ja dati tiks lokalizēti noteiktos procesos (un līdz ar to arī procesoros). Trūkumi ir augstākas datu pārvietošanas izmaksas no viena procesora uz otru. Kamēr šis gadījums nenotiek pārāk bieži, NUMA sistēma pārspēs sistēmas ar tradicionālāku arhitektūru.

Saites un atsauces

  1. Salīdziniet NVIDIA Tesla vs. Radeona instinkts, https: // www.itcentralstation.com / produkti / salīdzinājumi / nvidia-tesla_vs_radeon-instinct
  2. Salīdziniet NVIDIA DGX-1 pret. Radeona instinkts, https: // www.itcentralstation.com / produkti / salīdzinājumi / nvidia-dgx-1_vs_radeon-instinct
  3. Kešatmiņas saskaņotība, Wikipedia, https: // lv.vikipēdija.org / wiki / Cache_coherence
  4. Autobusu šņākšana, Vikipēdija, https: // lv.vikipēdija.org / wiki / Bus_snooping
  5. Kešatmiņas saskaņotības protokoli daudzprocesoru sistēmās, Geeks for geeks, https: // www.geeksforgeeks.org / cache-koherence-protokoli-daudzprocesoru sistēmā /
  6. Datorzinātne un tehnoloģija - Starptautiskās konferences (CST2016) raksti, Ning Cai (Red.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniels P. Bovets un Marko Cesati: Izpratne par NUMA arhitektūru, Izpratne par Linux kodolu, 3. izdevums, O'Reilly, https: // www.oreilly.com / library / view / Linux-izpratne / 0596005652 /
  8. Frenks Dennemans: NUMA Deep Dive 1. daļa: No UMA līdz NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-deep-dive-part-1-uma-numa /
  9. Kolins Īans Kings: NumaTop: NUMA sistēmas uzraudzības rīks, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool.html
  10. Numatops, https: // github.com / intel / numatop
  11. Debian GNU / Linux pakete paredzop, https: // paketes.debian.org / buster / numatop
  12. Jonathan Kehayias: Izpratne par neviendabīgu piekļuvi atmiņai / arhitektūrām (NUMA), https: // www.sqlskills.com / blogs / jonathan / izpratne-nevienmērīga-atmiņa-accessarchitectures-numa /
  13. Linux kodola ziņas par kodolu 3.8, https: // kernelnewbies.org / Linux_3.8
  14. Nevienveidīga piekļuve atmiņai (NUMA), Wikipedia, https: // lv.vikipēdija.org / wiki / Non-uniform_memory_access
  15. Linux atmiņas pārvaldības dokumentācija, NUMA, https: // www.kodols.org / doc / html / latest / vm / numa.html
  16. Paketes numactl Debian GNU / Linux, https: // paketes.debian.org / sid / admin / numactl
  17. Pakotnes numurs Debian GNU / Linux, https: // paketes.debian.org / buster / numad
  18. Kā uzzināt, vai NUMA konfigurācija ir iespējota vai atspējota?, https: // www.dienasgrāmata.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-invalid /
  19. Procesora radniecība, Wikipedia, https: // lv.vikipēdija.org / wiki / Processor_affinity

Paldies

Autori vēlas pateikties Geroldam Rupprechtam par atbalstu šī raksta sagatavošanā.

Par autoriem

Plaxedes Nehanda ir daudzpusīgs, pašpārliecināts un daudzpusīgs cilvēks, kurš nēsā daudzas cepures, tostarp pasākumu plānotāju, virtuālo palīgu, norakstītāju, kā arī dedzīgu pētnieku, kas atrodas Johannesburgā, Dienvidāfrikā.

Princis K. Nehanda ir instrumentu un vadības (metroloģijas) inženieris Paeflow Metering Hararē, Zimbabvē.

Frenks Hofmans strādā ceļā - vēlams no Berlīnes (Vācija), Ženēvas (Šveice) un Keiptaunas (Dienvidāfrika) - kā žurnālu, piemēram, Linux-User un Linux Magazine, izstrādātājs, treneris un autors. Viņš ir arī Debian pakotņu pārvaldības grāmatas (http: // www.dpmb.org).

Kā mainīt peles un skārienpaliktņu ritināšanas virzienu operētājsistēmā Windows 10
Pele un SkārienpaliktnisTas ne tikai padara skaitļošanu vienkāršu, bet arī efektīvāku un mazāk laikietilpīgu. Mēs nevaram iedomāties dzīvi bez šīm ier...
Kā mainīt peles rādītāja un kursora izmēru, krāsu un shēmu operētājsistēmā Windows 10
Peles rādītājs un kursors operētājsistēmā Windows 10 ir ļoti svarīgi operētājsistēmas aspekti. To var teikt arī par citām operētājsistēmām, tāpēc pati...
Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...