NUMA

Razumijevanje NUMA arhitekture

Razumijevanje NUMA arhitekture
Dizajn računala uvijek je kompromis. Četiri osnovne komponente računala - središnja procesorska jedinica (CPU) ili procesor, memorija, spremište i ploča za povezivanje komponenata (sustav I / O sabirnice) - kombiniraju se što pametnije kako bi se stvorio stroj koji je istovremeno isplativ i moćan. Proces dizajniranja uglavnom uključuje optimizaciju prema procesorima (koprocesori, postavljanje više jezgri), vrsti i količini memorije, pohrani (diskovi, datotečni sustav), kao i cijeni.Ideja koja stoji iza koprocesora i višejezgrene arhitekture je distribucija operacija na što više pojedinačnih računalnih jedinica na najmanjem mogućem prostoru i paralelno izvršavanje računalnih uputa učiniti dostupnijim i pristupačnijim. Što se tiče memorije, pitanje je količine ili veličine koja se može riješiti pojedinom računarskom jedinicom i koja vrsta memorije radi s najmanjim mogućim kašnjenjem. Pohrana pripada vanjskoj memoriji, a njezine performanse ovise o vrsti diska, datotečnom sustavu koji se koristi, uvođenju niti, protokolu prijenosa, komunikacijskoj strukturi i broju priključenih memorijskih uređaja.

Dizajn I / O sabirnica predstavlja računalne arterije i značajno određuje koliko i koliko brzo se podaci mogu razmijeniti između gore navedenih pojedinih komponenata. Vrhunsku kategoriju vode komponente koje se koriste u području računalstva visokih performansi (HPC). Sredinom 2020. među suvremenim predstavnicima HPC-a su Nvidia Tesla i DGX, Radeon Instinct i proizvodi za ubrzavanje temeljeni na Intel Xeon Phi GPU-u (vidi [1,2] za usporedbu proizvoda).

Razumijevanje NUMA-e

Neuniformirani pristup memoriji (NUMA) opisuje arhitekturu zajedničke memorije koja se koristi u suvremenim višeprocesorskim sustavima. NUMA je računalni sustav koji se sastoji od nekoliko pojedinačnih čvorova na takav način da se agregatna memorija dijeli između svih čvorova: „svakom CPU dodijeljena je vlastita lokalna memorija i može pristupiti memoriji s drugih CPU-a u sustavu“ [12,7].

NUMA je pametan sustav koji se koristi za povezivanje više centralnih procesorskih jedinica (CPU) na bilo koju količinu računalne memorije dostupne na računalu. Pojedinačni NUMA čvorovi povezani su preko skalabilne mreže (I / O sabirnica) tako da CPU može sustavno pristupiti memoriji povezanoj s drugim NUMA čvorovima.

Lokalna memorija je memorija koju CPU koristi u određenom NUMA čvoru. Strana ili udaljena memorija je memorija koju CPU uzima s drugog NUMA čvora. Pojam NUMA omjer opisuje omjer cijene pristupa stranoj memoriji i cijene pristupa lokalnoj memoriji. Što je veći omjer, to su troškovi veći, a time i dulji pristup memoriji.

Međutim, treba više vremena nego kad taj CPU pristupa vlastitoj lokalnoj memoriji. Pristup lokalnoj memoriji glavna je prednost jer kombinira malu latenciju i veliku propusnost. Suprotno tome, pristup memoriji koja pripada bilo kojem drugom CPU-u ima veću kašnjenje i niže performanse propusnosti.

Pogled unatrag: evolucija višeprocesora s dijeljenom memorijom

Frank Dennemann [8] navodi da moderne arhitekture sustava ne dopuštaju uistinu jednoobrazni pristup memoriji (UMA), iako su ti sustavi posebno dizajnirani za tu svrhu. Jednostavno govoreći, ideja paralelnog računanja bila je imati grupu procesora koji surađuju kako bi izračunali zadani zadatak, ubrzavajući tako klasično sekvencijalno računanje.

Kao što je objasnio Frank Dennemann [8], početkom 1970-ih, „potreba za sustavima koji mogu servisirati više istovremenih korisničkih operacija i prekomjerno generiranje podataka postala je glavna“ uvođenjem relacijskih sustava baza podataka. “Unatoč impresivnoj stopi jednoprocesorskih performansi, višeprocesorski sustavi bili su bolje opremljeni za podnošenje ovog radnog opterećenja. Kako bi se osigurao isplativ sustav, zajednički adresni prostor memorije postao je fokus istraživanja. U početku su se zagovarali sustavi koji koriste prekidač s prečkom, no s ovom složenošću dizajna skaliranom zajedno s povećanjem procesora, što je sustav na temelju sabirnice učinio privlačnijim. Procesori u sustavu sabirnice [mogu] pristupiti cijelom memorijskom prostoru slanjem zahtjeva na sabirnici, što je vrlo isplativ način za što optimalniju upotrebu dostupne memorije."

