Grafikkarten sind längst nicht mehr nur für Spiele, KI oder wissenschaftliche Berechnungen zuständig. Mit einer neuen Linux-Patch-Serie soll nun auch anspruchsvolle Netzwerkverarbeitung direkt auf GPUs ausgelagert werden können. Das Projekt hört auf den Namen KNOD und verfolgt dabei einen besonders interessanten Ansatz: Die gesamte Verarbeitung soll innerhalb des Kernels stattfinden, ohne ROCm oder eine andere […]
📖 Lesezeit: ca. 3 Minuten · 457 Wörter · 3.623 Zeichen
Grafikkarten sind längst nicht mehr nur für Spiele, KI oder wissenschaftliche Berechnungen zuständig. Mit einer neuen Linux-Patch-Serie soll nun auch anspruchsvolle Netzwerkverarbeitung direkt auf GPUs ausgelagert werden können. Das Projekt hört auf den Namen KNOD und verfolgt dabei einen besonders interessanten Ansatz: Die gesamte Verarbeitung soll innerhalb des Kernels stattfinden, ohne ROCm oder eine andere GPU-Laufzeit im Userspace zu benötigen.
Symbolbild
GPU statt CPU für Paketverarbeitung
KNOD steht für „in-kernel network offload device“. Die Idee dahinter ist vergleichsweise einfach: Netzwerkpakete sollen nicht erst vollständig durch die CPU verarbeitet werden, wenn eine GPU bestimmte parallelisierbare Aufgaben wesentlich effizienter übernehmen kann. Der Netzwerkadapter kann empfangene Pakete dabei per DMA direkt in den GPU-Speicher übertragen. Anschließend führt die GPU die entsprechenden Programme auf vielen Paketen parallel aus. Der Linux-Kernel übernimmt nach dem aktuellen Konzept selbst die Verwaltung der GPU-Queues, kompiliert die Programme per JIT in passenden GPU-Maschinencode und stößt anschließend deren Verarbeitung an. Damit unterscheidet sich KNOD deutlich von klassischen GPU-Compute-Anwendungen. Eine Userspace-Laufzeit wie AMD ROCm oder CUDA soll nicht permanent Teil des Datenpfades sein. Besonders interessant ist die mögliche Integration bestehender Linux-Netzwerktechniken. KNOD soll unter anderem XDP-Programme auf eine GPU auslagern können. XDP wird im Linux-Netzwerkstack für besonders schnelle Paketverarbeitung eingesetzt und kann beispielsweise für Load Balancing, Filter oder andere Netzwerkfunktionen verwendet werden.
Auch IPsec Security Associations sollen sich nach dem vorgestellten Konzept auf eine GPU verlagern lassen. Der Vorteil liegt in der massiven Parallelität moderner Grafikprozessoren. Während CPU-Kerne bei komplexer Paketverarbeitung schnell zum Engpass werden können, besitzen GPUs Tausende parallel arbeitende Recheneinheiten. Entwickelt und getestet wurde der bisherige Code unter anderem auf AMD-Hardware mit GCN- sowie RDNA2-GPUs. AMD bietet dafür einen entscheidenden Vorteil: Der entsprechende Linux-Grafiktreiber ist vollständig als Open-Source-Komponente im Mainline-Kernel verfügbar. Trotz des interessanten Ansatzes sollte man KNOD derzeit nicht mit einer fertigen Linux-Funktion verwechseln. Die Patches wurden zunächst als „Request for Comments“, kurz RFC, auf der Linux-Kernel-Mailingliste veröffentlicht. Damit beginnt im Grunde erst die öffentliche technische Diskussion über Architektur, Sicherheit, Wartbarkeit und eine mögliche spätere Integration. Eine feste Linux-Version für die Aufnahme von KNOD gibt es entsprechend noch nicht.
FazitKNOD gehört zu diesen Projekten, bei denen man zunächst zweimal hinschaut und sich dann fragt, warum die Idee nicht schon viel früher konsequent verfolgt wurde. Netzwerkpakete bestehen schließlich aus riesigen Mengen sehr ähnlicher Arbeit und genau dafür wurden GPUs praktisch geboren. Ob daraus tatsächlich ein Bestandteil des Mainline-Kernels wird, muss sich erst zeigen. Der Ansatz ist aber technisch ausgesprochen spannend: GPU-beschleunigte Netzwerkverarbeitung ohne ROCm, ohne zusätzliche Laufzeit und direkt aus dem Linux-Kernel heraus. Langweilig wird es im Netzwerkstack offenbar so schnell nicht.