Linux 5.2 freigegeben: Änderungsrekord und Geschwindigkeitsverbesserungen

Seite 3: Entwicklerdateien auf Abruf; neue Grafiktreiber; Geschwindigkeit zurückgewinnen

Inhaltsverzeichnis

Linux kann über die Datei /proc/kheaders.tar.xz jetzt eine Reihe von Entwicklerdateien bereitstellen, die man für Kernel-nahe Tätigkeiten gelegentlich braucht – etwa zur Ablaufverfolgung (Tracing) oder zum nachträglichen Kompilieren von Kernel-Modulen. Die Datei mit Header- und Devel-Dateien wird dabei von einem vergleichsweise großen Modul bereitgestellt, das sich bei Bedarf aber laden und später wieder entladen lässt.

Laut dem zuständigen Entwickler ist dieser Ansatz für Android und andere Embedded Systems gedacht: Dort ist es unüblich, diese Entwicklerdateien mit dem Root-Dateisystem auszuliefern, wie es Linux-Distributionen für PCs typischerweise machen. Abzuwarten bleibt, ob Distributoren das neue Feature in ihren Kernel-Images aktivieren werden.

Mithilfe des von Google-Mitarbeitern eingebrachten PSI Monitors (u. a. 1, 2) können Überwachungsprogramme jetzt innerhalb von Millisekunden und ohne viel Overhead von drohender oder akuter Überlastung erfahren. Solche Tools können früher Maßnahmen ergreifen und notfalls Programme beenden – etwa wenn ein Hintergrundprozess den Arbeitsspeicher übermäßig belastet und so die Desktop-Oberfläche oder ein Vordergrundprogramm spürbar verlangsamt.

Google will das Feature bei Android nutzen. Einige Hintergründe zum Ansatz erläutert der LWN.net-Artikel "Pressure stall monitors". Die neue Technik erweitert das bei Linux 4.20 integrierten PSI (Pressure-Stall Information), mit dem Administratoren deutlich leichter als bei /proc/loadavgerkennen können, wie stark und wodurch ein System ausgelastet is.

Der Kernel-Grafiktreiber i915 unterstützt jetzt die GPU von Intel-Prozessoren mit dem Codenamen "Ice Lake". Zu ihr gehören etwa die ersten Core-i-CPUs der zehnten Generation, die Intel kürzlich vorgestellt hat und die für flache Notebooks ausgelegt sind. Diese 10-nm-Prozessoren sind die ersten, in denen Intels Grafikprozessor der elften Generation sitzt. Support für solche Gen11-GPUs steckt auch schon in den Vorgängern von Linux 5.2 – er gilt dort aber als unvollständig, daher muss man ihn über den Kernel-Startparameter i915.alpha_support=1 explizit aktivieren. OpenGL- und Vulkan-Treiber für diese Chips bringt das im Juni erwartete Mesa 19.1.

Linux 5.2 unterstützt die GPUs einiger kürzlich eingeführter oder bald erwarteter Intel-Prozessoren.