Međutim, računalni sustavi temeljeni na autobusima imaju usko grlo - ograničenu količinu propusnosti koja dovodi do problema s skalabilnošću. Što se više procesora doda u sustav, to je manja propusnost po čvoru dostupna. Nadalje, što se doda više procesora, duža je sabirnica i kao rezultat je veća latencija.

Većina CPU-a izrađena je u dvodimenzionalnoj ravnini. CPU su također morali imati integrirane memorijske kontrolere. Jednostavno rješenje imati četiri memorijske sabirnice (gornju, donju, lijevu, desnu) za svaku jezgru procesora omogućilo je punu raspoloživu širinu pojasa, ali to ide samo do sada. CPU su prilično dugo stagnirali s četiri jezgre. Dodavanje tragova iznad i ispod omogućilo je izravne sabirnice na dijagonalno suprotstavljene procesore jer su čipovi postali 3D. Sljedeći je logičan korak bio postavljanje četverojezgrenog procesora na karticu, koja se zatim povezala na sabirnicu.

Danas svaki procesor sadrži mnogo jezgri s dijeljenom predmemorijom na čipu i memorijom izvan čipa te ima varijabilne troškove pristupa memoriji u različitim dijelovima memorije na poslužitelju.

Poboljšanje učinkovitosti pristupa podacima jedan je od glavnih ciljeva suvremenog CPU dizajna. Svaka CPU jezgra obdarena je malom predmemorijom razine jedan (32 KB) i većom (256 KB) predmemorijom razine 2. Razne jezgre kasnije će dijeliti predmemoriju razine 3 od nekoliko MB, čija je veličina s vremenom znatno narasla.

Da bi se izbjegle propuste predmemorije - zahtijevajući podatke koji nisu u predmemoriji - puno se vremena troši na pronalaženje pravog broja CPU predmemorija, struktura predmemoriranja i odgovarajućih algoritama. Pogledajte [8] za detaljnije objašnjenje protokola za predmemoriranje snoop [4] i koherencije predmemorije [3,5], kao i ideje za dizajn iza NUMA.

Softverska podrška za NUMA

Dvije su mjere optimizacije softvera koje mogu poboljšati izvedbu sustava koji podržava NUMA arhitekturu - afinitet procesora i smještaj podataka. Kao što je objašnjeno u [19], „afinitet procesora [...] omogućuje povezivanje i odvajanje procesa ili niti s jednim CPU-om ili nizom CPU-a, tako da će se postupak ili nit izvršiti samo na određenom CPU-u ili CPU-ima. nego bilo koji CPU."Izraz" smještaj podataka "odnosi se na izmjene softvera u kojima se kôd i podaci čuvaju što bliže u memoriji.

Različiti operativni sustavi UNIX i UNIX povezani podržavaju NUMA na sljedeće načine (popis u nastavku preuzet je iz [14]):

U knjizi "Računalne znanosti i tehnologija, zbornik radova s ​​međunarodne konferencije (CST2016)" Ning Cai sugerira da je proučavanje NUMA arhitekture uglavnom bilo usredotočeno na visokokvalitetno računarsko okruženje i predložio NUMA-svjesno Radix particioniranje (NaRP), koje optimizira izvedba zajedničkih predmemorija u NUMA čvorovima za ubrzanje aplikacija poslovne inteligencije. Kao takav, NUMA predstavlja sredinu između sustava dijeljene memorije (SMP) s nekoliko procesora [6].

NUMA i Linux

Kao što je gore rečeno, Linux kernel podržava NUMA od verzije 2.5. I Debian GNU / Linux i Ubuntu nude NUMA podršku za optimizaciju procesa s dva softverska paketa numactl [16] i numad [17]. Uz pomoć naredbe numactl možete navesti popis dostupnih NUMA čvorova u vašem sustavu [18]:

# numactl - hardver
dostupno: 2 čvora (0-1)
čvor 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
veličina čvora 0: 8157 MB
čvor 0 besplatno: 88 MB
čvor 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
veličina čvora 1: 8191 MB
čvor 1 besplatno: 5176 MB
udaljenosti čvora:
čvor 0 1
0: 10 20
1:20 20

NumaTop je koristan alat koji je razvio Intel za praćenje lokaliteta runtime memorije i analizu procesa u NUMA sustavima [10,11]. Alat može identificirati potencijalna uska grla u izvedbi koja se odnose na NUMA i na taj način pomoći u uravnoteženju raspodjele memorije / CPU-a kako bi se maksimizirao potencijal NUMA sustava. Pogledajte [9] za detaljniji opis.

Scenariji upotrebe

