Linux : Kdbus beantragt Aufnahme in den Kernel

, 18 Kommentare
Linux: Kdbus beantragt Aufnahme in den Kernel
Bild: francois schnell (CC BY 2.0)

Seit rund einem Jahr betreiben Kernel-Entwickler Greg Kroah-Hartman (GKH) und die Systemd-Entwickler intensiv die Aufnahme des zur Interprozesskommunikation (IPC) genutzten Daemons D-Bus in den Mainline-Kernel. Jetzt hat GKH den Code zur Evaluierung für Kernel 3.19 eingereicht.

D-Bus steht für Desktop-Bus und ermöglicht Programmen unter grafischen Oberflächen die Kommunikation untereinander. So kann etwa ein Dateimanager über das Anstecken eines USB-Sticks informiert werden, indem die Gerätedateien-Verwaltung Udev mit dem Dateimanager kommuniziert. Fast alle Linux-Distributionen verwenden heutzutage den Desktop-Bus.

Die Implementierung von D-Bus in den Kernel soll nicht nur die Verarbeitungsgeschwindigkeit der Nachrichtenübertragung des bisher im Userspace angesiedelten Systemdienstes erhöhen sondern auch die Nutzung von Funktionen erlauben, die bisher außerhalb des Kernels nicht realisierbar waren. Kdbus benutzt zur Übertragung Peer-to-Peer-Unicast und -Multicast und kann dabei verschiedene Payloads übertragen. Dazu gehören laut GKH unter anderem Zeitstempel, CGroup-Pfade und Sicherheitsinformationen. Welche der Metadaten davon letztlich verwendet und angezeigt werden, entscheidet die empfangende Applikation. Dabei verhält sich der Kdbus-Treiber völlig agnostisch und berührt keinen weiteren Kernel-Code. Kdbus besteht derzeit aus rund 11.000 Zeilen Code, wovon etwa 25 Prozent Kommentare ausmachen.

Kdbus löst auch eines der limitierenden Probleme von D-Bus. Die Menge an übertragenen Daten und deren Dopplung durch Kopieren kann schnell die Datenübertragung im Userspace verzögern. Wie Systemd-Mastermind Lennart Poettering in einem Vortrag zu Kdbus erklärt, kann ein normaler Aufruf bis zu zehn Kopieraufrufe zwischen Sender und Empfänger auslösen, dazu kommen noch eine Reihe von Validierungsschritten. Kdbus verwendet an dieser Stelle Zero-Copy. Damit das funktioniert, wurde bereits der neue Systemaufruf memfd im Kernel verankert, sodass Kdbus nur noch den File Descriptor versendet, der auf einen bestimmten Speicherbereich zeigt.

Greg Kroah-Hartman ist einer der erfahrensten Kernel-Entwickler, seine Einreichung von Kdbus, das bereits in Systemd verankert ist, hat somit gute Chancen, bereits im Frühjahr in Kernel 3.19 enthalten zu sein.

YouTube-Video: D-Bus in the kernel [linux.conf.au 2014]