Linux 7.2 modernisiert die Verteilung von CPU- und GPU-Leistung

Der neue Linux-Kernel soll Hardware-Ressourcen effizienter und gerechter verteilen. Im Mittelpunkt stehen ein überarbeitetes CPU-Scheduling und ein neuer Ansatz zur Zuteilung von GPU-Rechenzeit. Eine wichtige Änderung schaffte es allerdings nicht mehr als Voreinstellung in die finale Version.

Linux 7.2 ist in der Nacht vom 16. auf den 17. August veröffentlicht worden. Der Weg zur Freigabe verlief offenbar unruhiger als geplant: In seiner Release-Mail bezeichnete Linus Torvalds die letzte Entwicklungswoche als deutlich arbeitsreicher als erwartet. Unter früheren Umständen hätte dies möglicherweise eine zusätzliche Testrunde und damit eine Verschiebung um mindestens eine Woche bedeutet.

Torvalds entschied sich dennoch für die Veröffentlichung. Andernfalls, bemerkte er sinngemäß mit gewohnt trockenem Humor, würde womöglich überhaupt kein neuer Kernel mehr erscheinen. Ganz ohne Konsequenzen blieb die hektische Schlussphase jedoch nicht: Mehrere kurzfristig eingebrachte Änderungen wurden vor der Freigabe wieder zurückgenommen.

Wer eine eigene Website oder einen Blog erstellen möchte, kommt an WordPress kaum vorbei. Passende Bücher zum weltweit beliebtesten Content-Management-System WordPress findest du bei Amazon*.

Fairer Ansatz für die Grafikkarte

Zu den prominentesten Wackelkandidaten gehörte eine grundlegende Neuerung im Direct Rendering Manager, kurz DRM. Der dort eingesetzte Scheduler koordiniert die Verteilung von Rechenzeit auf der Grafikeinheit. Vorgesehen war, das bisherige FIFO-Verfahren durch ein Modell mit gerechterer Laufzeitverteilung zu ersetzen und dieses unmittelbar zum Standard zu machen.

Die neue Technik ist weiterhin Bestandteil von Linux 7.2, wird vorerst jedoch nicht automatisch aktiviert. Damit erhalten Entwickler und Hardwarehersteller zusätzliche Zeit, das Verhalten unter unterschiedlichen Belastungen und mit verschiedenen Treibern zu prüfen.

Konzeptionell erinnert der Ansatz an den früheren Completely Fair Scheduler für CPU-Prozesse. Während dieser die verfügbare Prozessorzeit möglichst ausgewogen auf laufende Prozesse verteilte, soll der neue DRM-Scheduler vergleichbare Fairness bei der Nutzung der GPU herstellen. Anwendungen sollen nicht länger allein deshalb dominieren können, weil sie besonders früh oder besonders viele Aufträge eingereicht haben.

Virtuelle Laufzeit entscheidet über den nächsten Auftrag

Beim bislang verwendeten First-in-first-out-Prinzip landen GPU-Aufträge in Warteschlangen und werden grundsätzlich in der Reihenfolge ihres Eingangs abgearbeitet. Dieses einfache Modell kann dazu führen, dass Programme mit umfangreichen Auftragslisten einen großen Teil der verfügbaren Rechenzeit beanspruchen. Andere Anwendungen müssen entsprechend lange warten.

Der neue Scheduler arbeitet deshalb mit sogenannten Scheduling Entities, denen die GPU-Aufträge einer Anwendung zugeordnet werden. Für jede dieser Einheiten führt das System eine virtuelle Laufzeit. Je länger eine Entity die Grafikkarte nutzt, desto schneller wächst dieser Wert.

Steht neue GPU-Zeit zur Verfügung, wählt der Scheduler bevorzugt eine ausführbare Entity mit möglichst niedriger virtueller Laufzeit aus. Anwendungen, die zuvor nur selten zum Zug gekommen sind, wandern dadurch automatisch nach vorn. Dauerhaft aktive Programme können die Grafikeinheit somit weniger leicht für sich allein vereinnahmen.

Prioritäten bleiben wichtig, blockieren aber nicht mehr vollständig

Auch der Umgang mit unterschiedlich priorisierten Aufgaben wird neu geordnet. Das FIFO-Modell verwendet dafür voneinander getrennte Warteschlangen. Aufträge mit hoher Priorität werden zuerst bearbeitet; niedrig eingestufte Jobs können unter anhaltender Last im schlimmsten Fall praktisch leer ausgehen.

Das faire Verfahren berücksichtigt Prioritäten stattdessen bei der Berechnung der virtuellen Laufzeit. Eine niedrige Priorität erhöht diesen Wert schneller, sodass die betreffende Anwendung seltener GPU-Zeit erhält. Vollständig ausgeschlossen wird sie dadurch jedoch nicht. Das soll die sogenannte Priority Starvation verhindern – einen Zustand, in dem niedrig priorisierte Aufgaben theoretisch unbegrenzt auf ihre Ausführung warten.

Besonders sichtbar könnte dieser Unterschied auf grafischen Desktops werden. Ein Compositor benötigt meist nur kurze, regelmäßig wiederkehrende Rechenphasen, während Spiele, KI-Anwendungen oder andere anspruchsvolle Programme die GPU nahezu dauerhaft auslasten können. Befindet sich vor den Aufträgen des Compositors eine lange Warteschlange, wirkt die Benutzeroberfläche unter Umständen träge oder sogar eingefroren.

Der neue Scheduler erkennt über die virtuelle Laufzeit, dass der Compositor bislang vergleichsweise wenig GPU-Leistung erhalten hat, und kann dessen Aufträge früher berücksichtigen. Interaktive Anwendungen sollen dadurch auch bei hoher Auslastung schneller reagieren.

Optimierungen für den Prozessor

Neben den Arbeiten am Grafik-Subsystem verbessert Linux 7.2 auch das CPU-Scheduling. Der Kernel soll Aufgaben stärker unter Berücksichtigung der vorhandenen CPU-Caches verteilen. Daten, die bereits in einem Cache liegen, können dadurch häufiger weiterverwendet werden, anstatt nach einem Wechsel des Prozessorkerns erneut aus langsameren Speicherstufen geladen werden zu müssen.

Das kann unnötige Speicherzugriffe reduzieren und insbesondere auf modernen Mehrkernsystemen die Effizienz erhöhen. Wie groß der Leistungsgewinn ausfällt, hängt allerdings stark von Prozessorarchitektur und Arbeitslast ab.

Linux 7.2 liefert damit keine einzelne spektakuläre Neuerung, setzt aber an zentralen Stellen des Kernels an. Die veränderte Ressourcenverteilung soll das System unter hoher Last reaktionsfähiger machen. Dass der faire GPU-Scheduler zunächst nicht zum Standard wird, zeigt zugleich, wie vorsichtig tiefgreifende Änderungen am Kernel eingeführt werden.

Wer eine eigene Website oder einen Blog erstellen möchte, kommt an WordPress kaum vorbei. Passende Bücher zum weltweit beliebtesten Content-Management-System WordPress findest du bei Amazon*.

Sladjan Lazic

Comments

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert