NUMA

Suprasti NUMA architektūrą

Suprasti NUMA architektūrą
Kompiuterių projektavimas visada yra kompromisas. Keturi pagrindiniai kompiuterio komponentai - centrinis procesorius (procesorius) arba procesorius, atmintis, atmintinė ir plokštė komponentams sujungti (įvesties / išvesties magistralės sistema) - kuo sumaniau sujungiami, kad būtų sukurta mašina, kuri yra ekonomiškas ir galingas. Projektavimo procesas dažniausiai susijęs su procesorių (bendrų procesorių, kelių branduolių sąrankos), atminties tipo ir kiekio, saugyklos (diskų, failų sistemos) bei kainos optimizavimu.Bendro procesoriaus ir daugialypės architektūros idėja yra paskirstyti operacijas kuo daugiau atskirų skaičiavimo įrenginių kuo mažesnėje erdvėje ir padaryti lygiagrečią skaičiavimo instrukcijų vykdymą prieinamesnę ir prieinamesnę. Kalbant apie atmintį, tai yra kiekio ar dydžio klausimas, kurį gali spręsti atskiras skaičiavimo įrenginys, ir kuris atminties tipas veikia su mažiausiomis vėlavimo galimybėmis. Saugykla priklauso išorinei atminčiai, o jos veikimas priklauso nuo disko tipo, naudojamos failų sistemos, sriegio, perdavimo protokolo, ryšio struktūros ir prijungtų atminties įrenginių skaičiaus.

I / O magistralių dizainas atspindi kompiuterio arterijas ir reikšmingai nustato, kiek ir kaip greitai galima keistis duomenimis tarp aukščiau išvardytų atskirų komponentų. Aukščiausią kategoriją pirmauja komponentai, naudojami didelio našumo kompiuterijos (HPC) srityje. Nuo 2020 m. Vidurio tarp šiuolaikinių HPC atstovų yra „Nvidia Tesla“ ir „DGX“, „Radeon Instinct“ ir „Intel Xeon Phi“ GPU pagrįsti greitintuvai (produktų palyginimus žr. [1,2]).

Suprasti NUMA

Nevienoda atminties prieiga (NUMA) apibūdina bendrosios atminties architektūrą, naudojamą šiuolaikinėse daugiaprocesinėse sistemose. NUMA yra skaičiavimo sistema, susidedanti iš kelių atskirų mazgų taip, kad bendra atmintis būtų dalijamasi tarp visų mazgų: „kiekvienam procesoriui priskiriama sava vietinė atmintis ir jis gali pasiekti atmintį iš kitų sistemos centrinių procesorių“ [12,7].

NUMA yra sumani sistema, naudojama daugeliui centrinių procesorių (CPU) prijungti prie bet kokio kompiuteryje esančios kompiuterio atminties. Vieni NUMA mazgai yra prijungti per keičiamo dydžio tinklą (įvesties / išvesties magistralę) taip, kad procesorius galėtų sistemingai pasiekti atmintį, susietą su kitais NUMA mazgais.

Vietinė atmintis yra atmintis, kurią procesorius naudoja tam tikrame NUMA mazge. Užsienio arba nuotolinė atmintis yra atmintis, kurią procesorius ima iš kito NUMA mazgo. Sąvoka NUMA santykis apibūdina prieigos prie užsienio atminties ir prieigos prie vietos atminties santykį. Kuo didesnis santykis, tuo didesnės išlaidos ir tuo ilgiau trunka prieiga prie atminties.

Tačiau tai užtrunka ilgiau nei tada, kai tas procesorius pasiekia savo vietinę atmintį. Vietinės atminties prieiga yra pagrindinis privalumas, nes ji sujungia mažą vėlavimą su dideliu pralaidumu. Priešingai, prieiga prie bet kurio kito procesoriaus priklausančios atminties turi didesnį vėlavimą ir mažesnį pralaidumo našumą.

Žvilgsnis atgal: bendrosios atminties daugiaprocesorių raida

Frankas Dennemannas [8] teigia, kad šiuolaikinės sistemos architektūros neleidžia tikrai vienodos atminties prieigos (UMA), net jei šios sistemos yra specialiai sukurtos tam tikslui. Paprasčiau tariant, lygiagretaus skaičiavimo idėja buvo turėti procesorių grupę, kuri bendradarbiautų apskaičiuodama tam tikrą užduotį, taip paspartindama kitaip klasikinį nuoseklų skaičiavimą.

