NUMA

Forståelse af NUMA-arkitektur

Forståelse af NUMA-arkitektur
Design af computere er altid et kompromis. De fire grundlæggende komponenter på en computer - den centrale behandlingsenhed (CPU) eller processor, hukommelsen, lagringen og kortet til tilslutning af komponenterne (I / O-bussystem) - kombineres så klogt som muligt for at skabe en maskine, der er både omkostningseffektiv og kraftfuld. Designprocessen involverer for det meste en optimering mod processorer (co-processorer, multi-core opsætning), hukommelsestype og -mængde, lagring (diske, filsystem) samt pris.Ideen bag co-processorer og multi-core-arkitektur er at distribuere operationer til så mange enkelte computerenheder i det mindste rum som muligt og at gøre parallel udførelse af computerinstruktioner mere tilgængelig og overkommelig. Med hensyn til hukommelse er det et spørgsmål om mængden eller størrelsen, der kan adresseres af den enkelte computerenhed, og hvilken hukommelsestype, der fungerer med den lavest mulige latenstid. Opbevaring tilhører den eksterne hukommelse, og dens ydeevne afhænger af disktypen, det filsystem, der er i brug, trådning, overførselsprotokol, kommunikationsmateriale og antallet af tilsluttede hukommelsesenheder.

Designet af I / O-busser repræsenterer computerarterierne og bestemmer betydeligt, hvor meget og hvor hurtigt data kan udveksles mellem de enkelte komponenter, der er anført ovenfor. Topkategorien ledes af komponenter, der bruges inden for High Performance Computing (HPC). Fra midten af ​​2020 er Nvidia Tesla og DGX, Radeon Instinct og Intel Xeon Phi GPU-baserede acceleratorprodukter blandt nutidens repræsentanter for HPC (se [1,2] for produktsammenligning).

Forståelse af NUMA

Ikke-ensartet hukommelsesadgang (NUMA) beskriver en delt hukommelsesarkitektur, der bruges i moderne multiprocessing-systemer. NUMA er et computersystem, der består af flere enkeltnoder på en sådan måde, at den samlede hukommelse deles mellem alle noder: "hver CPU tildeles sin egen lokale hukommelse og kan få adgang til hukommelse fra andre CPU'er i systemet" [12,7].

NUMA er et smart system, der bruges til at forbinde flere centrale processorenheder (CPU) til en hvilken som helst mængde computerhukommelse, der er tilgængelig på computeren. De enkelte NUMA-noder er forbundet via et skalerbart netværk (I / O-bus), således at en CPU systematisk kan få adgang til hukommelse, der er tilknyttet andre NUMA-noder.

Lokal hukommelse er den hukommelse, som CPU'en bruger i en bestemt NUMA-node. Fremmed eller fjernhukommelse er den hukommelse, som en CPU tager fra en anden NUMA-node. Udtrykket NUMA-forhold beskriver forholdet mellem omkostningerne ved at få adgang til fremmed hukommelse og omkostningerne ved at få adgang til lokal hukommelse. Jo større forhold, jo større omkostninger, og jo længere tid tager det at få adgang til hukommelsen.

Det tager dog længere tid, end når CPU'en har adgang til sin egen lokale hukommelse. Lokal hukommelsesadgang er en stor fordel, da den kombinerer lav ventetid med høj båndbredde. I modsætning hertil har adgang til hukommelse, der hører til enhver anden CPU, højere latenstid og lavere båndbreddepræstation.

Ser tilbage: Udviklingen af ​​delte hukommelsesmultiprocessorer

Frank Dennemann [8] siger, at moderne systemarkitekturer ikke tillader virkelig ensartet hukommelsesadgang (UMA), selvom disse systemer er specielt designet til dette formål. Simpelthen var ideen med parallel computing at have en gruppe processorer, der samarbejder om at beregne en given opgave og derved fremskynde en ellers klassisk sekventiel beregning.

Som forklaret af Frank Dennemann [8], i begyndelsen af ​​1970'erne, "blev behovet for systemer, der kunne betjene flere samtidige brugeroperationer og overdreven generering af data mainstream" med introduktionen af ​​relationsdatabasesystemer. ”På trods af den imponerende hastighed af uniprocessor-ydeevne var multiprocessorsystemer bedre rustet til at håndtere denne arbejdsbyrde. For at tilvejebringe et omkostningseffektivt system blev delt plads til hukommelsesadresser fokus for forskning. Tidligt blev systemer, der bruger en tværstangsafbryder, anbefalet, men med denne designkompleksitet skaleret sammen med stigningen i processorer, hvilket gjorde det busbaserede system mere attraktivt. Processorer i et bussystem [kan] få adgang til hele hukommelsesområdet ved at sende anmodninger på bussen, en meget omkostningseffektiv måde at bruge den tilgængelige hukommelse så optimalt som muligt.”

