NUMA

A NUMA architektúra megértése

A NUMA architektúra megértése
A számítógépek tervezése mindig kompromisszum. A számítógép négy alapeleme - a központi processzor (CPU) vagy processzor, a memória, a tároló és az alkatrészek csatlakoztatásához szükséges kártya (I / O buszrendszer) - a lehető legokosabb módon kombinálva olyan gépet hoz létre, amely költséghatékony és hatékony. A tervezési folyamat többnyire a processzorok (társprocesszorok, többmagos telepítés), a memória típusa és mennyisége, a tárhely (lemezek, fájlrendszer), valamint az ár optimalizálását foglalja magában.A társprocesszorok és a többmagos architektúra mögött az az elgondolás áll, hogy a műveleteket a lehető legkisebb térben osztják el annyi egyetlen számítástechnikai egység számára, és elérhetőbbé és megfizethetőbbé tegyék a számítási utasítások párhuzamos végrehajtását. A memória szempontjából kérdés, hogy az egyes számítási egységek mennyit vagy méretet tudnak kezelni, és melyik memória típus működik a lehető legkisebb késéssel. A tárolás a külső memóriához tartozik, és teljesítménye függ a lemez típusától, a használt fájlrendszertől, a menettől, az átviteli protokolltól, a kommunikációs anyagtól és a csatolt memóriaeszközök számától.

Az I / O buszok kialakítása a számítógép artériáit reprezentálja, és jelentősen meghatározza, hogy mennyit és milyen gyorsan lehet adatokat cserélni a fent felsorolt ​​egyes alkatrészek között. A felső kategóriát a nagy teljesítményű számítástechnika (HPC) területén használt alkatrészek vezetik. 2020 közepétől a HPC kortárs képviselői között vannak az Nvidia Tesla és a DGX, a Radeon Instinct és az Intel Xeon Phi GPU-alapú gyorsító termékek (a termék-összehasonlításokat lásd [1,2]).

A NUMA megértése

A nem egységes memória-hozzáférés (NUMA) a kortárs többprocesszoros rendszerekben használt megosztott memória-architektúrát írja le. A NUMA egy számítási rendszer, amely több különálló csomópontból áll, oly módon, hogy az összesített memória meg legyen osztva az összes csomópont között: „mindegyik CPU-hoz saját helyi memória tartozik, és hozzáférhetnek a memóriához a rendszer többi CPU-jából” [12,7].

A NUMA egy okos rendszer, amelyet több központi processzor (CPU) csatlakoztatásához használnak a számítógépen rendelkezésre álló bármilyen számítógépes memóriához. Az egyes NUMA csomópontok skálázható hálózaton (I / O buszon) keresztül vannak összekötve, így a CPU szisztematikusan hozzáférhet a többi NUMA csomóponthoz társított memóriához.

A helyi memória az a memória, amelyet a CPU egy adott NUMA csomópontban használ. Az idegen vagy a távoli memória az a memória, amelyet a CPU átvesz egy másik NUMA csomópontból. A NUMA arány kifejezés az idegen memória elérésének költsége és a helyi memória elérésének költségeinek arányát írja le. Minél nagyobb az arány, annál nagyobb a költség, és így hosszabb ideig tart a memória elérése.

Ez azonban hosszabb ideig tart, mint amikor a CPU hozzáfér a saját helyi memóriájához. A helyi memória elérése nagy előny, mivel egyesíti az alacsony késleltetést a nagy sávszélességgel. Ezzel szemben bármely más CPU-hoz tartozó memória elérése magasabb késleltetéssel és alacsonyabb sávszélességű teljesítménnyel rendelkezik.

Visszatekintés: Megosztott memóriájú multiprocesszorok fejlődése