Kaip paaiškino Frankas Dennemannas [8], aštuntojo dešimtmečio pradžioje „pradėjus naudoti reliacinių duomenų bazių sistemas,„ poreikis sistemoms, galinčioms aptarnauti daugybę tuo pačiu metu vykstančių vartotojo operacijų ir besaikį duomenų generavimą, tapo įprastu “. „Nepaisant įspūdingo vienprocesoriaus našumo, daugiaprocesorinės sistemos buvo geriau parengtos šiam darbo krūviui atlaikyti. Siekiant sukurti ekonomiškai efektyvią sistemą, tyrimų centre tapo bendrosios atminties adresų erdvė. Anksti buvo palaikomos sistemos, naudojančios skersinį jungiklį, tačiau dėl tokio dizaino sudėtingumo padidėjo procesoriai, dėl kurių magistralės sistema tapo patrauklesnė. Magistralės sistemos procesoriai gali pasiekti visą atminties vietą siunčiant užklausas į magistralę - tai labai ekonomiškas būdas kuo optimaliau naudoti turimą atmintį.“

Tačiau magistralinėse kompiuterinėse sistemose yra kliūtis - ribotas pralaidumo kiekis, dėl kurio kyla mastelio problemų. Kuo daugiau procesorių bus pridėta prie sistemos, tuo mažiau bus prieinamas vieno mazgo pralaidumas. Be to, kuo daugiau procesorių bus pridėta, tuo ilgesnė bus magistralė ir dėl to didesnė vėlavimo trukmė.

Dauguma procesorių buvo sukonstruoti dvimatėje plokštumoje. Centriniai procesoriai taip pat turėjo pridėti integruotus atminties valdiklius. Paprastas sprendimas - keturios atminties magistralės (viršuje, apačioje, kairėje, dešinėje) prie kiekvieno procesoriaus šerdies leido visą prieinamą pralaidumą, tačiau tai vyksta tik iki šiol. Procesoriai nemažai sustojo su keturiais branduoliais. Pridėjus pėdsakus aukščiau ir žemiau, tiesioginiai autobusai buvo nukreipti į įstrižai priešingus procesorius, nes lustai tapo 3D. Keturių branduolių procesoriaus įdėjimas į kortelę, kuri vėliau buvo prijungta prie magistralės, buvo kitas logiškas žingsnis.

Šiandien kiekviename procesoriuje yra daug branduolių su bendra lustine talpykla ir ne lusto atmintimi, o kintamos atminties prieigos išlaidos skirtingose ​​serverio atminties dalyse.

Duomenų prieigos efektyvumo gerinimas yra vienas pagrindinių šiuolaikinio procesoriaus dizaino tikslų. Kiekvienas procesoriaus branduolys buvo aprūpintas maža pirmojo lygio talpykla (32 KB) ir didesne (256 KB) 2 lygio talpykla. Vėliau įvairūs branduoliai pasidalins 3 MB 3 MB talpykla, kurios dydis laikui bėgant gerokai išaugo.

Kad būtų išvengta talpyklos praleidimų - prašant duomenų, kurių nėra talpykloje - daug laiko praleidžiama ieškant tinkamo skaičiaus procesoriaus talpyklų, talpyklos struktūrų ir atitinkamų algoritmų. Išsamesnį „Snoop“ [4] ir talpyklos nuoseklumo [3,5] protokolo paaiškinimą, taip pat NUMA dizaino idėjas, žr. [8].

NUMA programinės įrangos palaikymas

Yra dvi programinės įrangos optimizavimo priemonės, kurios gali pagerinti sistemos, palaikančios NUMA architektūrą, našumą - procesoriaus bendrumas ir duomenų išdėstymas. Kaip paaiškinta [19], „procesoriaus afinitetas […] leidžia susieti ir atsieti procesą ar giją prie vieno procesoriaus ar procesorių diapazono, kad procesas ar gija būtų vykdomi tik paskirtuose procesoriuose ar procesoriuose nei bet kuris procesorius.„Terminas„ duomenų talpinimas “reiškia programinės įrangos modifikacijas, kai kodas ir duomenys atmintyje laikomi kuo arčiau.