Računala koja podržavaju NUMA tehnologiju omogućuju svim CPU-ima izravni pristup cijeloj memoriji - CPU to vide kao jedan, linearni adresni prostor. To dovodi do učinkovitijeg korištenja 64-bitne sheme adresiranja, što rezultira bržim kretanjem podataka, manjom replikacijom podataka i lakšim programiranjem.

NUMA sustavi su prilično atraktivni za aplikacije na strani poslužitelja, poput rudarstva podataka i sustava za podršku odlučivanju. Nadalje, pisanje aplikacija za igre i softver visokih performansi postaje puno lakše s ovom arhitekturom.

Zaključak

Zaključno, NUMA arhitektura bavi se skalabilnošću, što je jedna od glavnih prednosti. U NUMA CPU, jedan čvor imat će veću širinu pojasa ili manju latenciju za pristup memoriji na tom istom čvoru (npr.g., lokalni CPU traži pristup memoriji istovremeno s udaljenim pristupom; prioritet je na lokalnom CPU-u). To će dramatično poboljšati protok memorije ako su podaci lokalizirani za određene procese (a time i procesore). Mane su veći troškovi premještanja podataka s jednog procesora na drugi. Sve dok se ovaj slučaj ne događa prečesto, NUMA sustav nadmašit će sustave s tradicionalnijom arhitekturom.

Poveznice i reference

  1. Usporedite NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / products / poređenja / nvidia-tesla_vs_radeon-instinct
  2. Usporedite NVIDIA DGX-1 i. Radeon Instinct, https: // www.itcentralstation.com / products / poređenja / nvidia-dgx-1_vs_radeon-instinct
  3. Koherencija predmemorije, Wikipedia, https: // en.wikipedija.org / wiki / Cache_coherence
  4. Njuškanje autobusa, Wikipedia, https: // en.wikipedija.org / wiki / Bus_snooping
  5. Protokoli usklađenosti predmemorije u višeprocesorskim sustavima, Geeks za geeks, https: // www.geeksforgeeks.org / cache-coherence-protocols-in-multiprocessor-system /
  6. Računalne znanosti i tehnologija - Zbornik radova s ​​međunarodne konferencije (CST2016), Ning Cai (ur.).), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel P. Bovet i Marco Cesati: Razumijevanje NUMA arhitekture u Razumijevanje Linux kernela, 3. izdanje, O'Reilly, https: // www.oreilly.com / library / view / razumijevanje-linuxa / 0596005652 /
  8. Frank Dennemann: NUMA Deep Dive 1. dio: Od UMA do NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-duboko-zaronite-dio-1-uma-numa /
  9. Colin Ian King: NumaTop: Alat za praćenje NUMA sustava, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-nadzorni-alat.html
  10. Numatop, https: // github.com / intel / numatop
  11. Numatop paketa za Debian GNU / Linux, https: // paketi.debian.org / buster / numatop
  12. Jonathan Kehayias: Razumijevanje nejednakog pristupa / arhitekture memorije (NUMA), https: // www.sqlskills.com / blogs / jonathan / razumijevanje-neuniformirana-memorija-pristuparhitekture-numa /
  13. Vijesti o jezgri Linuxa za kernel 3.8, https: // kernelnewbies.org / Linux_3.8
  14. Nejednoliki pristup memoriji (NUMA), Wikipedia, https: // en.wikipedija.org / wiki / Uniform_memory_access
  15. Linux dokumentacija za upravljanje memorijom, NUMA, https: // www.zrno.org / doc / html / najnovije / vm / numa.html
  16. Numactl paket za Debian GNU / Linux, https: // paketi.debian.org / sid / admin / numactl
  17. Numad paket za Debian GNU / Linux, https: // paketi.debian.org / buster / numad
  18. Kako pronaći je li NUMA konfiguracija omogućena ili onemogućena?, https: // www.theeekdiary.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Afinitet procesora, Wikipedia, https: // en.wikipedija.org / wiki / Processor_affinity

Hvala vam

Autori bi željeli zahvaliti Geroldu Rupprechtu na podršci tijekom pripreme ovog članka.

O autorima

Plaxedes Nehanda je multikvalificirana, samovozna svestrana osoba koja nosi mnoge kape, među njima i planera događaja, virtualnog asistenta, prepisivača, kao i strastveni istraživač sa sjedištem u Johannesburgu, Južna Afrika.

Princ K. Nehanda je inženjer za mjerenje i upravljanje (mjeriteljstvo) u Paeflow Meteringu u Harareu, Zimbabve.

Frank Hofmann radi na putu - po mogućnosti iz Berlina (Njemačka), Ženeve (Švicarska) i Cape Towna (Južna Afrika) - kao programer, trener i autor za časopise poput Linux-User i Linux Magazine. Također je koautor knjige za upravljanje paketima Debian (http: // www.dpmb.org).

Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...
Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...