(Bild: c't-Online-Artikel "Prozessorfahrpläne von AMD und Intel" )

Der neue Kernel unterstützt auch schon die GPUs der noch nicht erhältlichen Intel-Platform "Elkhart Lake (EHL)", die wie Ice Lake eine Gen11-GPU enthält, aber auf Embedded-Prozessoren (Atom) und Billig-CPUs (Atom-Celerons) zielt. Ferner weiß der Kernel jetzt auch den Grafikprozessor von CPUs der "Comet Lake"-Generation inklusive ihres Platform Controller Hubs (PCH) anzusprechen. Auch sie sind noch nicht erhältlich und für Desktop-PCs und leistungsstärkste Notebooks gedacht. Weitere Details zu den Einsatzgebieten von diesen und weiteren jüngst eingeführten oder bald erwarteten Prozessoren liefert der kürzlich auf c't online veröffentlichte Text "Prozessorfahrpläne von AMD und Intel".

Für die verbreiteten ARM-GPUs der Mali-Reihe bringt der Direct Rendering Manager (DRM) des Kernels jetzt die Grafiktreiber Lima und Panfrost mit. Auf ihnen bauen gleichnamige OpenGL-Treiber zur 3D-Beschleunigung auf, die zu den wichtigsten Neuerungen des kürzlich veröffentlichten Mesa 19.1 gehören. Über diese Treiber lässt sich die 3D-Beschleunigung der meisten von ARM entwickelten Mali-GPUs nutzen, die diverse Hersteller in System-on-a-Chip-Bausteinen (SOCs) in Android-Geräten, Chromebooks, Embedded Systems oder Einplatinensystemen (Single Board Computer/SBCs) einsetzen.

Das Duo aus Lima-DRM-Treiber und Lima-OpenGL-Treiber unterstützt dabei "Utgard"-GPUs der Mali-400er-Serie. Das Panfrost-Duo hingegen spricht die neueren Mali-Generationen "Midgard" und "Bifrost" an, die unter den Mali-Modellbezeichnungen T6xx, T7xx, T8xx respektive G3x, G5x, G7x segeln.

Mehr Infos

Viele Treiber für einen Chip

Die in Linux 5.2 enthaltenen Kernel-Treiber Lima und Panfrost stellen DRM Render Nodes bereit, mit denen die gleichnamigen OpenGL-Treiber von Mesa 19.1 die 3D-Beschleunigung vieler Mali-Kerne nutzen können. Mit der Monitoransteuerung haben Lima und Panfrost allerdings nichts zu tun: Anders als bei x86-PCs sind Display Engine, 3D-Einheiten und Video-Beschleuniger bei SoCs nicht Teil eines mächtigen Grafikchipdesigns; vielmehr kümmern sich separate Komponenten um diese drei Funktionen, die SoC-Hersteller als IP-Cores von einem oder unterschiedlichen Unternehmen zukaufen und kombinieren.

Neben Lima oder Panfrost ist daher ein weiterer Kernel-Treiber für die Display Engine nötig, die den Bildschirm ansteuert (und sich oft abermals aus verschiedenen IP-Cores zusammensetzt). Solche zumeist Kernel-based Mode-setting (KMS) bietenden Treiber gibt es aber für die meisten SoCs mit Mali-GPUs; typischerweise sind sie auch Open-Source-Software und bereits in Linux enthalten. Für Video-Beschleuniger bedarf es ähnlich wie bei 3D eigener Treiber sowohl im Kernel als auch im Userspace.

An der Entwicklung von Lima und Panfrost hat sich ARM nicht beteiligt, obwohl die Firma in nahezu allen anderen Bereichen eigenhändig für ordentliche Linux-Unterstützung ihrer Hardware-Designs sorgt. Die zwei neuen Treiber-Duos entstanden daher weitgehend mithilfe von Reverse Engineering, indem unabhängige Entwickler das Verhalten von Hardware mit anderen, teilweise proprietären Treibern analysiert haben. So konnten sie alle zur Treiberprogrammierung benötigten Informationen zusammenkratzen, denn ARM stellt diese nicht bereit. Durch diesen Entwicklungsansatz beherrschen die beiden Treiber-Duos allerdings nur einen Teil der Funktionen, die die Hardware bietet. Außerdem unterstützen die Treiber längst nicht alle Grafikkerne der erwähnten Serien; Panfrost wurde beispielsweise nur auf den Midgard-GPUs T760 und T860 getestet.

Vermutlich stehen deshalb noch etliche Probleme und Stolpersteine mit den DRM- und OpenGL-Treibern an. Die Aufnahme der Treiber in Linux und Mesa hat erfahrungsgemäß aber starke Signalwirkungen, durch die sich mehr Tester und Entwickler auf die Treiber stürzen – das dürfte der Treiberqualität und dem Umfang der Hardware-Unterstützung einen ordentlichen Schub gehen.

ARM beobachtet die Entwicklung genau und erwägt offenbar, sich zumindest bei den Kernel-Treibern einzubringen. Offenbar gibt es zudem ARM-Entwickler, die das Unternehmen intern drängen, sich stärker zu engagieren. Das zeigt sich etwa im Zeitabschnitt 23:23 bis 28:44 eines Videos einer jüngst abgehaltenen Linaro-Konferenz, wo der angesehene und neuerdings bei ARM arbeitenden Linux-Entwickler Grant Likely einige diesbezügliche Andeutungen macht.

Sie wollen auf ihrem PC das Maximum an Geschwindigkeit herauskitzeln und fürchten sich nicht vor den ganzen Sicherheitslücken moderner Hauptprozessoren, die seit Anfang 2018 publik wurden? Dann starten Sie den Kernel fortan mit dem neuen Parameter mitigations=off, denn der deaktiviert die vielen Schutztechniken, die der Kernel für diese Lücken erhalten hat und standardmäßig nutzt. Wie stark das die Performance steigert, hängt von Prozessor und der eingesetzten Software ab: Die Gegenmaßnahmen machen manche Workloads deutlich langsamer, andere nur minimal.

Über den neuen Kernel-Parameter "mitigations=" kann man Maßnahmen für Prozessorlücken lahmlegen und so die Performance steigern.

(Bild: Screenshot der Kernel-Dokumentation)

Unterstützung für diesen Parameter wurde in den Hauptentwicklerzweig integriert, als dort im "Merge Window" gerade das Gros der Änderungen für Linux 5.2 zusammengetragen wurde (u. a. 1, 2, 3). Ein paar Tage später flossen dort auch die Gegenmaßnahmen ein, die vor "ZombieLoad" und anderen als MDS (Microarchitectural Data Sampling) klassifizierten Lücken schützen, die im Mai publik wurden.

Diese Schutztechniken und Support für den Mitigations-Parameter wurden aber am selben Abend in die Linux-Versionen 5.1.2, 5.0.16, 4.19.43, 4.9.176 und 4.14.119 zurückportiert. Auch mit vielen Kerneln von Linux-Distributionen funktioniert der Parameter mittlerweile. Er legt neben dem MDS-Schutz unter anderem auch PTI oder Retpoline lahm, die vor Meltdown und Spectre v2 schützen. Bislang musste man jede dieser Gegenmaßnahmen mit einem eigenen Parameter individuell ausschalten. Man sollte diese Möglichkeit aber nur in Umgebungen nutzen, wo keine Gefahr droht oder diese vernachlässigbar klein ist – beispielsweise in einem Hochgeschwindigkeits-Rechenverbund (HPC-Cluster), in dem man nur hausintern erzeugte und vertrauenswürdige Programme ausführt.

Mit dem neuen Parameter kann man die Sicherheit indes auch verbessern: Durch ein mitigations=auto,nosmt deaktiviert Linux falls nötig auch Hyper-Threading, denn das birgt bei einigen Prozessoren und Lücken zuständliches Gefahrenpotenzial. Ein solcher Schritt drückt die Performance aber noch stärker, als es die Gegenmaßnahmen ohnehin schon tun. Nach derzeit gängiger Auffassung ist das für Desktop-Systeme zu viel des Guten. Für Cloud-Provider und einige andere Einsatzgebiete kann das Deaktivieren von Hyper-Threading aber angebracht sein.