Optimierungen am Kernel: Google will Android-Smartphones schneller machen

Google will Android durch Optimierungen am Kernel schneller und effizienter machen. Nutzer sollen damit reaktionsschnellere Geräte mit mehr Laufzeit erhalten.

vorlesen Druckansicht 6 Kommentare lesen
Android Schriftzug auf dfem MWC Gelände in Barclona

(Bild: Andreas Floemer / heise medien)

Lesezeit: 3 Min.
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Google führt einen neuen Optimierungstrick ein, um den Linux-Kernel von Android schneller laufen zu lassen. Dazu analysiert das System, wie Smartphone und Apps im Alltag genutzt werden und organisiert dann den Code von Android neu. Damit sollen die am häufigsten verwendeten Komponenten effizienter laufen. Dafür wird das Android LLVM-Toolchain-Team (LLVM stand ehemals für Low Level Virtual Machine) die automatische feedback-gesteuerte Optimierung (AutoFDO) in den Kernel integrieren.

Das LLVM-Toolchain-Team erklärt in einem Blogbeitrag im Android-Developers-Blog, dass der LLVM-Compiler bei einer Standard-Softwareerstellung Tausende kleiner Entscheidungen treffe, „beispielsweise ob eine Funktion inline ausgeführt werden soll und welcher Zweig einer Bedingung wahrscheinlich genommen wird, basierend auf statischen Codehinweisen“. Diese Heuristiken seien zwar nützlich, so die Entwickler, „sie sagen jedoch nicht immer die Codeausführung während der tatsächlichen Nutzung des Telefons genau voraus“.

Videos by heise

AutoFDO verwende dafür hingegen reale Ausführungsmuster, um den Compiler zu steuern. Laut Google stellen die Muster „die häufigsten Befehlsausführungspfade dar, die der Code während der tatsächlichen Nutzung nimmt, und werden durch Aufzeichnung der Verzweigungshistorie der CPU erfasst“. Weiter heißt es, dass diese Daten zwar von Flottengeräten gesammelt werden können, Google synthetisiere diese bei der Entwicklung für den Kernel in einer Laborumgebung unter Verwendung repräsentativer Workloads, wie etwa der Ausführung der 100 beliebtesten Apps.

Dabei verwende das LLVM-Toolchain-Team einen Sampling-Profiler, um diese Daten zu erfassen und zu identifizieren, welche Teile des Codes häufig und welche weniger oft genutzt werden. „Wenn wir den Kernel mit diesen Profilen neu erstellen, kann der Compiler viel intelligentere Optimierungsentscheidungen treffen, die auf die tatsächlichen Android-Workloads zugeschnitten sind“, so Google.

Google verfolge bei der Technik eine „standardmäßig konservative“ Strategie, womit der Hersteller sicherstellen möchte, dass AutoFDO die Geschwindigkeit verbessere, ohne dabei Kompromisse in anderen Bereichen wie der Zuverlässigkeit einzugehen.

Die Vorteile des Verfahrens sind laut Google klar messbar: Interne Tests auf Pixel-Geräten zeigten eine Reduktion der Bootzeit des Betriebssystems um ein Prozent und eine Verbesserung beim Kaltstart von Apps um rund vier Prozent. Diese Änderungen führen in der Praxis zu einer „flüssigeren Benutzeroberfläche, schnellerem App-Wechsel, längerer Akkulaufzeit und insgesamt zu einem reaktionsschnelleren Gerät für den Endbenutzer“, führt Google aus.

AutoFDO soll das Android-System beschleunigen.

(Bild: Google)

Der Android-Kernel ist einer der wichtigsten Bestandteile von Googles mobilem Betriebssystem. Er bildet gewissermaßen das Herzstück von Android und steuert die Kommunikation zwischen CPU, Apps und der Hardware. Google zufolge macht der Kernel etwa 40 Prozent der CPU-Rechenzeit auf Android-Geräten aus. Entsprechend können schon kleinere Optimierungen einen Einfluss auf die Leistung eines Smartphones haben.

AutoFDO wird derzeit über das Generic-Kernel-Image in den Kernel-Zweigen android16-6.12 (Linux-Kernel 6.12 für Android 16) und android15-6.6 bereitgestellt. Die Unterstützung soll auch auf neuere GKI-Versionen ausgeweitet werden, wie beispielsweise die kommende Version android17-6.18. Google ist außerdem daran interessiert, AutoFDO auf Herstellermodule auszuweiten, die mit dem Driver Development Kit (DDK) erstellt wurden. Das „Generic Kernel Image“ wurde mit Android 11 eingeführt und soll die Kernel-Fragmentierung beheben.

(afl)