Auf dieser Seite werden die wichtigsten Funktionen der einzelnen Kernelversionen zusammengefasst und es werden Links zu zusätzlichen Informationen bereitgestellt.
Neue Funktionen von Kernel 6.12
In diesem Abschnitt werden die neuen Funktionen von Kernel 6.12 beschrieben.
Profiling der Arbeitsspeicherzuweisung
Um die Arbeitsspeichernutzung zu verstehen, ist es wichtig zu wissen, wo Zuweisungen vorgenommen werden.
Der Kernel 6.12 enthält ein neues Attributionssystem für die Speicherzuweisung namens Profilierung der Speicherzuweisung (CONFIG_MEM_ALLOC_PROFILING
in der Konfiguration).
Beim Profiling der Speicherzuweisung wird jeder Zuweisung eine eindeutige Quellzeile zugeordnet, damit Probleme mit Zuweisungen schnell erkannt werden können.
Außerdem bietet das Profiling der Arbeitsspeicherzuweisung folgende Vorteile:
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 Kernel- als auch für geladene Module.
Schnelleres io_uring mit Zero-Copy- und Multishot-Lesezugriff
Im Kernel 6.12 verwenden die statsd
- und logd
-Module Sendfile Zero-Copy, um die Leistung zu verbessern.
Außerdem wird in dieser Kernelversion die Multishot-Lesefunktion implementiert, bei der mit einem einzigen Lesevorgang mehrere Daten gleichzeitig abgerufen werden können, was die Leistung verbessert.
Verbesserte Funktionen und Unterstützung für Berkeley Packet Filter (BPF)
Im Kernel 6.12 wurde die BPF-Toolchain so geändert, dass sie CO-RE und mehrere moderne Funktionen unterstützt. Außerdem ermöglicht ein neuer BPF-Ladeprogramm die Verwendung moderner BPF für Programme, die Teil von AOSP sind.
Proxy-Ausführung
Bei 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 verringert Probleme mit Prioritätsumkehrung.
Neue Funktionen von Kernel 6.6
In diesem Abschnitt werden die neuen Funktionen von Kernel 6.6 beschrieben.
Rust-Unterstützung
Für mehrere Kernel 6.6-Projekte wird Rust verwendet.
Sperren pro virtuellem Speicherbereich (VMA)
Kernel 6.6 verwendet Sperren pro virtuellem Speicherbereich, um Probleme mit mmap_sem
(früher mmap_lock
) zu beheben. Bei Apps mit einer großen Anzahl von Threads können sich die Startzeiten so um bis zu 20 % verkürzen.
Der Earliest Eligible Virtual Deadline First (EEVDF)-Scheduler ersetzt den CFS
Der EEVDF ersetzt den Completely Fair Scheduler (CFS), um den CPU-Zugriff zwischen kurzen und lang laufenden Aufgaben besser auszubalancieren.
Reduzierter Energieverbrauch durch RCU-Callbacks (Read Copy Update)
Bei der Option RCU_LAZY
wird eine timerbasierte Batch-Methode für RCU-Callbacks verwendet, um Strom zu sparen. Bei einem nur gering ausgelasteten oder inaktiv stehenden System kann diese Option den Stromverbrauch um 5 bis 10 % senken.
Bessere ZRAM-Arbeitsspeicherkomprimierung
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 Arbeitsspeicher weiter verkleinert, wodurch mehr freier Speicherplatz für aktive Aufgaben zur Verfügung steht.
Neue Funktionen von Kernel 6.1
In diesem Abschnitt werden die neuen Funktionen von Kernel 6.1 beschrieben.
Schnellere Sicherheit mit Kernel Control Flow Integrity (KCFI)
KCFI ersetzt die Control Flow Integrity (CFI), was zu geringeren Laufzeitkosten und keinen Buildzeitkosten führt. Durch die reduzierten Laufzeitkosten kann KCFI an mehr Stellen als CFI aktiviert werden, insbesondere bei Tracepoints und Anbieter-Hooks.
Neben KCFI führt Kernel 6.1 mehrere Sicherheitsfunktionen ein, z. B. strenge memcpy
-Grenzprüfungen und Mitigations für lineare Spekulationsangriffe.
Weitere Informationen zu KCFI finden Sie unter Kernel Control Flow Integrity.
Mehrgenerationen-LRU (MGLRU)
MGLRU wurde dem Kernel 6.1 hinzugefügt, um die Arbeitsspeicherverwaltung zu verbessern, indem besser erkannt wird, welche Seiten tatsächlich verwendet werden. Durch diese Verbesserung müssen Apps seltener angehalten werden, wenn der Arbeitsspeicher des Systems knapp wird. Dieses Update verbessert auch die Nutzerfreundlichkeit, da die Gerätereaktion insgesamt besser ist.
Die Implementierung von MGLRU umfasst auch die Unterstützung eines neuen RCU-sicheren Maple-Baums, der in einigen Fällen den Rot-Schwarz-Baum (RBT) ersetzen kann. Durch die 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.
Planung
Die Pflege und Aktualisierung des Schedulers ist ein wichtiger Aspekt bei der Verbesserung des Kernels. Zu den Kernel-Updates in 6.1 gehören:
- Clusterbasierte Planung hinzugefügt, die die Leistung durch die Migration zu Kernen mit gemeinsamem L2-Cache erhöht
- Unnötige Heuristik für die Energiemarge entfernt. Durch die Einschränkung einiger Migrationen wird die Energienutzung um bis zu 5 % verbessert.
- Verbessertes Load Balancing zur Verringerung der Aufwachlatenz.
- Die beschleunigten Kulanzzeitraume der RCU wurden in einen Echtzeit-kthread verschoben. Durch dieses Update wurden RCU-bezogene Latenz-Ausbrüche stark reduziert.
Grafik
Kernel 6.1 enthält neue Methoden für dma-buf zum Exportieren und Importieren von Synchronisierungsdateien, die den Anforderungen der Vulcan Video API entsprechen.
Die neue futex_waitv()
-Methode vereinfacht das Portieren von Spielen von anderen Plattformen, da mehrere Semaphoren gleichzeitig gewartet werden.
Debugging-Tools
Verwenden Sie den Kernel Concurrency SANitizer (KCSAN) in Debug-Builds, um Race-Zustände im Kernelcode zu identifizieren.
Außerdem können Sie den Kernel Memory SANitizer (KMSAN) verwenden, um nicht initialisierte Werte im Kernel zu finden.
Verbesserungen bei der ARM64-Unterstützung
Der Kernel 6.1 bietet mehrere Verbesserungen für die ARM64-Architektur, darunter:
- Unterstützung der ARMv8.6-Timererweiterungen
- Unterstützung für den Pointer-Authentifizierungsalgorithmus QARMA3
- Erste Unterstützung für ARMv9 Scalable Matrix Extension (SME)
- Verbesserungen beim Patchen alternativer Funktionen, was zu einer kleineren Kernel-Image-Größe führt