NUMA

Förstå NUMA-arkitektur

Förstå NUMA-arkitektur
Att designa datorer är alltid en kompromiss. De fyra grundläggande komponenterna i en dator - den centrala processorenheten (CPU) eller processorn, minnet, lagringen och kortet för anslutning av komponenterna (I / O-bussystem) - kombineras så smart som möjligt för att skapa en maskin som är både kostnadseffektivt och kraftfullt. Designprocessen involverar mestadels en optimering mot processorer (co-processorer, multi-core setup), minnestyp och mängd, lagring (diskar, filsystem), samt pris.Tanken bakom samprocessorer och flerkärnig arkitektur är att distribuera operationer till så många enskilda beräkningsenheter i minsta möjliga utrymme och att göra parallell utförande av datorinstruktioner mer tillgänglig och prisvärd. När det gäller minne är det en fråga om hur mycket eller storlek som kan hanteras av den enskilda beräkningsenheten och vilken minnestyp som fungerar med lägsta möjliga latens. Lagring tillhör det externa minnet och dess prestanda beror på skivtyp, filsystem som används, trådning, överföringsprotokoll, kommunikationsväv och antalet anslutna minnesenheter.

Utformningen av I / O-bussar representerar datorns artärer och avgör betydligt hur mycket och hur snabbt data kan utbytas mellan de enskilda komponenterna som listas ovan. Toppkategorin leds av komponenter som används inom området High Performance Computing (HPC). Från och med mitten av 2020 är Nvidia Tesla och DGX, Radeon Instinct och Intel Xeon Phi GPU-baserade acceleratorprodukter bland samtida representanter för HPC (se [1,2] för produktjämförelser).

Förstå NUMA

Icke-enhetlig minnesåtkomst (NUMA) beskriver en delad minnesarkitektur som används i samtida flerbearbetningssystem. NUMA är ett datorsystem som består av flera enskilda noder på ett sådant sätt att det samlade minnet delas mellan alla noder: "varje CPU tilldelas sitt eget lokala minne och kan komma åt minne från andra processorer i systemet" [12,7].

NUMA är ett smart system som används för att ansluta flera centrala processorenheter (CPU) till vilken mängd datorminne som helst som finns på datorn. De enskilda NUMA-noderna är anslutna via ett skalbart nätverk (I / O-buss) så att en CPU systematiskt kan komma åt minne som är associerat med andra NUMA-noder.

Lokalt minne är det minne som CPU: n använder i en viss NUMA-nod. Utländskt eller fjärrminne är minnet som en CPU tar från en annan NUMA-nod. Termen NUMA-förhållande beskriver förhållandet mellan kostnaden för åtkomst till främmande minne och kostnaden för åtkomst till lokalt minne. Ju större förhållande, desto högre kostnad och därmed ju längre tid det tar att komma åt minnet.

Det tar dock längre tid än när den processorn har åtkomst till sitt eget lokala minne. Lokalt minnesåtkomst är en stor fördel, eftersom det kombinerar låg latens med hög bandbredd. Däremot har åtkomst till minne som tillhör någon annan CPU högre latens och lägre bandbredd.

Ser tillbaka: Evolution of Shared-Memory Multiprocessors

Frank Dennemann [8] säger att moderna systemarkitekturer inte tillåter verkligt enhetlig minnesåtkomst (UMA), även om dessa system är speciellt utformade för det ändamålet. Enkelt sagt var tanken med parallell beräkning att ha en grupp processorer som samarbetar för att beräkna en given uppgift och därigenom påskynda en annars klassisk beräkning i följd.

Som förklarats av Frank Dennemann [8], i början av 1970-talet, "blev behovet av system som kunde tjäna flera samtidiga användaroperationer och överdriven datagenerering vanligt" med introduktionen av relationsdatabassystem. ”Trots den imponerande hastigheten på uniprocessorprestanda var multiprocessorsystem bättre rustade för att hantera denna arbetsbelastning. För att tillhandahålla ett kostnadseffektivt system blev delat minnesadressutrymme fokus för forskningen. Tidigt förespråkades system som använder en tvärstångsbrytare, men med denna designkomplexitet skalad tillsammans med ökningen av processorer, vilket gjorde det bussbaserade systemet mer attraktivt. Processorer i ett bussystem [kan] komma åt hela minnesutrymmet genom att skicka förfrågningar på bussen, ett mycket kostnadseffektivt sätt att använda det tillgängliga minnet så optimalt som möjligt.”

