Wat is NUMA?

Afkorting van Non-Uniform Memory Access. Opzet waarin sommige geheugens dicht bij een core liggen en andere ver weg, en toegang tot ver geheugen meer tijd kost. Het is sneller als gegevens en threads aan dezelfde kant staan.

Japanse benaming: NUMA

“NUMA” komt voor in 4 oefenvragen uit 3 onderwerpen, bijv. Multicore en synchronisatie, Prestatiemeting en profiling, DRAM.

Vakgebied: Multicore en synchronisatie

Nu oefenen: vragen over NUMA

Welke uitleg over een NUMA-systeem (Non-Uniform Memory Access) is juist?

  1. AAlle cores hebben dezelfde toegangstijd tot al het geheugen
  2. BEr is geheugen dichtbij en ver van een core, en toegang tot ver geheugen kost meer tijd
  3. CElke core kan alleen zijn eigen geheugen lezen en het geheugen van andere cores niet gebruiken
Antwoord en toelichting tonen

Antwoord: B. Er is geheugen dichtbij en ver van een core, en toegang tot ver geheugen kost meer tijd

In bijvoorbeeld servers met meerdere CPU-sockets is er per socket rechtstreeks verbonden geheugen, en het geheugen van andere sockets wordt via de verbinding tussen sockets benaderd. Daardoor is ver geheugen trager dan nabij geheugen en is ook de bandbreedte kleiner. Alle geheugen is als één adresruimte zichtbaar, dus programma's werken ongewijzigd, maar als gegevens en threads aan dezelfde kant worden geplaatst, nemen de prestaties toe.

Waarop moet worden gelet bij het first-touch-beleid dat vaak wordt gebruikt in Linux-NUMA-systemen (een pagina wordt geplaatst in het geheugen van het knooppunt waarop de thread draait die er het eerst naar schrijft)?

  1. ABij first touch worden pagina's op willekeurige knooppunten geplaatst
  2. BOp het moment dat malloc wordt aangeroepen, ligt de plaats van alle pagina's vast
  3. CAls een grote array door slechts één thread op 0 wordt geïnitialiseerd, komt alles op één knooppunt en gebruiken threads op andere knooppunten ver geheugen
Antwoord en toelichting tonen

Antwoord: C. Als een grote array door slechts één thread op 0 wordt geïnitialiseerd, komt alles op één knooppunt en gebruiken threads op andere knooppunten ver geheugen

Met malloc alleen worden nog geen fysieke pagina's toegewezen; bij de paginafout bij de eerste schrijfactie worden ze in het geheugen van het knooppunt van die thread geplaatst. Als de initialisatie door één thread gebeurt, komt de hele array op dat knooppunt, en bij de parallelle berekening is een groot deel van het door elke thread bewerkte gedeelte ver geheugen. Als de initialisatie parallel met dezelfde taakverdeling als de berekening gebeurt, komt elk deel in de buurt van de bijbehorende thread.

“NUMA” in de toelichting

Vragen met “NUMA” (4)

  1. Welke uitleg over een NUMA-systeem (Non-Uniform Memory Access) is juist?
  2. Waarop moet worden gelet bij het first-touch-beleid dat vaak wordt gebruikt in Linux-NUMA-systemen (een pagina wordt geplaatst in het geheugen van het knooppunt waarop de thread draait die er het eerst naar schrijft)?
  3. Waarom worden bij het meten van prestaties op multicore- en NUMA-systemen threads soms aan een bepaalde core vastgezet (affiniteit instellen)?
  4. Waar bevindt zich bij de meeste huidige pc-processors de geheugencontroller die het DRAM aanstuurt?

Verwante termen

Via ABA-probleem Acquire-release Atomaire instructie Barrièresynchronisatie Compare-and-swap Conditievariabele Data race Deadlock Directorygebaseerde coherentie (directory-based)

Naar de woordenlijst