Frank Dennemann [8] kijelenti, hogy a modern rendszerarchitektúrák nem teszik lehetővé az egyenletes memória-hozzáférést (UMA), annak ellenére, hogy ezeket a rendszereket kifejezetten erre a célra tervezték. Egyszerűen szólva, a párhuzamos számítás ötlete az volt, hogy olyan processzorok csoportja legyen, amelyek együttműködnek egy adott feladat kiszámításában, ezáltal felgyorsítva az egyébként klasszikus szekvenciális számítást.

Ahogy Frank Dennemann [8] kifejtette, az 1970-es évek elején a relációs adatbázis-rendszerek bevezetésével „vált szükségessé olyan rendszerek iránti igény, amelyek több egyidejű felhasználói műveletet és túlzott adatgenerálást képesek kiszolgálni”. „A multifunkcionális teljesítmény lenyűgöző mértéke ellenére a többprocesszoros rendszerek jobban felszerelték ezt a munkaterhelést. Költséghatékony rendszer biztosítása érdekében a megosztott memória címtere a kutatás középpontjába került. Korán a kereszttartó kapcsolót használó rendszerek támogatását szorgalmazták, azonban ez a kialakítás bonyolultsága a processzorok számának növekedésével párhuzamosan vonzóbbá tette a busz alapú rendszert. A buszrendszerben lévő processzorok hozzáférhetnek a teljes memóriaterülethez kérelmek elküldésével a buszon, ez egy nagyon költséghatékony módszer a rendelkezésre álló memória lehető legoptimálisabb felhasználására.”

A busz alapú számítógépes rendszerek azonban szűk keresztmetszettel rendelkeznek - a sávszélesség korlátozott mennyisége skálázhatósági problémákhoz vezet. Minél több CPU kerül a rendszerbe, annál kevesebb sávszélesség áll rendelkezésre csomópontonként. Továbbá, minél több CPU-t adunk hozzá, annál hosszabb lesz a busz, és annál nagyobb lesz a késés.

A legtöbb CPU kétdimenziós síkban készült. A CPU-khoz integrált memóriavezérlőket is hozzá kellett adni. Az egyszerű megoldás, hogy mindegyik CPU-maghoz négy memória busz (felső, alsó, bal, jobb) tartozik, lehetővé tette a teljes elérhető sávszélességet, de ez csak eddig megy. A CPU-k jelentős ideig négy maggal stagnáltak. A nyomok hozzáadása felett és alatt lehetővé tette a közvetlen buszok átlósan szemben álló CPU-khoz való átadását, mivel a chipek 3D-sé váltak. A következő logikus lépés volt egy négymagos CPU elhelyezése egy kártyán, amely aztán csatlakozott egy buszhoz.

Ma minden processzor sok magot tartalmaz megosztott chip-gyorsítótárral és chip-en kívüli memóriával, és változó memória-hozzáférési költségekkel rendelkezik a memória különböző részein a szerveren belül.

Az adatelérés hatékonyságának javítása a kortárs CPU-tervezés egyik fő célja. Mindegyik CPU-mag egy kis szintű (32 KB) és egy nagyobb (256 KB) 2. szintű gyorsítótárral volt felruházva. A különféle magok később megosztották a 3 MB szintű, több MB méretű gyorsítótárat, amelynek mérete az idők során jelentősen megnőtt.

A gyorsítótár-hiányosságok elkerülése érdekében - olyan adatok kérése, amelyek nincsenek a gyorsítótárban - sok kutatási időt fordítanak a megfelelő számú CPU-gyorsítótár, gyorsítótár-struktúra és a megfelelő algoritmusok megtalálására. Lásd [8] a snoop [4] és a gyorsítótár koherenciájának [3,5] gyorsítótárazásához szükséges protokoll, valamint a NUMA mögött álló tervezési ötletek részletesebb ismertetését.

Szoftvertámogatás a NUMA-hoz