Bussbaserade datorsystem har dock en flaskhals - den begränsade mängden bandbredd som leder till skalbarhetsproblem. Ju fler processorer som läggs till i systemet, desto mindre bandbredd per tillgänglig nod. Dessutom, ju fler processorer som läggs till, desto längre blir bussen och desto högre latens som ett resultat.

De flesta processorer konstruerades i ett tvådimensionellt plan. Processorer måste också ha integrerade minneskontrollanter tillagda. Den enkla lösningen att ha fyra minnesbussar (uppe, nedre, vänster, höger) till varje CPU-kärna möjliggjorde full tillgänglig bandbredd, men det går bara så långt. Processorer stagnerade med fyra kärnor under en längre tid. Lägga till spår ovanför och under tillät direktbussar till de diagonalt motsatta processorerna när marker blev 3D. Att placera en fyrkärnig CPU på ett kort, som sedan anslöt till en buss, var nästa logiska steg.

Idag innehåller varje processor många kärnor med en delad on-chip-cache och ett off-chip-minne och har variabla minneskostnader för åtkomst över olika delar av minnet på en server.

Att förbättra effektiviteten för datatillgång är ett av huvudmålen för modern CPU-design. Varje CPU-kärna var utrustad med en liten nivå en cache (32 KB) och en större (256 KB) nivå 2 cache. De olika kärnorna skulle senare dela en nivå 3-cache på flera MB, vars storlek har vuxit avsevärt över tiden.

För att undvika cachemissar - begär data som inte finns i cacheminnet - mycket forskningstid spenderas på att hitta rätt antal CPU-cacheminnen, cachingstrukturer och motsvarande algoritmer. Se [8] för en mer detaljerad förklaring av protokollet för caching snoop [4] och cache-koherens [3,5], samt designidéerna bakom NUMA.

Programvarusupport för NUMA

Det finns två mjukvaruoptimeringsåtgärder som kan förbättra prestanda för ett system som stöder NUMA-arkitektur - processoraffinitet och dataplacering. Som förklaras i [19] “möjliggör processoraffinitet […] bindning och avbindning av en process eller en tråd till en enda CPU, eller ett antal CPU: er så att processen eller tråden endast körs på den angivna CPU: n eller CPU: erna snarare än någon processor.”Termen” dataplacering ”avser programvaruändringar där kod och data hålls så nära minnet som möjligt.

De olika UNIX- och UNIX-relaterade operativsystemen stöder NUMA på följande sätt (listan nedan är hämtad från [14]):

I boken "Computer Science and Technology, Proceedings of the International Conference (CST2016)" föreslår Ning Cai att studien av NUMA-arkitektur främst var inriktad på avancerad datormiljö och föreslog NUMA-medveten Radix Partitioning (NaRP), vilket optimerar prestanda för delade cachar i NUMA-noder för att påskynda business intelligence-applikationer. Som sådan representerar NUMA en mellanväg mellan delade minnessystem (SMP) med några processorer [6].

NUMA och Linux

Som nämnts ovan har Linux-kärnan stött NUMA sedan version 2.5. Både Debian GNU / Linux och Ubuntu erbjuder NUMA-stöd för processoptimering med de två mjukvarupaketen numactl [16] och numad [17]. Med hjälp av numactl-kommandot kan du lista inventeringen av tillgängliga NUMA-noder i ditt system [18]:

# numactl - hårdvara
tillgängligt: ​​2 noder (0-1)
nod 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
nod 0 storlek: 8157 MB
nod 0 ledig: 88 MB
nod 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
nod 1 storlek: 8191 MB
nod 1 ledig: 5176 MB
nodavstånd:
nod 0 1
0: 10 20
1: 20 10

NumaTop är ett användbart verktyg som utvecklats av Intel för att övervaka runtime-minnesplats och analysera processer i NUMA-system [10,11]. Verktyget kan identifiera potentiella NUMA-relaterade prestandaflaskhalsar och därmed hjälpa till att balansera minne / CPU-allokeringar för att maximera potentialen i ett NUMA-system. Se [9] för en mer detaljerad beskrivning.

Användningsscenarier

Datorer som stöder NUMA-teknik tillåter alla processorer att komma åt hela minnet direkt - processorerna ser detta som ett enda, linjärt adressutrymme. Detta leder till en mer effektiv användning av 64-bitars adresseringsschemat, vilket resulterar i snabbare datarörelse, mindre replikering av data och enklare programmering.

NUMA-system är ganska attraktiva för serverapplikationer, till exempel data mining och beslutsstödsystem. Dessutom blir skrivning av applikationer för spel och högpresterande programvara mycket enklare med denna arkitektur.

Slutsats

