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]):
- „Silicon Graphics IRIX“ palaikymas „ccNUMA“ architektūrai, naudojant daugiau nei 1240 procesorių su „Origin“ serverių serijomis.
- „Microsoft Windows 7“ ir „Windows Server 2008 R2“ pridėjo NUMA architektūros palaikymą per 64 loginius branduolius.
- 2 versija.5 „Linux“ branduolyje jau buvo pagrindinis NUMA palaikymas, kuris buvo dar labiau patobulintas vėlesniuose branduolio leidimuose. 3 versija.8 „Linux“ branduolio atnešė naują NUMA pagrindą, kuris leido sukurti efektyvesnę NUMA politiką vėlesniuose branduolio leidimuose [13]. 3 versija.13 „Linux“ branduolio atnešė daugybę politikos krypčių, kuriomis siekiama priartinti procesą prie jo atminties, taip pat tvarkyti atvejus, pavyzdžiui, dalytis atminties puslapiais tarp procesų ar naudoti skaidrius didžiulius puslapius; nauji sistemos valdymo nustatymai leidžia įjungti arba išjungti NUMA balansavimą, taip pat konfigūruoti įvairius NUMA atminties balansavimo parametrus [15].
- Tiek „Oracle“, tiek „OpenSolaris“ modeliuoja NUMA architektūrą, įvedant logines grupes.
- „FreeBSD“ pridėjo pradinį NUMA giminingumą ir politikos konfigūraciją 11 versijoje.0.
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ė įrangagalimas: 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
- Palyginkite „NVIDIA Tesla“ ir. „Radeon Instinct“, https: // www.itcentralstacija.com / produktai / palyginimai / nvidia-tesla_vs_radeon-instinct
- Palyginkite NVIDIA DGX-1 ir. „Radeon Instinct“, https: // www.itcentralstation.com / produktai / palyginimai / nvidia-dgx-1_vs_radeon-instinct
- Talpyklos suderinamumas, Vikipedija, https: // lt.vikipedija.org / wiki / Cache_coherence
- Autobusų šnipinėjimas, Vikipedija, https: // lt.vikipedija.org / wiki / Bus_snooping
- Talpyklos nuoseklumo protokolai daugiaprocesorinėse sistemose, „Geeks for geeks“, https: // www.geeksforgeeks.org / cache-Koherence-protokolai-daugelio procesorių sistemoje /
- Kompiuterija ir technologija. Tarptautinės konferencijos (CST2016) pranešimai, Ning Cai (Red.), „World Scientific Publishing Co Pte Ltd“, ISBN: 9789813146419
- 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 /
- Frankas Dennemannas: NUMA gilaus nardymo 1 dalis: nuo UMA iki NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-giluminis nardymas-1-dalis-uma-numa /
- Colin Ian King: NumaTop: NUMA sistemos stebėjimo įrankis, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool.HTML
- Numatopas, https: // github.com / intel / numatop
- „Debian GNU / Linux“ paketo numatop, https: // paketai.debianas.org / buster / numatop
- Jonathanas Kehayiasas: supratimas apie nevienodą prieigą prie atminties / architektūras (NUMA), https: // www.sqlskills.com / blogs / jonathan / supratimas-nevienodas-atmintis-accessarchitectures-numa /
- „Linux“ branduolio naujienos, skirtos 3 branduoliui.8, https: // kernelnewbies.org / Linux_3.8
- Nevienoda atminties prieiga (NUMA), Vikipedija, https: // lt.vikipedija.org / wiki / Non-uniform_memory_access
- „Linux“ atminties valdymo dokumentacija, NUMA, https: // www.branduolys.org / doc / html / latest / vm / numa.HTML
- Paketo numactl, skirtas „Debian GNU / Linux“, https: // paketai.debianas.org / sid / admin / numactl
- „Debian GNU / Linux“ paketų numeris, „https: //“ paketai.debianas.org / buster / numad
- 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 /
- 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).