Két szoftveroptimalizálási intézkedés javíthatja a NUMA architektúrát támogató rendszer teljesítményét - a processzor affinitása és az adatok elhelyezése. Amint azt a [19] -ben kifejtettük, „a processzor affinitása […] lehetővé teszi egy folyamat vagy egy szál összekapcsolását és lekapcsolását egyetlen CPU-ba, vagy egy sor CPU-ba, így a folyamat vagy a szál csak a kijelölt CPU-n vagy CPU-ken fog végrehajtani mint bármely CPU.”Az„ adatelhelyezés ”kifejezés olyan szoftvermódosításokra utal, amelyekben a kódot és az adatokat a lehető legközelebb tartják a memóriában.

A különböző UNIX és UNIX operációs rendszerek a következő módon támogatják a NUMA-t (az alábbi lista a [14] -ből származik):

Ning Cai a „Computer Science and Technology, Proceedings of the International Conference (CST2016)” könyvben Ning Cai felveti, hogy a NUMA architektúra tanulmányozása főként a csúcskategóriás számítástechnikai környezetre összpontosított, és a NUMA-tudatos Radix particionálást (NaRP) javasolta, amely optimalizálja a megosztott gyorsítótárak teljesítménye NUMA csomópontokban az üzleti intelligencia alkalmazások felgyorsítása érdekében. Mint ilyen, a NUMA középutat jelent a néhány processzorral rendelkező megosztott memória (SMP) rendszerek között [6].

NUMA és Linux

Amint fentebb említettük, a Linux kernel a 2. verzió óta támogatja a NUMA-t.5. A Debian GNU / Linux és az Ubuntu egyaránt NUMA támogatást nyújt a folyamatoptimalizáláshoz a két numactl [16] és numad [17] szoftvercsomaggal. A numactl parancs segítségével felsorolhatja a rendszerben rendelkezésre álló NUMA csomópontok listáját [18]:

# numactl - hardver
elérhető: 2 csomópont (0-1)
csomópont 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 méret: 8157 MB
0 csomópont szabad: 88 MB
1. csomópont cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
1. csomópont mérete: 8191 MB
1. csomópont szabad: 5176 MB
csomópont távolságok:
csomópont 0 1
0: 10 20
1: 20 10

A NumaTop az Intel által kifejlesztett hasznos eszköz a futásidejű memória lokalitásának figyelemmel kísérésére és a folyamatok elemzésére a NUMA rendszerekben [10,11]. Az eszköz képes azonosítani a potenciális NUMA-val kapcsolatos szűk keresztmetszeteket, és ezáltal segít egyensúlyba hozni a memóriát / CPU-kiosztást a NUMA-rendszer lehetőségeinek maximalizálása érdekében. Részletesebb leírást lásd a [9] -ben.

Felhasználási forgatókönyvek

A NUMA technológiát támogató számítógépek lehetővé teszik, hogy az összes CPU közvetlenül elérje a teljes memóriát - a CPU-k ezt egyetlen, lineáris címtérként tekintik. Ez a 64 bites címzési séma hatékonyabb használatához vezet, ami gyorsabb adatmozgást, kevesebb adatreplikációt és könnyebb programozást eredményez.

A NUMA rendszerek meglehetősen vonzóak a szerveroldali alkalmazások, például az adatbányászat és a döntéstámogató rendszerek számára. Ezenfelül a játékokkal és a nagy teljesítményű szoftverekkel kapcsolatos alkalmazások írása sokkal könnyebbé válik ezzel az architektúrával.

Következtetés

Összegzésként elmondhatom, hogy a NUMA architektúra foglalkozik a skálázhatósággal, amely az egyik fő előnye. A NUMA CPU-ban egy csomópont nagyobb sávszélességgel vagy alacsonyabb késleltetéssel rendelkezik az ugyanazon csomópont memóriájának eléréséhez (e.g., a helyi CPU memória hozzáférést kér a távoli hozzáféréssel egyidejűleg; prioritás a helyi CPU). Ez drámaian javítja a memória átbocsátását, ha az adatokat meghatározott folyamatokhoz (és így processzorokhoz) lokalizálják. Hátránya az adatok egyik processzorról a másikra való áthelyezésének magasabb költsége. Amíg ez az eset nem fordul elő túl gyakran, addig egy NUMA rendszer felülmúlja a hagyományosabb architektúrájú rendszereket.

