Forstå Numa -arkitektur

Forstå Numa -arkitektur
Å designe datamaskiner er alltid et kompromiss. De fire grunnleggende komponentene i en datamaskin - den sentrale prosesseringsenheten (CPU) eller prosessoren, minnet, lagringen og brettet for å koble til komponentene (I/O -bussystemet) - er kombinert så smart som mulig for å lage en maskin som er både kostnadseffektiv og kraftig. Designprosessen involverer stort sett en optimalisering mot prosessorer (co-prosessorer, multi-core oppsett), minnetype og mengde, lagring (disker, filsystem), samt pris.Ideen bak co-prosessorer og multi-core arkitektur er å distribuere operasjoner til så mange enkelt databehandlingsenheter i den minste plassen og å gjøre parallell utførelse av databehandlingsinstruksjoner mer tilgjengelige og rimelige. Når det gjelder minne, er det et spørsmål om mengden eller størrelsen som kan adresseres av den individuelle databehandlingsenheten, og hvilken minnetype som fungerer med den laveste latensen som mulig. Lagring tilhører det eksterne minnet, og ytelsen avhenger av disktypen, filsystemet som er i bruk, tråd, overføringsprotokoll, kommunikasjonsstoff og antall vedlagte minneenheter.

Utformingen av I/O -busser representerer datamaskinarteriene og bestemmer betydelig hvor mye og hvor raskt data kan utveksles mellom enkeltkomponentene som er oppført ovenfor. Den øverste kategorien ledes av komponenter som brukes i feltet High Performance Computing (HPC). Fra midten av 2020 er blant de samtidige representantene for HPC Nvidia Tesla og DGX, Radeon Instinct og Intel Xeon Phi GPU-baserte akseleratorprodukter (se [1,2] for sammenligning av produkt).

Forståelse av numa

Ikke-ensartet minnetilgang (NUMA) beskriver en delt minnearkitektur som brukes i moderne multiprosesseringssystemer. NUMA er et datasystem sammensatt av flere enkeltknuter på en slik måte at det samlede minnet deles mellom alle noder: "Hver CPU er tildelt sitt eget lokale minne og kan få tilgang til minne fra andre CPUer i systemet" [12,7].

NUMA er et smart system som brukes til å koble flere sentrale prosesseringsenheter (CPU) til en hvilken som helst mengde dataminne tilgjengelig på datamaskinen. De enkle NUMA -nodene er koblet over et skalerbart nettverk (I/O -buss) slik at en CPU systematisk kan få tilgang til minne tilknyttet andre NUMA -noder.

Lokalt minne er minnet som CPU bruker i en bestemt NUMA -node. Utenlandsk eller eksternt minne er minnet som en CPU tar fra en annen NUMA -node. Begrepet NUMA -forhold beskriver forholdet mellom kostnadene for å få tilgang til utenlandsk minne og kostnadene for å få tilgang til lokalt minne. Jo større forhold, desto større er kostnadene, og dermed tar det lengre tid for å få tilgang til minnet.

Imidlertid tar det lengre tid enn når den CPU får tilgang til sitt eget lokale minne. Lokal minnetilgang er en stor fordel, ettersom den kombinerer lav latens med høy båndbredde. I kontrast har tilgang til minnet som tilhører enhver annen CPU høyere latens og lavere båndbreddeytelse.

Ser tilbake: Evolution of Shared Memory Multiprocessors

Frank Dennemann [8] uttaler at moderne systemarkitekturer ikke tillater virkelig enhetlig minnetilgang (UMA), selv om disse systemene er spesielt designet for det formålet. Enkelt å snakke var ideen om parallell databehandling å ha en gruppe prosessorer som samarbeider for å beregne en gitt oppgave, og dermed få fart på en ellers klassisk sekvensiell beregning.

Som forklart av Frank Dennemann [8], på begynnelsen av 1970 -tallet, ble "behovet for systemer som kan betjene flere samtidige brukeroperasjoner og overdreven dataperenerere mainstream" med introduksjonen av relasjonsdatabasesystemer. Til tross for den imponerende frekvensen av uniprocessorytelse, var multiprosess -systemer bedre rustet til å håndtere denne arbeidsmengden. For å gi et kostnadseffektivt system ble delt minneadresseområdet for forskning. Tidlig ble systemer med en tverrbarbryter forfektet, men med denne designkompleksiteten skalert sammen med økningen av prosessorer, noe som gjorde det bussbaserte systemet mer attraktivt. Prosessorer i et busssystem [kan] få tilgang til hele minneplassen ved å sende forespørsler på bussen, en veldig kostnadseffektiv måte å bruke det tilgjengelige minnet så optimalt som mulig.”

Bussbaserte datasystemer kommer imidlertid med en flaskehals - den begrensede mengden båndbredde som fører til skalerbarhetsproblemer. Jo mer CPUer som blir lagt til systemet, jo mindre båndbredde per node tilgjengelig. Videre, jo mer CPUer som er lagt til, jo lengre buss og jo høyere latens som et resultat.

