Begriff
RDMA (Remote Direct Memory Access)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Kopieren ist langsam. Normales Netzwerk (TCP/IP): Server A liest RAM -> CPU kopiert in Buffer -> Netzwerkkarte sendet. Server B empfängt -> CPU kopiert in Buffer -> CPU schreibt in RAM. Cpus auf beiden Seiten sind beschäftigt. RDMA erlaubt Server A, direkt in den RAM von Server B zu schreiben. Ohne dass die CPU von Server B überhaupt aufwacht! Das macht die Netzwerkkarte (HCA) komplett alleine. Die Latenz ist mikroskopisch (1-2 Mikrosekunden). Der Durchsatz riesig. Standard im Supercomputing (HPC) und modernen AI-Clustern (GPU zu GPU).
Merksatz: Eine Technologie, die den direkten Speicherzugriff von einem Computer in den Speicher eines anderen Computers über das Netzwerk ermöglicht, ohne das Betriebssystem oder die CPU der beteiligten Rechner zu belasten.
- Microsoft SMB Direct: Windows File Server nutzt RDMA, um Dateien so schnell zu kopieren wie lokaler RAM.
- AI Training (NVIDIA NCCL): Wenn du GPT-4 trainierst, müssen 1000 GPUs Daten austauschen. RDMA (über InfiniBand oder RoCE) ist der einzige Weg, das Flaschenhals-frei zu tun.
1. Zero Copy & Kernel Bypass
Wie DPDK, aber in Hardware gegossen.
Die Anwendung registriert einen Speicherbereich ("Memory Region").
Die NIC bekommt die physische Adresse.
Ab dann: RDMA_WRITE(Address, Data). Die NIC macht DMA über PCIe und schickt es übers Kabel.
2. Protokolle
- InfiniBand: Spezielle Hardware/Kabel. Das Beste vom Besten.
- RoCE (RDMA over Converged Ethernet): RDMA über normales Ethernet. Braucht "Lossless Ethernet" (Flow Control), weil RDMA Pakete nicht verlieren darf.
- iWARP: RDMA über TCP.
1. One-Sided vs. Two-Sided Verbs
RDMA bietet zwei Arbeitsmodi:
- Two-Sided (SEND/RECV): Beide CPUs sind beteiligt (wie klassisches Messaging). Der Empfänger muss einen Puffer bereitstellen, bevor das Paket kommt.
- One-Sided (READ/WRITE/ATOMIC): Die Krönung. CPU A sagt: "Schreibe Wert X an Adresse Y von Server B." Server B merkt davon absolut gar nichts. Für Hochleistungs-Datenbanken (wie Microsoft FASTER oder RAMCloud) nutzt man One-Sided Operations, um Datenstrukturen über das Netz so schnell zu lesen, als lägen sie im lokalen L3-Cache.
2. Memory Registration & Pinning
Man kann nicht einfach jeden RAM-Bereich Remote beschreibbar machen. Man muss Speicher registrieren. Dabei wird der Speicher im Kernel "gepinnt" (darf nicht ausgelagert/geswappt werden). Die NIC baut eine Translation-Table auf (virtuelle Adresse -> physische Adresse). In der Produktion ist das "Registration-Overhead" ein Problem: Wenn du ständig neue Buffer anlegst und registrierst, verlierst du den Performance-Vorteil von RDMA. Experten nutzen daher riesige, langlebige Memory Pools, die einmal beim Start registriert werden.
3. RC vs. UD (Zuverlässigkeit)
- Reliable Connected (RC): Die Hardware garantiert, dass Pakete ankommen (wie TCP). Kostet aber Performance bei Millionen von Verbindungen, da die NIC für jeden Partner einen Status (Sequence Numbers) speichern muss.
- Unreliable Datagram (UD): Wie UDP. Schneller, skaliert besser (Hunderttausende Partner), aber die Anwendung muss sich selbst um verlorene Pakete kümmern. Große Firmen wie Google oder Amazon nutzen oft eigene Varianten (wie Swift oder EFA), die die Vorteile beider Welten kombinieren, um in ihren Rechenzentren das absolute Limit der Physik zu erreichen.
Quick-Check
Sicherheit?
Gefährlich. Wenn ich wahllos in deinen RAM schreiben darf, hacke ich dich. RDMA nutzt "Protection Domains" und "Keys", damit man nur in erlaubte Puffer schreibt.Latenz?
Unschlagbar. TCP Ping: 20-50 µs. RDMA Ping: 1 µs.NVMe-oF?
NVMe over Fabrics. Festplattenzugriff über Netzwerk. Mit RDMA fühlt sich die Remote-SSD an wie eine lokale SSD.