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.
Die Umarbeitung und komplette Neugestaltung der Futex-Schnittstelle des Linux-Kernels ist als Futex2 in einen wichtigen Kernel-Zweig aufgenommen 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, mit denen dies nun umgesetzt wird, heißt es dazu: "Dies ist besonders nützlich, um Waitformultipleobjects 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 mehr als 40.000 Futex-Aufrufe pro Sekunde.
Weitere Details zu dem neuen Futex-Aufruf liefert die Dokumentation sowie ein Vortrag von Almeida auf der diesjährigen Linux Plumbers Conference. Außerdem berichtet der Valve-Entwickler Pierre-Loup Griffais auf Twitter, 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.