De fleste CPU-er ble konstruert i et todimensjonalt plan. CPUer måtte også ha integrerte minnekontrollere lagt til. Den enkle løsningen av å ha fire minnebusser (topp, nederst, venstre, høyre) til hver CPU -kjerne tillatt full tilgjengelig båndbredde, men det går bare så langt. CPUer stagnert med fire kjerner i betydelig tid. Å legge til spor over og under tillot direkte busser over til de diagonalt motsatte CPU -ene da brikker ble 3D. Å plassere en firekarert CPU på et kort, som deretter koblet til en buss, var det neste logiske trinnet.

I dag inneholder hver prosessor mange kjerner med en delt hurtigbuffer og et minnet utenfor brikken og har variabel minnetilgangskostnader på tvers av forskjellige deler av minnet i en server.

Forbedring av effektiviteten av datatilgang er et av hovedmålene for moderne CPU -design. Hver CPU -kjerne var utstyrt med en liten nivå en hurtigbuffer (32 kb) og en større (256 kb) nivå 2 cache. De forskjellige kjernene vil senere dele en nivå 3 -cache på flere MB, hvis størrelse har vokst betydelig over tid.

For å unngå hurtigbuffer - å be om data som ikke er i hurtigbufferen - brukes mye forskningstid på å finne riktig antall CPU -hurtigbuffer, hurtigbufringsstrukturer og tilsvarende algoritmer. Se [8] for en mer detaljert forklaring av protokollen for hurtigbuffer snoop [4] og cache sammenheng [3,5], samt designideene bak NUMA.

Programvarestøtte for NUMA

Det er to programvareoptimaliseringstiltak som kan forbedre ytelsen til en system som støtter NUMA -arkitektur - Prosessoraffinitet og dataplassering. Som forklart i [19], muliggjør “prosessoraffinitet […] binding og avbinding av en prosess eller en tråd til en enkelt CPU, eller et område av CPUer slik at prosessen eller tråden bare blir utført bare på den angitte CPU eller CPU -ene snarere enn noen CPU.”Begrepet“ dataplassering ”refererer til programvareendringer der kode og data holdes så nær som mulig i minnet.

De forskjellige UNIX og UNIX-relaterte operativsystemene støtter NUMA på følgende måter (listen nedenfor er hentet fra [14]):

  • Silicon Graphics Irix Support for Ccnuma Architecture over 1240 CPU med Origin Server Series.
  • Microsoft Windows 7 og Windows Server 2008 R2 la til støtte for NUMA -arkitektur over 64 logiske kjerner.
  • Versjon 2.5 av Linux -kjernen inneholdt allerede grunnleggende NUMA -støtte, som ble forbedret ytterligere i påfølgende kjerneutgivelser. Versjon 3.8 av Linux -kjernen brakte et nytt NUMA -stiftelse som muliggjorde utvikling av mer effektive NUMA -retningslinjer i senere kjerneutgivelser [13]. Versjon 3.13 av Linux -kjernen brakte en rekke politikker som tar sikte på å sette en prosess nær minnet, sammen med håndtering av saker, for eksempel å ha minnesider delt mellom prosesser, eller bruk av gjennomsiktige enorme sider; Nye systemkontrollinnstillinger gjør at NUMA -balansering kan aktiveres eller deaktiveres, samt konfigurasjonen av forskjellige NUMA -minnebalanseringsparametere [15].
  • Både Oracle og OpenSolaris Model NUMA -arkitektur med introduksjonen av logiske grupper.
  • FreeBSD la innledende NUMA -affinitet og policy -konfigurasjon i versjon 11.0.

I boken "Datavitenskap og teknologi antyder Proceedings of the International Conference (CST2016)" Ning Cai at studien av NUMA-arkitektur hovedsakelig var fokusert på high-end databehandlingsmiljø og foreslått NUMA-klar Radix-partisjonering (NARP), som optimaliserer Resultatene til delte hurtigbuffer i NUMA -noder for å akselerere forretningsinformasjonsapplikasjoner. Som sådan representerer NUMA et midtbane mellom SMP -systemer (SMP) med noen få prosessorer [6].

Numa og Linux

Som nevnt ovenfor, har Linux -kjernen støttet NUMA siden versjon 2.5. Både Debian GNU/Linux og Ubuntu tilbyr NUMA -støtte for prosessoptimalisering med de to programvarepakkene Numactl [16] og Numad [17]. Ved hjelp av NUMACTL -kommandoen kan du liste varelageret til tilgjengelige NUMA -noder i systemet ditt [18]:

# numactl --hardware
Tilgjengelig: 2 noder (0-1)
Node 0 CPUer: 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 CPUer: 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
Knuteavstander:
Node 0 1
0: 10 20
1: 20 10

