Kernel-Versionshinweise

Auf dieser Seite werden die wichtigsten Funktionen der einzelnen Kernel-Releases zusammengefasst und Links zu weiteren Informationen bereitgestellt.

Neue Funktionen in Kernel 6.12

In diesem Abschnitt werden die neuen Funktionen in Kernel 6.12 erläutert.

Profiling der Arbeitsspeicherzuweisung

Der Schlüssel zum Verständnis der Speichernutzung liegt darin, zu wissen, wo Zuweisungen vorgenommen werden. Kernel 6.12 enthält ein neues System zur Zuordnung der Speicherzuweisung namens memory allocation profiling (CONFIG_MEM_ALLOC_PROFILING in der Konfiguration). Beim Profiling der Speicherzuweisung wird jede Zuweisung einer eindeutigen Quellzeile zugeordnet, sodass Probleme mit Zuweisungen schnell erkannt werden können. Außerdem:

  • Wird während der Entwicklungsphase verwendet, ist aber im Standard-GKI-Image verfügbar.

  • Kann mit dem Bootparameter sysctl.vm.mem_profiling aktiviert werden.

  • Funktioniert sowohl für In-Kernel- als auch für geladene Module.

Schnelleres io_uring mit Zero-Copy- und Multishot-Lesevorgängen

Im Kernel 6.12 verwenden die Module statsd und logd den Sendfile-Zero-Copy-Mechanismus, wodurch ihre Leistung verbessert wird.

Außerdem wird in dieser Kernelversion das Multishot-Lesen implementiert, bei dem mit einem einzigen Lesevorgang mehrere Daten gleichzeitig abgerufen werden können, was die Leistung verbessert.

Verbesserte BPF-Funktionen und ‑Unterstützung (Berkeley Packet Filter)

Im Kernel 6.12 wurde die BPF-Toolchain verschoben, um CO-RE und mehrere moderne Funktionen zu unterstützen. Außerdem ermöglicht ein neuer BPF-Loader die Verwendung von modernem BPF für Programme, die Teil von AOSP sind.

Proxy-Ausführung

Durch die Proxy-Ausführung kann der Scheduler CPU-Zyklen von Prozessen mit hoher Priorität nutzen, um Sperren wiederherzustellen, die von Prozessen mit niedrigerer Priorität gehalten werden. Diese Funktion kann Probleme mit Prioritätsinversionen verringern.

Neue Funktionen in Kernel 6.6

In diesem Abschnitt werden die neuen Funktionen in Kernel 6.6 erläutert.

Rust-Unterstützung

In mehreren Kernel 6.6-Projekten wird Rust verwendet.

Sperren pro virtuellem Speicherbereich (Virtual Memory Area, VMA)

In Kernel 6.6 werden Sperren pro virtuellem Speicherbereich verwendet, um Konfliktprobleme mit mmap_sem (früher mmap_lock) zu beheben. Daher kann sich die Startzeit von Apps, die eine große Anzahl von Threads verwenden, um bis zu 20 % verkürzen.

Der EEVDF-Scheduler (Earliest Eligible Virtual Deadline First) ersetzt CFS

Der EEVDF ersetzt den Completely Fair Scheduler (CFS), um den CPU-Zugriff zwischen kurz- und langlaufenden Aufgaben besser auszugleichen.

Geringerer Stromverbrauch durch RCU-Callbacks (Read Copy Update)

Bei der Option RCU_LAZY wird eine timerbasierte RCU-Callback-Batching-Methode verwendet, um Strom zu sparen. Bei einem wenig ausgelasteten oder inaktiven System kann mit dieser Option der Stromverbrauch um 5% bis 10 % gesenkt werden.

Bessere ZRAM-Arbeitsspeicherkomprimierung

Mit der neuen CONFIG_ZRAM_MULTI_COMP-Build-Einstellung können Seiten mit ZRAM mit einem von drei alternativen Algorithmen neu komprimiert werden. Durch diese erneute Komprimierung wird der komprimierte Arbeitsspeicher weiter verkleinert, sodass mehr freier Speicherplatz für aktive Aufgaben zur Verfügung steht.

