Original-URL des Artikels: https://www.golem.de/news/prozessfristen-linux-3-14-erhaelt-deadline-scheduler-1403-105475.html    Veröffentlicht: 31.03.2014 09:48    Kurz-URL: https://glm.io/105475

Prozessfristen

Linux 3.14 erhält Deadline Scheduler

Der Linux-Kernel in Version 3.14 verwaltet Prozesse effizienter mit dem Deadline Scheduler, was vor allem Real-Time-Anwendungen zugutekommt. Mit Zram lässt sich der Arbeitsspeicher blockweise komprimieren, was für Linux auf TVs und mobilen Geräten von Vorteil ist.

Linus Torvalds hat die Veröffentlichung des Linux-Kernels 3.14 bekanntgegeben. Wesentliche Änderung ist der Deadline Scheduler, mit dem vor allem das Abarbeiten von Prozessen von Real-Time-Anwendungen verbessert werden soll, etwa beim Streaming von Multimediainhalten. Kexec funktioniert jetzt auf EFI-Systemen und mit Zram lässt sich der Arbeitsspeicher blockweise komprimieren.

Der für Real-Time-Anwendungen wichtige Deadline-Scheduler wurde in Linux 3.14 nach langjähriger Entwicklung eingepflegt. Damit lässt sich das Priorisieren von Prozessen besser verwalten. Jeder Prozess meldet eine Frist an, bis wann eine Aufgabe erledigt werden muss. Außerdem teilt eine Anwendung auch mit, wie oft eine Aufgabe ausgeführt werden muss. Und schließlich wird von einer Anwendung noch eine maximale Zeit mitgeteilt, in der sie die CPU beanspruchen will. Daraus errechnet der Scheduler einen effizienten Zeitplan für alle laufenden Anwendungen. Anwendungen, deren Frist unmittelbar bevorsteht, werden bevorzugt. Der Scheduler kümmert sich dabei auch darum, keine neuen Fristen zu akzeptieren, wenn die laufenden Prozesse die verfügbare CPU-Zeit bereits auslasten. Damit soll garantiert werden, dass jede Aufgabe ihre angemeldeten Fristen einhalten kann.

Zram komprimiert den Arbeitsspeicher

Der Arbeitsspeicher lässt sich blockweise mit Zram komprimieren und bildet zusammen mit Zswap und Zcache ein Framework, um mehr Daten im schnelleren Arbeitsspeicher zu halten. Inzwischen ist das Verschieben von Daten zwischen Speichermedien und Arbeitsspeicher ein Flaschenhals auf vielen Systemen. Mit Zram können mehr Daten im Arbeitsspeicher gehalten werden. Die meisten modernen CPUs bringen die nötige Leistung mit, um Daten effizient zu komprimieren und zu entpacken. Nebenbei wird die Lebensdauer von SSDs und anderen elektronischen Speichermedien verlängert. Zram kommt bereits vor allem in Linux-Versionen auf Fernsehern, Android oder Chrome OS zum Einsatz. Der Code des Kompressionsverfahrens ist seit Linux 2.6.33 von Anfang 2010 im experimentellen Staging-Zweig des Linux-Kernels, schaffte es aber diesmal in den Hauptzweig.

Das Dateisystem Btrfs nutzt Sysfs, um detaillierte Informationen über sich und die damit formatierten Partitionen mitzuteilen, darunter die unterstützten Funktionen der verwendeten Version oder zum Speicherverbrauch. Bislang konnten solche Informationen nur über Ioctl() abgerufen werden. Die Informationen in Sysfs lassen sich einfacher über die diversen Skriptsprachen abrufen. Künftig lassen sich Dateisystemattribute hierarchisch bis zu den einzelnen Indexknoten hinunter vererben. Der recht große Patch enthält auch zahlreiche Leistungsverbesserungen und Korrekturen. Facebook hatte im Dezember 2013 die beiden Btrfs-Hauptentwickler Chris Mason und Josef Bacik eingestellt. Im Januar 2014 folgte ihnen der Kernel-Entwickler Jens Axboe, der am Blocklayer des Linux-Kernels arbeitet. Facebook setzt Btrfs bereits in einigen Produktivumgebungen ein.

Kernfs statt Sysfs

Mit Kernfs - nicht zu verwechseln mit Kernfs aus BSD-Systemen - soll das virtuelle Dateisystem Sysfs gänzlich überarbeitet werden und nebst den jetzt darin untergebrachten Cgroups auch künftig weitere Subsysteme aufnehmen können. Mit den Patches in Linux 3.14 wurden zunächst die Kernfunktionen von Sysfs in Kernfs übertragen. Sysfs wird derweil als Wrapper verwendet, um Kompatibilitätsprobleme zu vermeiden.

Patches für Grafiktreiber

Während Nouveau in Linux 3.14 Nvidias Chipsatz Geforce GTX 780 alias Titan und Geforce GTX 630 beziehungsweise GTX 640 unterstützt, können Maxwell-Chipsätze (GTX 750) weiterhin noch nicht mit dem freien Treiber genutzt werden. Zudem haben die Nouveau-Entwickler das Overlaying, also die Anzeige von Videos, nochmals verbessert und weitere Fehler im Code korrigiert. Im Nouveau-Treiber wurde eine erste Implementierung für Nvidias Hybridgrafik-Technik Prime für Tegra eingepflegt, mit dem sich zumindest zwischen älteren Tegra-Chips und anderen Grafikchips umschalten lässt. Der neuen Version des Treibers fehlt aber weiterhin die Unterstützung für den neuen Tegra K1. Nvidia hatte Anfang Februar 2014 Referenzcode gestiftet, mit dem der Tegra K1 mit dem freien Nouveau-Treiber künftig laufen soll.