Busbaserede computersystemer har dog en flaskehals - den begrænsede mængde båndbredde, der fører til skalerbarhedsproblemer. Jo flere CPU'er der føjes til systemet, jo mindre båndbredde pr. Tilgængelig knude. Desuden er jo flere CPU'er der tilføjes, jo længere er bussen og jo højere latens som et resultat.

De fleste CPU'er blev konstrueret i et todimensionalt plan. CPU'er måtte også tilføje integrerede hukommelsescontrollere. Den enkle løsning at have fire hukommelsesbusser (øverst, nederst, venstre, højre) til hver CPU-kerne tillod fuld tilgængelig båndbredde, men det går kun så langt. CPU'er stagnerede med fire kerner i lang tid. Tilføjelse af spor over og under tillod direkte busser til de diagonalt modsatte CPU'er, da chips blev 3D. At placere en firekerne CPU på et kort, som derefter blev forbundet til en bus, var det næste logiske trin.

I dag indeholder hver processor mange kerner med en delt on-chip-cache og en off-chip-hukommelse og har variable omkostninger til hukommelsesadgang på tværs af forskellige dele af hukommelsen på en server.

Forbedring af effektiviteten af ​​dataadgang er et af hovedmålene med moderne CPU-design. Hver CPU-kerne var udstyret med en lille niveau en cache (32 KB) og en større (256 KB) niveau 2 cache. De forskellige kerner ville senere dele en niveau 3-cache på flere MB, hvis størrelse er vokset betydeligt over tid.

For at undgå cache-savner - anmoder om data, der ikke er i cachen - bruges der meget forskningstid på at finde det rigtige antal CPU-cache, cachestrukturer og tilsvarende algoritmer. Se [8] for en mere detaljeret forklaring af protokollen til cache-snoop [4] og cache-sammenhæng [3,5] samt designideer bag NUMA.

Softwaresupport til NUMA

Der er to softwareoptimeringsforanstaltninger, der kan forbedre ydeevnen for et system, der understøtter NUMA-arkitektur - processoraffinitet og dataplacering. Som forklaret i [19] muliggør “processoraffinitet […] binding og afbinding af en proces eller en tråd til en enkelt CPU eller en række CPU'er, så processen eller tråden kun udføres på den angivne CPU eller CPU'er snarere end nogen CPU.”Udtrykket” dataplacering ”henviser til softwareændringer, hvor kode og data holdes så tæt som muligt i hukommelsen.

De forskellige UNIX- og UNIX-relaterede operativsystemer understøtter NUMA på følgende måder (listen nedenfor er taget fra [14]):

I bogen "Computer Science and Technology, Proceedings of the International Conference (CST2016)" antyder Ning Cai, at undersøgelsen af ​​NUMA-arkitektur hovedsagelig var fokuseret på det avancerede computermiljø og den foreslåede NUMA-opmærksomme Radix Partitioning (NaRP), som optimerer udførelsen af ​​delte cacher i NUMA-noder for at fremskynde business intelligence-applikationer. Som sådan repræsenterer NUMA en mellemvej mellem delte hukommelsessystemer (SMP) med nogle få processorer [6].

NUMA og Linux

Som nævnt ovenfor har Linux-kernen understøttet NUMA siden version 2.5. Både Debian GNU / Linux og Ubuntu tilbyder NUMA-understøttelse til procesoptimering med de to softwarepakker numactl [16] og numad [17]. Ved hjælp af numactl-kommandoen kan du liste oversigten over tilgængelige NUMA-noder i dit system [18]:

