Zum Hauptinhalt Zur Navigation

Futex 2: Linux-Kernel bekommt komplett neue Thread-Synchronisation

Die Futex-API des Linux-Kernels ist nach jahrelanger Arbeit nun kurz vor der Veröffentlichung einer Neufassung. Ausgangspunkt waren Valve und Wine.
/ Sebastian Grüner
Kommentare News folgen (öffnet im neuen Fenster)
Der Linux-Kernel bekommt eine neue Futex-Schnittstelle. (Bild: ianpreston, flickr.com)
Der Linux-Kernel bekommt eine neue Futex-Schnittstelle. Bild: ianpreston, flickr.com / CC-BY 2.0

Die Umarbeitung und komplette Neugestaltung der Futex-Schnittstelle des Linux-Kernels ist als Futex2 in einen wichtigen Kernel-Zweig aufgenommen(öffnet im neuen Fenster) worden. Es ist damit davon auszugehen, dass Futex2 in Linux-Kernel 5.16 aufgenommen wird, der Anfang kommenden Jahres erscheinen dürfte. Die Futex-Technik (Fast Userspace Mutex) bietet bereits seit langem eine Kernel-Technik zur Thread-Synchronisation, die Technik sollte aber grundsätzlich erweitert werden.

Beginn der Arbeiten vor etwa zwei Jahren war die Idee von Valve für seine Spielplattform Steam, mit Fsync eine neue experimentelle Technik für Linux einzuführen. Mit dieser sollte die Synchronisation von Threads auch unter Linux so ähnlich funktionieren, wie dies bei Windows umgesetzt wird. Ziel waren Geschwindigkeitsvorteile beim Ausführen von Windows-Spielen unter Linux.

Technisches Ziel war und ist es dabei, einerseits die Thread-Synchronisation im Userspace umzusetzen und dies andererseits so zu gestalten, dass Threads gleichzeitig den Zustand mehrerer Objekte erfragen können. Letzteres ist unter Linux aber bisher nicht ohne Weiteres möglich gewesen. In der Erklärung zu den aktuellen Patches von Collabora-Entwickler André Almeida(öffnet im neuen Fenster) , mit denen dies nun umgesetzt wird, heißt es dazu: "Dies ist besonders nützlich, um Waitformultipleobjects(öffnet im neuen Fenster) von Windows zu emulieren."

Darüber hinaus beschreibt Almeida, dass die Umarbeitung und Nutzung der neuen Futex-Schnittstelle im Vergleich zu der vor zwei Jahren verwendeten Technik die CPU-Last in Spielen reduziere und teils sogar die Bildwiederholrate steigern könnte. Immerhin nutzen einige Spiele laut Almeida(öffnet im neuen Fenster) mehr als 40.000 Futex-Aufrufe pro Sekunde.

Weitere Details zu dem neuen Futex-Aufruf liefert die Dokumentation(öffnet im neuen Fenster) sowie ein Vortrag von Almeida(öffnet im neuen Fenster) auf der diesjährigen Linux Plumbers Conference. Außerdem berichtet der Valve-Entwickler Pierre-Loup Griffais auf Twitter(öffnet im neuen Fenster) , dass die Beteiligten daran arbeiten, die Vorteile der neuen Schnittstelle für native Game-Engines und weitere Linux-Anwendungen bereitzustellen. Dafür arbeitet das Team etwa an einer Glibc-Umsetzung.


Relevante Themen