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):
- Silicon Graphics IRIX támogatás a ccNUMA architektúrához 1240 CPU felett, Origin szerversorozattal.
- A Microsoft Windows 7 és a Windows Server 2008 R2 64 logikai magon felüli NUMA architektúra támogatását adta hozzá.
- 2. verzió.A Linux kernelből 5 már tartalmazta az alap NUMA támogatást, amelyet tovább javítottak a későbbi kernel kiadások. 3. verzió.A Linux kernelből 8 új NUMA alapot hozott, amely lehetővé tette a hatékonyabb NUMA házirendek kifejlesztését a későbbi kernel kiadásokban [13]. 3. verzió.A Linux kernelének 13-a számos házirendet hozott, amelyek célja egy folyamat memóriához közelítése, valamint az esetek kezelése, például a memóriaoldalak megosztása a folyamatok között, vagy átlátszó, hatalmas oldalak használata; az új rendszerszabályozási beállítások lehetővé teszik a NUMA kiegyensúlyozás engedélyezését vagy letiltását, valamint a különböző NUMA memóriaegyensúlyozási paraméterek konfigurálását [15].
- Az Oracle és az OpenSolaris egyaránt logikai csoportok bevezetésével modellezi a NUMA architektúrát.
- A FreeBSD hozzáadta a kezdeti NUMA affinitást és házirend-konfigurációt a 11-es verzióhoz.0.
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 - hardverelé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
- 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
- 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
- Gyorsítótár-koherencia, Wikipédia, https: // en.wikipédia.org / wiki / Cache_coherence
- Busz szimatolás, Wikipédia, https: // en.wikipédia.org / wiki / Bus_snooping
- Gyorsítótár-koherencia protokollok többprocesszoros rendszerekben, Geeks for geeks, https: // www.geeksforgeeks.org / cache-koherencia-protokollok-többprocesszoros rendszerben /
- Számítástechnika és technológia - A nemzetközi konferencia (CST2016) anyagai, Ning Cai (Szerk.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
- 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 /
- 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 /
- Colin Ian King: NumaTop: NUMA rendszerfigyelő eszköz, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-monitoring-tool.html
- Numatop, https: // github.com / intel / numatop
- Csomag numatop a Debian GNU / Linux számára, https: // csomagok.debian.org / buster / numatop
- 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 /
- Linux kernel hírek a 3. kernelhez.8, https: // kernelnewbies.org / Linux_3.8
- 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
- Linux memóriakezelési dokumentáció, NUMA, https: // www.kernel.org / doc / html / latest / vm / numa.html
- Csomag numactl Debian GNU / Linuxhoz, https: // csomagok.debian.org / sid / admin / numactl
- Csomagszám Debian GNU / Linux számára, https: // csomagok.debian.org / buster / numad
- 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 /
- 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).