Linux 5.1 bewältigt unter anderem asynchrone Ein- und Ausgaben für die Mehrheit der Use Cases, lässt Btr-FS-Nutzer die Kompressionslevel anpassen, unterstützt kumulative Live-Patches und ergänzt einen neuen Governor für den Energieverbrauch.
Mit “io_uring” landet eine hochperformante Schnittstelle für asynchronen Datenverkehr im neuen Kernel 5.1. Das bisherige asynchrone Interface “aio” fristete aufgrund zahlreicher Einschränkungen eher ein Nischendasein. Zum einen kam es nur mit direkten Ein- und Ausgaben zurecht (“O_DIRECT”). Zum anderen blockierte es gelegentlich doch, weil es auf Metadaten wartete. Nicht zuletzt brachte es ein suboptimales API mit. Versuche, “aio” zu verbessern, führten am Ende offenbar nicht zum gewünschten Ergebnis.
Im Kontrast dazu kommt “io_uring” auch mit gepufferten Ein- und Ausgaben zurecht, was die überwiegende Zahl an Use Cases abdeckt. Dafür nutzt das Interface zwei Warteschlangen, eine Submission und eine Completion Queue. In die Submission Queue schickt die Anwendung ihre Anforderung. Der Kernel schließt diese im Laufe der Zeit ab und schiebt das Ergebnis in die Completion Queue. Details zu “io_uring” warten hier [PDF]. Dank der Liburing können Entwickler vorgefertigte “io_uring”-Instanzen aufsetzen und über ein simples API nutzen.
Besser schlafen
Ein eigenes Kernel-Subsystem (“cpuidle”) beschäftigt sich mit der Frage, wie der Kernel seine freie Zeit am besten, und vor allen Dingen, am effizientesten nutzt. Mit TEO, dem Timer Events Oriented Governor, erhält der Kernel 5.1. nun einen weiteren Modus für die Freizeitgestaltung. TEO soll effizienter arbeiten als der Governor “menu”, der bislang als erste Wahl für Tickless-Systeme gilt und am meisten Strom spart. Kernel-Entwickler Rafael Wysocki hatte allerdings einige Probleme mit “menu” identifiziert. Diesen zu überarbeiten, hätte allerdings womöglich legitime Workloads gestört, also ergänzte er mit TEO kurzerhand einen neuen Governor.
Besser komprimieren
Dass das von Facebook entwickelte Dateisystem Btr-FS Zstd bereits seit einer Weile nutzt, überrascht wenig, wenn man weiß, dass auch Zstd unter den Fittichen des Sozialen Netzwerks heranwächst. Überraschender ist, dass Nutzer von Btr-FS bislang den Kompressions-Level nicht einstellen konnten, was den Einsatz des Dateisystems durchaus beeinflusst. Das soll sich nun dank der neuen Mountoption “-o compress=zstd:level” ändern. Die Commit-Nachricht verrät unter anderem, wie stark und in welcher Geschwindigkeit die verschiedenen Kompressionslevel Dateien komprimieren, wobei zum Testen der Silesia Corpus zum Einsatz kam.
Ein Patch für alle
Livepatching ist eine gute Sache, die Komplexität wird mitunter aber auch zur Bürde. Etwa, wenn eine Funktion mehrfach gepatcht wird und der Entwickler die Patches in einer bestimmten Reihenfolge stapeln muss. Will der Admin dann ein älteres Patch aus dem Stapel entfernen, setzt mitunter der Jenga-Effekt ein und das Konstrukt fällt in sich zusammen.
So genannte atomare Ersetzungen (Atomic Replace) sollen das ändern. Sie erlauben es, kumulative Patches anzubringen. Diese versammeln sämtliche gewollten Änderungen älterer Patches in einem einzigen Patch, das sich leichter betreuen lässt. Steht das “Replace”-Flag in “struct klp_patch” auf “true”, leitet der Kernel alle Prozesse auf das Patch um, sobald dieses eingepflegt ist. Die älteren Patches werden allesamt entfernt, ebenso die Ftrace-Handler für die nicht mehr veränderten Funktionen.
Herunterladen lässt sich der Kernel wie gewohnt auf Kernel.org. Mehr zu den Änderungen verraten unter anderem die Kernelnewbies.