Mit AMDs Grafikchips ab HD 7000 sollte künftig der Unified Video Decoder korrekt funktionieren. Mit dem Nachreichen der IRQ-Unterstützung erreichte der Entwickler Christian König nach eigenen Angaben eine Bildrate von 52 fps beim Abspielen eines mit H264 codierten 1080p-Videos. Der Patch wird auch in älteren Kernel-Versionen eingepflegt. In Linux 3.14 wird außerdem die Unterstützung der dynamischen Leistungsverwaltung (Dynamic Power Management, DPM) für aktuelle Radeon-Chipsätze aktiviert.

Die Unterstützung für die Grafikeinheiten in Intels Haswell-Nachfolger Broadwell gilt inzwischen als so weit ausgereift, dass der Code seinen experimentellen Status in Linux 3.14 losgeworden ist. Noch fehlen allerdings einige Funktionen, wie der Hauptentwickler bei Intel, Daniel Vetter, in seinem Blog mitteilte. Sie sollen in Linux 3.15 nachgereicht werden. Wer Broadwell mit Linux nutzen will, benötigt neben Version 3.0 des Kernel-Treibers (xf86-video-intel 3.0) noch Mesa ab Version 10.2 und VA-API in Version 1.3.0.

Außerdem wird nach und nach der Code für die User-Mode-Settings (UMS) aus dem Kernel-Treiber entfernt. UMS ist längst durch die Kernel Mode Settings ersetzt worden, bei denen der Linux-Kernel beispielsweise die Bildschirmauflösung selbst anpasst. Aus Kompatibilitätsgründen bleiben Reste des UMS-Codes noch im Treiber. In einem Jahr soll er aber vollständig entfernt werden.

Mehr Effizienz im Netzwerk

Um den Datendurchsatz bei Netzwerkverbindungen zu verbessern und gleichzeitig die CPU-Last zu senken, gibt es in Linux 3.14 das TCP Autocorking. Dabei werden kleinere Datenpakete zunächst nur gesammelt und später zu einem größeren zusammengefügt. Parallel dazu gibt es einen neuen Filter, der kleinere Datenströme über das Netzwerk von größeren unterscheiden kann und die kleineren bevorzugt. Für eine effizientere Verwaltung von Warteschlangen gibt es den Proportional Integral Controller Enhanced (PIE), der Schwankungen und Latenzen bei Netzwerkverbindungen effizienter verwaltet. PIE soll vor allem unter einer hohen Netzwerklast für einen besseren Durchsatz sorgen.

Umstritten ist die Umsetzung der Address-Space Layout Randomization (ASLR) im Kernel. Der Code stammt von Google und wird dort bereits in Chrome OS genutzt. Durch die zufällige Zuweisung von Adressbereichen soll es Angreifern erschwert werden, mögliche Angriffsflächen durch Pufferüberläufe zu entdecken. Bislang werden nur Teile des Kernel-Codes zur Startzeit randomisiert, etwa Text. Möglicherweise werden später auch andere Regionen von ASLR abgedeckt. ASLR für den Kernel ist auch deshalb umstritten, weil der Ruhezustand und die Leistungsanalysewerkzeuge Perf Events damit noch nicht funktionieren.

Kexec für EFI-Systeme

Auf EFI-basierter Hardware lässt sich künftig Kexec wieder nutzen. Die entsprechenden Patches von den Kernel-Entwicklern Borislav Petkov und Dave Young hat Ingo Molnar abgesegnet. Von Petkov stammen statische Runtime-Dienste, die das virtuelle Mapping des EFI-Systems im Speicher bereitstellen. Auf dessen Informationen stützt sich dann der neue Kernel, der den alten über den Kexec-Befehl ersetzen kann, ohne dass das System neu gestartet werden muss. Von Young stammen noch die Anpassungen an Kexec selbst. Zwischenzeitlich wurde Kexec auf EFI-Systemen wegen Problemen deaktiviert. Darüber hinaus wurde die Unterstützung für Kexec auf Linux m68k für Mikroprozessoren von Motorola eingebaut.

Derweil arbeitet der Entwickler Vivek Goyal daran, dass Kexec signierte Kernel überprüfen und laden kann. Denn die bereits integrierten EFI-Patches funktionieren noch nicht auf Secure-Boot-Systemen. Noch sind die Änderungen aber nicht für die Integration in den Kernel bereit. Kernel-Entwickler Matthew Garrett hatte bereits mehrfach darauf hingewiesen, dass Kexec auch unsignierte Kernel laden kann. Damit lassen sich die mit Secure Boot bereitgestellten Sicherheitsmechanismus unterlaufen und möglicherweise sogar ein Windows-Kernel starten. Bislang wurde das Ausführen von Kexec auf EFI-Sytemen von den meisten Distributionen auch aus diesem Grund unterbunden.

Linux 3.14 steht auf Kernel.org zum Download bereit.  (jt)


Verwandte Artikel:
Deadline Scheduler: Linux 3.14 verwaltet Prozessfristen   
(03.02.2014, https://glm.io/104320 )
Librem 5: Purism-Smartphone bekommt Smartcard für Verschlüsselung   
(09.03.2018, https://glm.io/133248 )
Bilderkennung: Roboter löst Rubik's Cube in 380 Millisekunden   
(08.03.2018, https://glm.io/133228 )
Lizenzbestimmungen: Linux-Kläger zieht Antrag gegen Elektronikhersteller zurück   
(08.03.2018, https://glm.io/133215 )
Lizenzbestimmungen: Linux-Abmahnungen verunsichern Elektronikbranche   
(05.03.2018, https://glm.io/133139 )

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