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]):
- Podrška za Silicon Graphics IRIX za ccNUMA arhitekturu preko 1240 CPU-a s Origin server serijom.
- Microsoft Windows 7 i Windows Server 2008 R2 dodali su podršku za NUMA arhitekturu preko 64 logičke jezgre.
- Verzija 2.5 jezgre Linuxa već je sadržavao osnovnu podršku za NUMA, koja je dodatno poboljšana u sljedećim izdanjima jezgre. Verzija 3.8 Linux jezgre donijelo je novu NUMA osnovu koja je omogućila razvoj učinkovitijih NUMA politika u kasnijim izdanjima kernela [13]. Verzija 3.13 jezgre Linuxa donio je brojne politike kojima je cilj približavanje procesa njegovoj memoriji, zajedno s rješavanjem slučajeva, poput dijeljenja memorijskih stranica između procesa ili korištenja prozirnih ogromnih stranica; nove postavke upravljanja sustavom omogućuju omogućavanje ili onemogućavanje NUMA uravnoteženja, kao i konfiguraciju različitih parametara uravnoteženja NUMA memorije [15].
- I Oracle i OpenSolaris modeliraju NUMA arhitekturu uvođenjem logičkih grupa.
- FreeBSD je dodao početnu konfiguraciju afiniteta i politike prema NUMA-i u verziji 11.0.
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 - hardverdostupno: 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
- Usporedite NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / products / poređenja / nvidia-tesla_vs_radeon-instinct
- Usporedite NVIDIA DGX-1 i. Radeon Instinct, https: // www.itcentralstation.com / products / poređenja / nvidia-dgx-1_vs_radeon-instinct
- Koherencija predmemorije, Wikipedia, https: // en.wikipedija.org / wiki / Cache_coherence
- Njuškanje autobusa, Wikipedia, https: // en.wikipedija.org / wiki / Bus_snooping
- Protokoli usklađenosti predmemorije u višeprocesorskim sustavima, Geeks za geeks, https: // www.geeksforgeeks.org / cache-coherence-protocols-in-multiprocessor-system /
- Računalne znanosti i tehnologija - Zbornik radova s međunarodne konferencije (CST2016), Ning Cai (ur.).), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
- 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 /
- Frank Dennemann: NUMA Deep Dive 1. dio: Od UMA do NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-duboko-zaronite-dio-1-uma-numa /
- Colin Ian King: NumaTop: Alat za praćenje NUMA sustava, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-nadzorni-alat.html
- Numatop, https: // github.com / intel / numatop
- Numatop paketa za Debian GNU / Linux, https: // paketi.debian.org / buster / numatop
- Jonathan Kehayias: Razumijevanje nejednakog pristupa / arhitekture memorije (NUMA), https: // www.sqlskills.com / blogs / jonathan / razumijevanje-neuniformirana-memorija-pristuparhitekture-numa /
- Vijesti o jezgri Linuxa za kernel 3.8, https: // kernelnewbies.org / Linux_3.8
- Nejednoliki pristup memoriji (NUMA), Wikipedia, https: // en.wikipedija.org / wiki / Uniform_memory_access
- Linux dokumentacija za upravljanje memorijom, NUMA, https: // www.zrno.org / doc / html / najnovije / vm / numa.html
- Numactl paket za Debian GNU / Linux, https: // paketi.debian.org / sid / admin / numactl
- Numad paket za Debian GNU / Linux, https: // paketi.debian.org / buster / numad
- 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 /
- 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).