Auf dieser Seite sind die wichtigsten Funktionen der einzelnen Kernel-Releases zusammengefasst. Außerdem finden Sie hier Links zu weiteren Informationen.
Neue Funktionen in Kernel 6.12
In diesem Abschnitt werden die neuen Funktionen in Kernel 6.12 erläutert.
Profilerstellung für die Arbeitsspeicherzuweisung
Um die Arbeitsspeichernutzung zu verstehen, müssen Sie wissen, wo Zuweisungen vorgenommen werden.
Kernel 6.12 enthält ein neues System zur Zuordnung der Arbeitsspeicherzuweisung namens Profilerstellung für die Arbeitsspeicherzuweisung (CONFIG_MEM_ALLOC_PROFILING in der Konfiguration).
Mit der Profilerstellung für die Arbeitsspeicherzuweisung wird jede Zuweisung einer eindeutigen Quellzeile zugeordnet, sodass Probleme mit Zuweisungen schnell erkannt werden können.
Außerdem bietet die Profilerstellung für die Arbeitsspeicherzuweisung folgende Vorteile:
Sie wird in der Entwicklungsphase verwendet, ist aber im Standard-GKI-Image verfügbar.
Sie kann mit dem Bootparameter
sysctl.vm.mem_profilingaktiviert werden.Sie funktioniert sowohl für In-Kernel- als auch für geladene Module.
Schnellere io_uring mit Zero-Copy und Multishot-Lesevorgängen
In Kernel 6.12 verwenden die Module statsd und logd Sendfile-Zero-Copy, was ihre Leistung verbessert.
Außerdem implementiert diese Kernel-Version Multishot-Lesevorgänge, bei denen mit einem einzigen Lesevorgang mehrere Daten gleichzeitig abgerufen werden können, was die Leistung verbessert.
Verbesserte Berkeley Packet Filter (BPF)-Funktionen und -Unterstützung
In 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
Mit der Proxy-Ausführung kann der Scheduler CPU-Zyklen von Prozessen mit hoher Priorität ausleihen, um Sperren wiederherzustellen, die von Prozessen mit niedrigerer Priorität gehalten werden. Diese Funktion mindert Probleme mit der Prioritätsumkehr.
Neue Funktionen in Kernel 6.6
In diesem Abschnitt werden die neuen Funktionen in Kernel 6.6 erläutert.
Rust-Unterstützung
Mehrere Kernel 6.6-Projekte verwenden Rust.
Sperren pro virtuellem Speicherbereich (VMA)
Kernel 6.6 verwendet Sperren pro virtuellem Speicherbereich, um Konfliktprobleme mit mmap_lock (früher mmap_sem) 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.
Reduzierter Stromverbrauch durch RCU-Callbacks (Read Copy Update)
Die Option RCU_LAZY verwendet eine timerbasierte RCU-Callback-Batching-Methode, um Strom zu sparen. Bei einem gering ausgelasteten oder im Leerlauf befindlichen System kann diese Option den Stromverbrauch um 5 bis 10 % senken.
Bessere ZRAM-Speicherkomprimierung
Mit der neuen Build-Einstellung CONFIG_ZRAM_MULTI_COMP kann ZRAM Seiten mit einem von drei alternativen Algorithmen neu komprimieren. Durch diese erneute Komprimierung wird der komprimierte Speicher weiter verkleinert, wodurch 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 KCFI (Kernel Control Flow Integrity)
KCFI ersetzt CFI (Control Flow Integrity), was zu geringeren Laufzeitkosten und keinen Build-Kosten führt. Aufgrund der 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. eine strenge memcpy-Grenzenprüfung und Maßnahmen zur Eindämmung von Straight-Line-Spekulationsangriffen.
Weitere Informationen zu KCFI finden Sie unter Kernel Control Flow Integrity.
MGLRU (Multi-Generational LRU)
MGLRU wurde Kernel 6.1 hinzugefügt, um die Arbeitsspeicherverwaltung zu verbessern, indem besser ermittelt wird, welche Seiten tatsächlich verwendet werden. Durch diese Verbesserung müssen Apps nicht mehr angehalten werden, wenn der Arbeitsspeicher des Systems knapp wird. 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 den Rot-Schwarz-Baum (rbtree) ersetzen kann. Bei Verwendung des RCU-sicheren Maple-Baums wird die Leistung aufgrund des geringeren Speicherbedarfs und der Sperrfreiheit erhöht.
Weitere Informationen zu MGLRU finden Sie unter Multi-Gen LRU.
Wird geplant
Die Wartung und Aktualisierung des Schedulers ist ein wichtiger Aspekt der Arbeit zur Verbesserung des Kernels. Kernel-Updates in 6.1 umfassen:
- Cluster-aware Scheduling wurde hinzugefügt, was die Leistung durch die Migration zu Kernen erhöht, die den L2-Cache gemeinsam nutzen.
- Die unnötige Heuristik für die Energiemarge wurde entfernt. Durch die Begrenzung einiger Migrationen verbessert dieses Update die Energieausnutzung um bis zu 5%.
- Das Load-Balancing wurde verbessert, um die Aufwachlatenz zu verringern.
- Die beschleunigten RCU-Grace-Perioden wurden zu einem Echtzeit-Kthread verschoben. Dieses Update hat die RCU-bedingten Latenz-Ausreißer erheblich reduziert.
Grafik
Kernel 6.1 enthält neue Methoden für dma-buf zum Exportieren und Importieren von Synchronisationsdateien, die mit den Anforderungen der Vulcan Video API übereinstimmen.
Die neue Methode futex_waitv() vereinfacht die Portierung von Spielen von anderen Plattformen, da sie gleichzeitig auf mehrere Futexe wartet.
Debugging-Tools
Verwenden Sie den Kernel Concurrency SANitizer (KCSAN) in Debug-Builds, um Race Conditions im Kernel-Code zu erkennen.
Verwenden Sie außerdem den Kernel Memory SANitizer (KMSAN), um nicht initialisierte Werte im Kernel zu finden.
Verbesserungen 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 für den QARMA3-Algorithmus zur Zeigerauthentifizierung
- Erste Unterstützung für die ARMv9 Scalable Matrix Extension (SME)
- Verbesserungen beim Patchen von Alternativen, was zu einer kleineren Kernel-Image-Größe führt