Feb 04, 2022; Defence
Echtzeit-AGProgrammierbare asynchrone Ein-/Ausgabe auf Basis von io_uring und eBPF in Linux
Schon vor Meltdown und Spectre verursachte der durch Systemaufrufe verursachte Wechsel zwischen Benutzer- und Kernelmodus nicht zu vernachlässigende Laufzeit-Overheads. Jetzt, da solche Hardware-Schwachstellen teure Gegenmaßnahmen erfordern, fallen die Overheads noch stärker ins Gewicht - in Extremfällen werden Systemaufrufe um den Faktor fünf verlangsamt. Mit einer Multi-Call-Schnittstelle können mehrere aufeinanderfolgende Systemaufrufe mit einem einzigen Moduswechsel gemeinsam an den Kernel übermittelt werden: Dadurch ist es möglich, die Anzahl der erforderlichen Moduswechsel und damit den Gesamt-Overhead erheblich zu reduzieren.
In diesem Vortrag analysieren wir, wie gut io_uring - die neu eingeführte asynchrone Multi-Call-Schnittstelle in Linux - für dieses Problem geeignet ist. Wir identifizieren Unzulänglichkeiten hinsichtlich der Komplexität von Systemaufrufmustern, die abgedeckt werden können, und stellen eine Erweiterung vor, die auf der virtuellen Maschine eBPF von Linux basiert. Evaluationsergebnisse aus der Anwendung des Ansatzes auf einen hochleistungsfähigen Key-Value-Store zeigen vielversprechende Geschwindigkeitssteigerungen, demonstrieren aber auch die Grenzen der aktuellen io_uring/eBPF-Implementierung.
(Masterverteidigung TU Dortmund)