Kdbus: Interprozesskommunikation für den Kernel
Laut Entwickler Crequy(öffnet im neuen Fenster) kostet der Umweg über den D-Bus- Daemon(öffnet im neuen Fenster) mindestens einen Kontextwechsel und ein Speicherzugriff. Wenn eine Applikation eine Nachricht an eine zweite Applikation versendet, wird sie zunächst über ein Unix-Socket an den D-Bus-Daemon verschickt. Der Kernel kopiert dabei die Nachricht in die Warteschleife des Systemdiensts, der daraufhin aktiviert wird. Der wiederum schreibt den Namen des Versenders in den Header der Nachricht und schickt ihn an den Empfänger weiter.

Kdbus hingegen soll Nachrichten ohne Umweg über den D-Bus-Systemdienst ausliefern. Dazu haben die Entwickler ein neues Socket mit dem Namen "AF_DBUS" implementiert, über den IPCs laufen sollen. Der Kdbus-Kernel liest alle Nachrichten, die über AF_DBUS versendet werden und sucht in den Zeichenketten Hello(öffnet im neuen Fenster) , NameAquired(öffnet im neuen Fenster) , NameLost(öffnet im neuen Fenster) und AddMatch(öffnet im neuen Fenster) nach eindeutigen Namen (Unique Names)(öffnet im neuen Fenster) , bekannten Namen und übereinstimmenden Regeln (Match Rules)(öffnet im neuen Fenster) .
Je nach Zuordnung wird die Nachricht direkt an die angesprochene Applikation versendet. Dank der Funktion skb_clone()(öffnet im neuen Fenster) wird die Nachricht auch dann nur einmal in den Speicher geschrieben, wenn es mehrere Empfänger gibt. Der Kdbus-Prototyp verwendet weiterhin den D-Bus-Daemon für die Authentifizierung.
Positive Benchmark-Resultate
Laut Crequy erzielt Kdbus mit dem Benchmark Dbus-Ping-Pong(öffnet im neuen Fenster) in einer KVM-basierten virtuellen Maschine, bei 10.000 Aufrufen an D-Bus mit 2,085 Sekunden gegenüber 3,887 Sekunden, fast doppelt so schnelle Antwortzeiten. Auf einem Nokia N900 erzielte er mit Kdbus die dreifache Geschwindigkeit. Mit einem weiteren Test prüfte Crequy, wie lange die Herstellung einer Verbindung zu einem Jabber-Server auf einem N900 von Nokia braucht. Hier war Kdbus etwa 1,12 mal schneller.
Es gebe noch zahlreiche Einschränkungen und vor allem auch Sicherheitsbedenken, gibt Crequy zu. Es handele sich jedoch um ein Proof-Of-Concept und könne weiter optimiert werden. Er hat die Idee von Entwickler Ian Molton(öffnet im neuen Fenster) übernommen.
D-Bus(öffnet im neuen Fenster) ist als Nachrichtensystem für Desktop-Anwendungen konzipiert worden und sollte die IPC für Gnome und KDE standardisieren. Über den Session-Bus sorgt D-Bus für die Kommunikation zwischen Anwendungen und über den System-Bus mit dem Kernel. Das Framework steht unter der Ägide der Freedesktop-Initiative(öffnet im neuen Fenster) .
Hauptursache für einen langsamen Rundgang der Nachrichten über D-Bus sind zahlreiche Gültigkeitsprüfungen(öffnet im neuen Fenster) . Der Geschwindigkeitszuwachs wäre zumindest auf einem Standard-Desktop-Rechner zu vernachlässigen. Dort ist das System mehr mit Hardware-Eingaben und grafischen Ausgaben belastet. Ein D-Bus-Aufruf spielt eine eher untergeordnete Rolle. Nach Crequys Ping-Pong-Benchmark erfolgt der Nachrichtenaustausch auch ohne Kdbus nach nicht mehr als 0,4 Millisekunden - auch in einer virtuellen Maschine. Der Einsatz von Kdbus kann sich hingegen bei geringerer Hardware-Leistung positiv auswirken, etwa auf mobilen Geräten. Das belegen auch Crequys Ping-Pong-Benchmarks auf dem N900.
Sicherheitsaspekte dürften bei der Aufnahme des Projekts in den Kernel eine wesentliche Rolle spielen, da D-Bus im User-Space aktiv ist. Ob die Entwickler das für den Desktop konzipierte IPC-Framework in den Kernel integrieren, ist eher zweifelhaft.



