EMZETT.
Login

NUMA (ungleichmäßiger Speicherzugriff)

Kurz: Bei NUMA („Non-Uniform Memory Access”) hat jeder Prozessor seinen eigenen nahen Speicher, und Zugriffe auf den Speicher eines anderen Prozessors dauern länger.

Genauer: Server mit mehreren Prozessor-Sockeln oder vielen Chiplets teilen den Arbeitsspeicher in Bereiche („Knoten”). Der Zugriff auf den eigenen Knoten ist schnell, der auf einen fremden langsamer und mit weniger Durchsatz.

Im Detail

  • Unterschied zu UMA: Dort sind alle Speicherzugriffe gleich schnell, typisch für Desktop-PCs mit einem Prozessor.
  • Folge für Software: Ein Thread, der auf Knoten 0 läuft, aber Daten auf Knoten 1 liest, wird gebremst.
  • Betriebssystem: Linux legt Speicher standardmäßig nahe am anfragenden Kern an („First Touch”) und versucht, Prozesse auf ihrem Knoten zu halten.
  • Werkzeuge: numactl --hardware zeigt die Knoten, numactl --cpunodebind=0 --membind=0 programm bindet gezielt.
  • Datenbanken und KI: Falsch verteilte Last auf Mehr-Sockel-Servern kann Durchsatz kosten. Pinning und Speicherrichtlinien helfen.
  • Auch bei Desktop-CPUs: Manche Ryzen-Threadripper-Modelle verhalten sich ähnlich.

Siehe auch: Speicherhierarchie und Cache-Lines