Neue Funktionen in Kernel 6.1

In diesem Abschnitt werden die neuen Funktionen in Kernel 6.1 erläutert.

Schnellere Sicherheit mit Kernel Control Flow Integrity (KCFI)

KCFI ersetzt Control Flow Integrity (CFI) und führt zu geringeren Laufzeitkosten und keinen Build-Zeit-Kosten. Durch die geringeren Laufzeitkosten kann KCFI an mehr Stellen als CFI aktiviert werden, insbesondere an Tracepoints und Vendor-Hooks.

Neben KCFI bietet Kernel 6.1 mehrere Sicherheitsfunktionen, z. B. die strenge memcpy-Grenzenprüfung und Maßnahmen zur Abwehr von Straight-Line-Spekulationsangriffen.

Weitere Informationen zu KCFI finden Sie unter Kernel Control Flow Integrity.

Multi-Generational LRU (MGLRU)

MGLRU wurde in Kernel 6.1 eingefügt, um die Speicherverwaltung zu verbessern, indem besser ermittelt wird, welche Seiten tatsächlich verwendet werden. Durch diese Verbesserung müssen Apps nicht mehr beendet werden, wenn das System einen Arbeitsspeichermangel aufweist. Dieses Update verbessert auch die Nutzerfreundlichkeit, da die Reaktionsfähigkeit des Geräts insgesamt besser ist.

Die Implementierung von MGLRU umfasst auch die Unterstützung für einen neuen RCU-sicheren Maple-Baum, der in einigen Fällen verwendet werden kann, um den Rot-Schwarz-Baum (rbtree) zu ersetzen. Bei Verwendung erhöht der RCU-sichere Maple-Baum die Leistung aufgrund seines geringeren Speicherbedarfs und der Tatsache, dass keine Sperren erforderlich sind.

Weitere Informationen zu MGLRU finden Sie unter Multi-Gen LRU.

Planung

Die Wartung und Aktualisierung des Schedulers ist ein wichtiger Aspekt der Arbeit zur Verbesserung des Kernels. Kernel-Updates in Version 6.1:

  • Es wurde ein clusterbewusstes Scheduling hinzugefügt, das die Leistung durch die Migration zu Kernen mit gemeinsamem L2-Cache steigert.
  • Die unnötige Heuristik für die Energiereserve wurde entfernt. Durch die Einschränkung einiger Migrationen wird die Energieauslastung durch dieses Update um bis zu 5 % verbessert.
  • Verbessertes Load-Balancing zur Reduzierung der Aktivierungslatenz.
  • Die Kulanzzeiträume für die beschleunigte RCU-Bereinigung wurden in einen Echtzeit-Kernel-Thread verschoben. Durch dieses Update wurden RCU-bedingte Latenzausreißer deutlich reduziert.

Grafik

Kernel 6.1 enthält neue Methoden für „dma-buf“ zum Exportieren und Importieren von Synchronisationsdateien, die den Anforderungen der Vulcan Video API entsprechen.

Die neue Methode futex_waitv() vereinfacht die Portierung von Spielen von anderen Plattformen, da sie auf mehrere Futexe gleichzeitig wartet.

Tools zur Fehlerbehebung

Verwenden Sie den Kernel Concurrency SANitizer (KCSAN) in Debug-Builds, um Race Conditions im Kernelcode zu erkennen.

Verwenden Sie außerdem den Kernel Memory SANitizer (KMSAN), um nicht initialisierte Werte im Kernel zu finden.

Verbesserungen bei der ARM64-Unterstützung

Der 6.1-Kernel bietet mehrere Verbesserungen für die ARM64-Architektur, darunter:

  • Unterstützung für die ARMv8.6-Timererweiterungen
  • Unterstützung des QARMA3-Algorithmus für die Zeigerauthentifizierung
  • Erste Unterstützung für ARMv9 Scalable Matrix Extension (SME)
  • Verbesserungen beim Patchen von Alternativen, was zu einer kleineren Kernel-Image-Größe führt