Original-URL des Artikels: https://www.golem.de/1009/78059.html    Veröffentlicht: 18.09.2010 13:46    Kurz-URL: https://glm.io/78059

Kdbus

Interprozesskommunikation für den Kernel

D-Bus sorgt unter Linux für die Kommunikation zwischen Anwendungen. Kdbus soll das Inter-Process-Communication-Framework (IPC) zumindest teilweise in den Kernel verlegen, so Entwickler Alban Crequy. Dadurch würde der D-Bus-Systemdienst ausgespart und die Kommunikation zwischen Anwendungen beschleunigt.

Laut Entwickler Crequy kostet der Umweg über den D-Bus-Daemon 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, NameAquired, NameLost und AddMatch nach eindeutigen Namen (Unique Names), bekannten Namen und übereinstimmenden Regeln (Match Rules).

Je nach Zuordnung wird die Nachricht direkt an die angesprochene Applikation versendet. Dank der Funktion skb_clone() 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 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 übernommen.

D-Bus 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.

Hauptursache für einen langsamen Rundgang der Nachrichten über D-Bus sind zahlreiche Gültigkeitsprüfungen. 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.  (jt)


Verwandte Artikel:
Interprozesskommunikation: Systemd-Entwickler stellen Ersatz für Dbus-Daemon vor   
(24.08.2017, https://glm.io/129661 )
D-Bus 1.0 ist fertig   
(10.11.2006, https://glm.io/48887 )
Freier Nvidia-Treiber nähert sich erster Version   
(13.11.2007, https://glm.io/55966 )
Wasabi: Einheitliche Desktop-Suche   
(08.02.2007, https://glm.io/50409 )
D-Bus 0.62 verbessert Zusammenspiel mit Qt4   
(13.06.2006, https://glm.io/45869 )

© 1997–2018 Golem.de, https://www.golem.de/