Skirtingos su UNIX ir UNIX susijusios operacinės sistemos palaiko NUMA šiais būdais (žemiau pateiktas sąrašas paimtas iš [14]):

Knygoje „Kompiuterija ir technologija, tarptautinės konferencijos pranešimai (CST2016)“ Ning Cai teigia, kad NUMA architektūros tyrimas daugiausia buvo sutelktas į aukščiausios klasės skaičiavimo aplinką ir pasiūlė NUMA žinantį „Radix“ skaidymą (NaRP), kuris optimizuoja bendrų talpyklų našumas NUMA mazguose, siekiant paspartinti verslo žvalgybos programas. Taigi, NUMA reiškia vidurį tarp bendrosios atminties (SMP) sistemų su keliais procesoriais [6].

NUMA ir „Linux“

Kaip minėta aukščiau, „Linux“ branduolys palaiko NUMA nuo 2 versijos.5. Debian GNU / Linux ir Ubuntu siūlo NUMA palaikymą procesams optimizuoti, naudojant du programinės įrangos paketus numactl [16] ir numad [17]. Naudodami komandą numactl, galite išvardyti galimų NUMA mazgų sąrašą savo sistemoje [18]:

# numactl - techninė įranga
galimas: 2 mazgai (0–1)
mazgas 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
0 mazgo dydis: 8157 MB
mazgas 0 laisvas: 88 MB
1 mazgas CPU: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
1 mazgo dydis: 8191 MB
1 mazgas laisvas: 5176 MB
mazgų atstumai:
mazgas 0 1
0: 10 20
1: 20 10

„NumaTop“ yra naudinga „Intel“ sukurta priemonė vykdymo laiko atminties stebėjimui ir procesų analizei NUMA sistemose [10,11]. Įrankis gali nustatyti galimus su NUMA susijusius našumo trūkumus ir taip padėti subalansuoti atminties / procesoriaus paskirstymą, kad maksimaliai padidintų NUMA sistemos potencialą. Išsamesnį aprašymą žr. [9].

Naudojimo scenarijai

Kompiuteriai, palaikantys NUMA technologiją, leidžia visiems procesoriams tiesiogiai pasiekti visą atmintį - procesoriai tai mato kaip vieną, tiesinę adreso erdvę. Tai leidžia efektyviau naudoti 64 bitų adresavimo schemą, todėl greitesnis duomenų judėjimas, mažesnis duomenų replikavimas ir lengvesnis programavimas.

NUMA sistemos yra gana patrauklios serverio programoms, tokioms kaip duomenų gavyba ir sprendimų palaikymo sistemos. Be to, naudojant šią architektūrą žymiai lengviau rašyti programas žaidimams ir didelio našumo programinei įrangai.

Išvada

Apibendrinant galima pasakyti, kad NUMA architektūra atkreipia dėmesį į mastelio keitimą, kuris yra vienas iš pagrindinių jos pranašumų. NUMA procesoriuje vienas mazgas turės didesnį pralaidumą arba mažesnį vėlavimą, kad galėtų pasiekti to paties mazgo atmintį (e.g., vietinis centrinis procesorius prašo prieigos prie atminties tuo pačiu metu kaip ir nuotolinė prieiga; prioritetas yra vietinis procesorius). Tai žymiai pagerins atminties pralaidumą, jei duomenys bus lokalizuoti pagal konkrečius procesus (taigi ir procesorius). Trūkumai yra didesnės duomenų perkėlimo iš vieno procesoriaus į kitą išlaidos. Kol šis atvejis nenutiks per dažnai, NUMA sistema pranoks tradicinės architektūros sistemas.