Sammanfattningsvis adresserar NUMA-arkitektur skalbarhet, vilket är en av dess främsta fördelar. I en NUMA-processor kommer en nod att ha högre bandbredd eller lägre latens för att komma åt minnet på samma nod (e.g., den lokala CPU begär minnesåtkomst samtidigt som fjärråtkomst; prioriteten är på den lokala processorn). Detta kommer att förbättra minnesgenomströmningen dramatiskt om data är lokaliserade till specifika processer (och därmed processorer). Nackdelarna är de högre kostnaderna för att flytta data från en processor till en annan. Så länge detta fall inte händer för ofta kommer ett NUMA-system att överträffa system med en mer traditionell arkitektur.

Länkar och referenser

  1. Jämför NVIDIA Tesla vs. Radeon Instinct, https: // www.itcentralstation.com / produkter / jämförelser / nvidia-tesla_vs_radeon-instinct
  2. Jämför NVIDIA DGX-1 vs. Radeon Instinct, https: // www.itcentralstation.com / produkter / jämförelser / nvidia-dgx-1_vs_radeon-instinct
  3. Cache-koherens, Wikipedia, https: // sv.wikipedia.org / wiki / Cache_coherence
  4. Buss snooping, Wikipedia, https: // sv.wikipedia.org / wiki / Bus_snooping
  5. Cache-koherensprotokoll i multiprocessorsystem, Geeks for geeks, https: // www.geeksforgeeks.org / cache-coherence-protocols-in-multiprocessor-system /
  6. Datavetenskap och teknik - Proceedings of the International Conference (CST2016), Ning Cai (Ed.), World Scientific Publishing Co Pte Ltd, ISBN: 9789813146419
  7. Daniel P. Bovet och Marco Cesati: Understanding NUMA architecture in Understanding the Linux Kernel, 3rd edition, O'Reilly, https: // www.oreilly.com / bibliotek / visa / förstå-linux / 0596005652 /
  8. Frank Dennemann: NUMA Deep Dive Del 1: Från UMA till NUMA, https: // frankdenneman.nl / 2016/07/07 / numa-deep-dive-part-1-uma-numa /
  9. Colin Ian King: NumaTop: Ett NUMA-systemövervakningsverktyg, http: // smackerelofopinion.blogspot.com / 2015/09 / numatop-numa-system-övervakningsverktyg.html
  10. Numatop, https: // github.com / intel / numatop
  11. Paket numatop för Debian GNU / Linux, https: // paket.debian.org / buster / numatop
  12. Jonathan Kehayias: Förstå icke-enhetlig minnesåtkomst / arkitektur (NUMA), https: // www.sqlskills.com / bloggar / jonathan / förståelse-icke-enhetligt-minne-åtkomstarkitekturer-numa /
  13. Linux Kernel News för Kernel 3.8, https: // kernelnewbies.org / Linux_3.8
  14. Icke-enhetlig minnesåtkomst (NUMA), Wikipedia, https: // sv.wikipedia.org / wiki / Non-uniform_memory_access
  15. Dokumentation om Linux-minneshantering, NUMA, https: // www.kärna.org / doc / html / senaste / vm / numa.html
  16. Paket numactl för Debian GNU / Linux, https: // paket.debian.org / sid / admin / numactl
  17. Paketnummer för Debian GNU / Linux, https: // paket.debian.org / buster / numad
  18. Hur man hittar om NUMA-konfiguration är aktiverad eller inaktiverad?, https: // www.thegeekdiary.com / centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled /
  19. Processoraffinitet, Wikipedia, https: // sv.wikipedia.org / wiki / Processor_affinity

Tack

Författarna vill tacka Gerold Rupprecht för hans stöd när de förbereder denna artikel.

Om Författarna

Plaxedes Nehanda är en mångsidig, självdriven mångsidig person som bär många hattar, bland dem en evenemangsplanerare, en virtuell assistent, en transkriberare samt en ivrig forskare, baserad i Johannesburg, Sydafrika.

Prins K. Nehanda är en Instrumentation and Control (Metrology) ingenjör vid Paeflow Metering i Harare, Zimbabwe.

Frank Hofmann arbetar på vägen - helst från Berlin (Tyskland), Genève (Schweiz) och Kapstaden (Sydafrika) - som utvecklare, tränare och författare för tidningar som Linux-User och Linux Magazine. Han är också medförfattare till Debians pakethanteringsbok (http: // www.dpmb.org).

Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...
OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...
OpenTTD-handledning
OpenTTD är ett av de mest populära affärssimuleringsspelen där ute. I det här spelet måste du skapa en underbar transportaffär. Du kommer dock att bör...