Numatop er et nyttig verktøy utviklet av Intel for overvåking av runtime minnelokalitet og analysere prosesser i NUMA -systemer [10,11]. Verktøyet kan identifisere potensielle NUMA-relaterte ytelsesflaskehalser og dermed bidra til å balansere minne/CPU-tildelinger for å maksimere potensialet til et NUMA-system. Se [9] for en mer detaljert beskrivelse.

Bruksscenarier

Datamaskiner som støtter NUMA -teknologi lar alle CPU -er tilgang til hele minnet direkte - CPU -ene ser på dette som et enkelt, lineært adresseområde. Dette fører til mer effektiv bruk av 64-bits adresseringsordningen, noe som resulterer i raskere bevegelse av data, mindre replikering av data og enklere programmering.

NUMA-systemer er ganske attraktive for applikasjoner på serversiden, for eksempel data mining og beslutningsstøttesystemer. Videre blir det mye enklere å skrive applikasjoner for spill- og høyytelsesprogramvare.

Konklusjon

Avslutningsvis adresserer NUMA -arkitektur skalerbarhet, som er en av de viktigste fordelene. I en NUMA CPU vil en node ha en høyere båndbredde eller lavere latens for å få tilgang til minnet på den samme noden (e.g., Den lokale CPU ber om minnetilgang samtidig som fjerntilgang; Prioriteten er på den lokale CPU). Dette vil forbedre minnet gjennomstrømning dramatisk hvis dataene er lokalisert til spesifikke prosesser (og dermed prosessorer). Ulempene er de høyere kostnadene ved å flytte data fra en prosessor til en annen. Så lenge denne saken ikke skjer for ofte, vil et NUMA -system overgå systemer med en mer tradisjonell arkitektur.

Lenker og referanser

  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 sammenheng, Wikipedia, https: // no.Wikipedia.org/wiki/cache_coherence
  4. Buss Snooping, Wikipedia, https: // no.Wikipedia.org/wiki/bus_snooping
  5. Cache -koherensprotokoller i multiprosessorsystemer, nørder for nørder, https: // www.Geeksforgeeks.org/cache-coherence-protocols-in-multiprocessor-system/
  6. Datavitenskap 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: Understand.Oreilly.com/bibliotek/visning/forståelse-Linux/0596005652/
  8. Frank Dennemann: Numa Deep Dive Part 1: Fra Uma til Numa, https: // Frankdenneman.NL/2016/07/07/numa-dyp-dykke-del-1-uma-numa/
  9. Colin Ian King: Numatop: Et NUMA -systemovervåkningsverktøy, http: // smackerelofopinion.Blogspot.com/2015/09/numatop-numa-system-overvåking-verktøy.html
  10. Numatop, https: // github.com/intel/numatop
  11. Pakke numatop for Debian Gnu/Linux, https: // pakker.Debian.org/buster/numatop
  12. Jonathan Kehayias: Forstå ikke-ensartet minnetilgang/arkitekturer (NUMA), https: // www.Sqlskills.com/blogger/jonathan/forståelse-non-uniform-memory-accessarchitectures-numa/
  13. Linux Kernel News for Kernel 3.8, https: // Kernelnewbies.org/linux_3.8
  14. Ikke-ensartet minnetilgang (NUMA), Wikipedia, https: // no.Wikipedia.org/wiki/ikke-uniform_memory_access
  15. Linux Memory Management Documentation, NUMA, https: // www.kjerne.org/doc/html/v4.18/VM/numa.html
  16. Pakke numactl for Debian Gnu/Linux, https: // pakker.Debian.org/sid/admin/numactl
  17. Pakke Numad for Debian Gnu/Linux, https: // pakker.Debian.org/buster/numad
  18. Hvordan finne om NUMA -konfigurasjon er aktivert eller deaktivert?, https: // www.Thegeekdiary.com/centos-rhel-hvordan-til-FIND-IF-NUMA-CONFIGURATION-IS-ANABLED-ER-DISABLED/
  19. Prosessoraffinitet, Wikipedia, https: // no.Wikipedia.org/wiki/prosessor_affinitet

Takk skal du ha

Forfatterne vil takke Gerold Rupprecht for hans støtte mens han utarbeidet denne artikkelen.

Om forfatterne

Plaxedes Nehanda er en multiskilled, selvdrevet allsidig person som har på seg mange hatter, blant dem en hendelsesplanlegger, en virtuell assistent, en transkribent, så vel som en ivrig forsker, basert i Johannesburg, Sør-Afrika.

Prince K. Nehanda er en instrumentering og kontroll (metrologi) ingeniør ved Paeflow Metering i Harare, Zimbabwe.

Frank Hofmann jobber på veien - helst fra Berlin (Tyskland), Genève (Sveits) og Cape Town (Sør -Afrika) - som utvikler, trener og forfatter for magasiner som Linux -User og Linux Magazine. Han er også medforfatter av Debian Package Management Book (http: // www.DPMB.org).