Linux 5.16 beschleunigt Spiele und steigert die Systemleistung

Seite 3: Einsatzfähiger DAMON

Inhaltsverzeichnis

Der vorhergehende Linux-Kernel 5.15 schaffte mit dem "Data Access MONitor" (DAMON) einen wichtigen Bestandteil des "Data Access-aware Operating System" (DAOS). Das Ziel von DAOS ist es, über aus dem laufenden System ermittelte Zugriffsmuster die Performance und Effizienz des Datenzugriffs durch das Betriebssystem zu optimieren. DAMON kommt hierbei die Aufgabe zu, die Arbeitsspeicherzugriffe und -nutzung von Userspace-Prozesse zu überwachen und über die ermittelten Zugriffsmuster die Grundlage für die Optimierung zu schaffen.

DAMON war bereits in Linux 5.15 in der Lage Profile von Userspace-Prozessen anzulegen. Mit den "DAMON Operating Schemes" (DAMOS) folgen nun auch Taten. Über Zugriffsmuster lassen sich nun Aktionen in Form von madvice()-Aufrufen auslösen. Der Kernel kann anschließend adäquate Strategien wie Caching, Paging oder Read-Ahead für die jeweiligen Speicherbereiche ergreifen.

Neu ist der DAMON_RECLAIM, der länger ungenutzte Speicherbereiche (cold memory regions) identifiziert, umgehend auslagert (page out) und so wieder schneller für andere Tasks bereitstellt. Der Mechanismus ist für Situationen mit leichterem Engpass bei physischem Speicher gedacht. Das dahinterstehende Konzept belastet die CPU dabei weniger als das übliche Identifikations- und Auslagerungsverfahren. Eine ausführliche Dokumentation findet sich in den entpackten Kernel-Quellen unter Documentation/admin-guide/mm/damon/reclaim.rst. Zusätzlich kann das Monitoring nun mit physischen Speicheradressen umgehen. Zuvor konnten nur virtuelle Speicheradressen überwacht werden.

Einige Systeme verwenden spezielle Hardware-Topologien, bei denen sich mehrere CPU-Kerne L3-Tags oder L2-Caches teilen (CPU-Cluster). Bislang berücksichtigte der CPU-Scheduler von Linux beim Verteilen von Tasks derartige Cluster nicht, was zu ungleich ausgelasteten Caches führen kann. In Linux 5.16 ist sich der Scheduler der über Caches zusammenhängenden CPU-Kerne bewusst und verteilt die Tasks so, dass auch systemweit die Caches ausgeglichen belastet sind. Die Leistung auf den betreffenden Systemen lässt sich damit wesentlich steigern.

Auf PowerPC-Systemen ist die Option STRICT_KERNEL_RWX in der Kernel-Konfiguration per Standard aktiv. Somit sind alle Kernel-Speichersegmente voreingestellt entweder ausführbar oder schreibar. Das verhindert, dass im Falle von Buffer-Overflows dem Kernel Code untergeschoben werden kann.

Mit dem neuen Kernel ist Memory-Hotplug auf 32-Bit-x86-Systemen nicht mehr möglich. Das Feature erlaubt, die Größe des verfügbaren physischen Arbeitsspeichers eines Systems zur Laufzeit zu erhöhen oder zu verringern. Wichtig ist das in der Virtualisierung, um für virtuelle Maschinen dynamisch den Speicher anpassen zu können.

Das Memory-Hotplug auf 32-Bit-x86 war bereits seit über einem Jahr nicht mehr funktionsfähig und daher als defekt markiert. Nachdem das keiner beklagte, wurde das Feature nun gestrichen. Auf anderen CPU-Architekturen ist Memory-Hotplug weiterhin verfügbar.

Für die kommenden Systemgenerationen ist Linux mit den neuen Release für Intels "Advanced Matrix Extensions" (AMX) vorbereitet. Die Erweiterung bringt neue Register und Befehle für Matrizen-Operationen. Im ARM-Bereich hält die "Arm 8.6 timer extension" Einzug. MIPS erhält einen neuen Just-in-Time-Compiler für BPF. Zu guter Letzt beherrscht nun auch RISC-V KVM (Kernel-based Virtual Machine).

Schließlich härtet sich Linux gegen klassische Angriffe. Buffer-Overflows nimmt die zusätzliche Bereichsprüfung in strict_memcpy() weitere Angriffspunkte. Zudem führt das neue Kernel-Release die neue Funktion cc_platform_has() ein. Diese generische Schnittstelle gibt im Kernel-Code fortan Auskunft darüber, welche Merkmale im Bereich "Confidential Computing" verfügbar und aktiv sind.

Das Confidential Computing gestattet es, über Hardware abgesicherte und kryptographisch abgeschottete Enklaven im System zu schaffen. Als erster Anwendungsfall löst cc_platform_has() bereits jetzt mem_encrypt_active() ab, das bislang anzeigte, ob der Arbeitsspeicher verschlüsselt ist.

Linux 5.16 bringt keine große Fülle an neuen Funktionen, Features und Technologien für Endbenutzer. Auch neue Anwendungen, Integration neuer technischer Bereiche oder gar Killer-Apps sollte man nicht erwarten. Ein reines Wartungs-Update, das lediglich Bugfixes und neue oder verbesserte Treiber liefert, bleibt es dennoch nicht.

Der neue Kernel glänzt deutlich mit neuen Ansätzen zur Performance-Steigerung. futex2 beschleunigt zwar "nur" den Spezialbereich der portierten Windows-Games. Folio-Pages greifen hingegen tief in den Kernel ein und stellt damit Weichen für ein schlankeres und schnelleres System. Ebenso schlägt der Scheduler mit dem Berücksichtigen der CPU-Cluster in die Performance-Kerbe.

Linux 5.16 steht damit im Zeichen der Optimierung und Leistungssteigerung. Aber auch in puncto Modernisierung fasst sich das Entwicklerteam ein Herz. Historisch gewachsene Konzepte wie das überfrachtete futex() werden entstrubbelt. Um zu modernisieren und zu entschlacken, geht das Entwicklerteam auch aufwendige Aufgaben wie die Folio-Pages an. Die jetzt angestoßenen Umbauten werden auch die kommenden Linux-Versionen noch beschäftigen, wenn nicht gar das eine oder andere Release prägen. Eine Übersicht der hier behandelten - und weiterer Änderungen findet sich im ChangeLog des Kernels. (axk)