Linkek és hivatkozások

  1. Hasonlítsa össze az NVIDIA Tesla vs. Radeon ösztön, https: // www.itcentralstation.com / termékek / összehasonlítások / nvidia-tesla_vs_radeon-ösztön
  2. Hasonlítsa össze az NVIDIA DGX-1 vs. Radeon ösztön, https: // www.itcentralstation.com / termékek / összehasonlítások / nvidia-dgx-1_vs_radeon-ösztön
  3. Gyorsítótár-koherencia, Wikipédia, https: // en.wikipédia.org / wiki / Cache_coherence
  4. Busz szimatolás, Wikipédia, https: // en.wikipédia.org / wiki / Bus_snooping
  5. Gyorsítótár-koherencia protokollok többprocesszoros rendszerekben, Geeks for geeks, https: // www.geeksforgeeks.org / cache-koherencia-protokollok-többprocesszoros rendszerben /
  6. Számítástechnika és technológia - A nemzetközi konferencia (CST2016) anyagai, Ning Cai (Szerk.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel P. Bovet és Marco Cesati: A NUMA architektúra megértése a Linux kernel megértésében, 3. kiadás, O'Reilly, https: // www.oreilly.com / library / view / linux megértése / 0596005652 /
  8. Frank Dennemann: NUMA mély merülés 1. rész: UMA-tól NUMA-ig, https: // frankdenneman.nl / 2016/07/07 / numa-deep-dive-part-1-uma-numa /
  9. Colin Ian King: NumaTop: NUMA rendszerfigyelő eszköz, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool.html
  10. Numatop, https: // github.com / intel / numatop
  11. Csomag numatop a Debian GNU / Linux számára, https: // csomagok.debian.org / buster / numatop
  12. Jonathan Kehayias: A nem egységes memória-hozzáférés / architektúrák (NUMA) megértése, https: // www.sqlskills.com / blogs / jonathan / nem-egységes-memória-accessarchitectures-numa /
  13. Linux kernel hírek a 3. kernelhez.8, https: // kernelnewbies.org / Linux_3.8
  14. Nem egyenletes memória-hozzáférés (NUMA), Wikipédia, https: // hu.wikipédia.org / wiki / Nem egységes_emlék_elérés
  15. Linux memóriakezelési dokumentáció, NUMA, https: // www.kernel.org / doc / html / latest / vm / numa.html
  16. Csomag numactl Debian GNU / Linuxhoz, https: // csomagok.debian.org / sid / admin / numactl
  17. Csomagszám Debian GNU / Linux számára, https: // csomagok.debian.org / buster / numad
  18. Hogyan lehet megállapítani, hogy a NUMA konfiguráció be van-e kapcsolva vagy nincs?, https: // www.napló.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Processzor affinitás, Wikipédia, https: // en.wikipédia.org / wiki / Processor_affinity

Köszönöm

A szerzők köszönetet mondanak Gerold Rupprechtnek a cikk elkészítése során nyújtott támogatásáért.

A szerzőkről

Plaxedes Nehanda sokoldalú, önvezérelt és sokoldalú személy, aki sok kalapot visel, köztük eseménytervezőt, virtuális asszisztenst, átírót, valamint lelkes kutatót, székhelye Johannesburg, Dél-Afrika.

K. herceg. Nehanda a Zimbabwe-i Harare-i Paeflow Metering műszerész és ellenőrző (metrológiai) mérnöke.

Frank Hofmann úton dolgozik - lehetőleg Berlinből (Németország), Genfből (Svájc) és Fokvárosból (Dél-Afrika) - fejlesztőként, oktatóként és olyan folyóiratok szerzőjeként, mint a Linux-User és a Linux Magazine. Társszerzője a Debian csomagkezelő könyvnek is (http: // www.dpmb.org).

A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...
Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...
A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...