# numactl - hardware
tilgængelig: 2 noder (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 størrelse: 8157 MB
node 0 gratis: 88 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 størrelse: 8191 MB
node 1 gratis: 5176 MB
node afstande:
knude 0 1
0: 10 20
1: 20 10

NumaTop er et nyttigt værktøj udviklet af Intel til overvågning af runtime-hukommelses lokalitet og analyse af processer i NUMA-systemer [10,11]. Værktøjet kan identificere potentielle NUMA-relaterede ydeevneflaskehalse og dermed hjælpe med at genbalancere hukommelse / CPU-allokeringer for at maksimere potentialet i et NUMA-system. Se [9] for en mere detaljeret beskrivelse.

Anvendelsesscenarier

Computere, der understøtter NUMA-teknologi, giver alle CPU'er adgang til hele hukommelsen direkte - CPU'erne ser dette som et enkelt, lineært adresseområde. Dette fører til mere effektiv brug af 64-bit adresseringsskemaet, hvilket resulterer i hurtigere dataflytning, mindre replikering af data og lettere programmering.

NUMA-systemer er ret attraktive for server-applikationer, såsom data mining og beslutningsstøttesystemer. Desuden bliver skrivning af applikationer til spil og højtydende software meget lettere med denne arkitektur.

Konklusion

Afslutningsvis adresserer NUMA-arkitektur skalerbarhed, hvilket er en af ​​dets største fordele. I en NUMA CPU vil en node have en højere båndbredde eller lavere latenstid for at få adgang til hukommelsen på den samme node (e.g., den lokale CPU anmoder om hukommelsesadgang på samme tid som fjernadgangen; prioriteten er på den lokale CPU). Dette vil dramatisk forbedre hukommelseskapacitet, hvis dataene er lokaliseret til specifikke processer (og dermed processorer). Ulemperne er de højere omkostninger ved at flytte data fra en processor til en anden. Så længe denne sag ikke sker for ofte, vil et NUMA-system overgå systemer med en mere traditionel arkitektur.

Links og referencer

  1. Sammenlign NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / produkter / sammenligninger / nvidia-tesla_vs_radeon-instinct
  2. Sammenlign NVIDIA DGX-1 vs. Radeon Instinct, https: // www.itcentralstation.com / produkter / sammenligninger / nvidia-dgx-1_vs_radeon-instinct
  3. Cache-sammenhæng, Wikipedia, https: // da.wikipedia.org / wiki / Cache_coherence
  4. Bus snooping, Wikipedia, https: // da.wikipedia.org / wiki / Bus_snooping
  5. Cache-sammenhængsprotokoller i multiprocessorsystemer, Geeks for geeks, https: // www.geeksforgeeks.org / cache-sammenhæng-protokoller-i-multiprocessor-system /
  6. Computervidenskab og teknologi - Proceedings of the International Conference (CST2016), Ning Cai (Ed.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel P. Bovet og Marco Cesati: Understanding NUMA architecture in Understanding the Linux Kernel, 3. udgave, O'Reilly, https: // www.oreilly.com / bibliotek / visning / Linux-forståelse / 0596005652 /
  8. Frank Dennemann: NUMA Deep Dive del 1: Fra UMA til NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-dybdyk-del-1-uma-numa /
  9. Colin Ian King: NumaTop: Et NUMA-systemovervågningsværktøj, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-overvågningsværktøj.html
  10. Numatop, https: // github.com / intel / numatop
  11. Pakke numatop til Debian GNU / Linux, https: // pakker.debian.org / buster / numatop
  12. Jonathan Kehayias: Forståelse af ikke-ensartet adgang til hukommelse / arkitekturer (NUMA), https: // www.sqlfærdigheder.com / blogs / jonathan / forståelse-ikke-ensartet-hukommelse-adgangarkitekturer-numa /
  13. Linux Kernel News for Kernel 3.8, https: // kernelnewbies.org / Linux_3.8
  14. Ikke-ensartet hukommelsesadgang (NUMA), Wikipedia, https: // da.wikipedia.org / wiki / Ikke-ensartet_memory_access
  15. Linux Memory Management Documentation, NUMA, https: // www.kerne.org / doc / html / seneste / vm / numa.html
  16. Pakke numactl til Debian GNU / Linux, https: // pakker.debian.org / sid / admin / numactl
  17. Pakke numad til Debian GNU / Linux, https: // pakker.debian.org / buster / numad
  18. Sådan finder du ud af, om NUMA-konfiguration er aktiveret eller deaktiveret?, https: // www.thegeekdiary.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Processoraffinitet, Wikipedia, https: // da.wikipedia.org / wiki / Processor_affinity

Tak skal du have

Forfatterne vil gerne takke Gerold Rupprecht for hans støtte under forberedelsen af ​​denne artikel.

Om forfatterne

Plaxedes Nehanda er en multifærdig, selvdrevet alsidig person, der bærer mange hatte, blandt dem en begivenhedsplanlægger, en virtuel assistent, en transkribering samt en ivrig forsker med base i Johannesburg, Sydafrika.

Prins K. Nehanda er en Instrumentation and Control (Metrology) Engineer hos Paeflow Metering i Harare, Zimbabwe.

Frank Hofmann arbejder på vejen - helst fra Berlin (Tyskland), Geneve (Schweiz) og Cape Town (Sydafrika) - som udvikler, træner og forfatter til magasiner som Linux-User og Linux Magazine. Han er også medforfatter til Debian-pakkehåndteringsbogen (http: // www.dpmb.org).

Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...
Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...
Top 10 spil at spille på Ubuntu
Windows-platform har været en af ​​de dominerende platforme til spil på grund af den enorme procentdel af spil, der udvikler sig i dag til indbygget a...