Nuorodos ir nuorodos

  1. Palyginkite „NVIDIA Tesla“ ir. „Radeon Instinct“, https: // www.itcentralstacija.com / produktai / palyginimai / nvidia-tesla_vs_radeon-instinct
  2. Palyginkite NVIDIA DGX-1 ir. „Radeon Instinct“, https: // www.itcentralstation.com / produktai / palyginimai / nvidia-dgx-1_vs_radeon-instinct
  3. Talpyklos suderinamumas, Vikipedija, https: // lt.vikipedija.org / wiki / Cache_coherence
  4. Autobusų šnipinėjimas, Vikipedija, https: // lt.vikipedija.org / wiki / Bus_snooping
  5. Talpyklos nuoseklumo protokolai daugiaprocesorinėse sistemose, „Geeks for geeks“, https: // www.geeksforgeeks.org / cache-Koherence-protokolai-daugelio procesorių sistemoje /
  6. Kompiuterija ir technologija. Tarptautinės konferencijos (CST2016) pranešimai, Ning Cai (Red.), „World Scientific Publishing Co Pte Ltd“, ISBN: 9789813146419
  7. Daniel P. Bovet ir Marco Cesati: Suprasti NUMA architektūrą suprantant „Linux“ branduolį, 3-asis leidimas, O'Reilly, https: // www.oreilly.com / biblioteka / rodinys / linux supratimas / 0596005652 /
  8. Frankas Dennemannas: NUMA gilaus nardymo 1 dalis: nuo UMA iki NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-giluminis nardymas-1-dalis-uma-numa /
  9. Colin Ian King: NumaTop: NUMA sistemos stebėjimo įrankis, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool.HTML
  10. Numatopas, https: // github.com / intel / numatop
  11. „Debian GNU / Linux“ paketo numatop, https: // paketai.debianas.org / buster / numatop
  12. Jonathanas Kehayiasas: supratimas apie nevienodą prieigą prie atminties / architektūras (NUMA), https: // www.sqlskills.com / blogs / jonathan / supratimas-nevienodas-atmintis-accessarchitectures-numa /
  13. „Linux“ branduolio naujienos, skirtos 3 branduoliui.8, https: // kernelnewbies.org / Linux_3.8
  14. Nevienoda atminties prieiga (NUMA), Vikipedija, https: // lt.vikipedija.org / wiki / Non-uniform_memory_access
  15. „Linux“ atminties valdymo dokumentacija, NUMA, https: // www.branduolys.org / doc / html / latest / vm / numa.HTML
  16. Paketo numactl, skirtas „Debian GNU / Linux“, https: // paketai.debianas.org / sid / admin / numactl
  17. „Debian GNU / Linux“ paketų numeris, „https: //“ paketai.debianas.org / buster / numad
  18. Kaip sužinoti, ar įgalinta arba išjungta NUMA konfigūracija?, https: // www.dienoraštis.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-invalid /
  19. Procesoriaus bendrumas, Vikipedija, https: // lt.vikipedija.org / wiki / Processor_affinity

Ačiū

Autoriai norėtų padėkoti Geroldui Rupprechtui už palaikymą rengiant šį straipsnį.

Apie autorius

„Plaxedes Nehanda“ yra daugialypis, savarankiškas, universalus žmogus, nešiojantis daugybę kepurių, tarp jų - renginių planuotojas, virtualus asistentas, transkribuotojas, taip pat aistringas tyrėjas, įsikūręs Johanesburge, Pietų Afrikoje.

Princas K. Nehanda yra instrumentų ir valdymo (metrologijos) inžinierius „Paeflow Metering“ Harare, Zimbabvėje.

Frankas Hofmannas dirba kelyje - geriausia iš Berlyno (Vokietija), Ženevos (Šveicarija) ir Keiptauno (Pietų Afrika) - kaip žurnalų, tokių kaip „Linux-User“ ir „Linux Magazine“, kūrėjas, treneris ir autorius. Jis taip pat yra „Debian“ paketų tvarkymo knygos (http: // www.dpmb.org).

Kaip naudoti „Xdotool“, norint paskatinti pelės paspaudimus ir klavišų paspaudimus sistemoje „Linux“
„Xdotool“ yra nemokamas ir atviro kodo komandinės eilutės įrankis, skirtas pelės paspaudimams ir klavišų paspaudimams imituoti. Šis straipsnis apims t...
5 populiariausi „Linux“ skirtų ergonomiškų kompiuterinių pelių produktai
Ar ilgalaikis kompiuterio naudojimas sukelia riešo ar pirštų skausmą?? Ar jūs kenčiate nuo sąnarių standumo ir nuolat turite paspausti rankas? Ar jauč...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...