Auf der Linux Plumbers Conference 2020 sprachen Microsoft-Entwickler über ihr experimentelles Projekt - die Optimierung des Linux-Kernels für ARM-Serverprozessoren. Jan Birman, Chief Software Development Manager, hielt eine Präsentation.
Nach Angaben des Spezialisten startete das Projekt auf internen Wunsch des Unternehmens. Linux wird bereits in Projekten wie Azure Cloud, Azure Sphere und Windows Subsystem für Linux verwendet. Biermans Team wurde beauftragt, die Leistung von Cloud-Diensten unter Linux mithilfe von 64-Bit-ARM- oder x86-Prozessoren zu maximieren. Die Entwickler durften den Kernel für das Betriebssystem mit eigenen Parametern und Flags kompilieren.
Die ursprüngliche Distribution ist Ubuntu 19.10 mit vorinstalliertem GCC 9.2.1, binutils 2.33 und Kernel 5.3. Serverprozessor - 64-Bit-ARM Marvell Thunder X2. Nach dem Brainstorming entschied sich das Team, LTO- und PGO-Optimierungen zum Erstellen des Kernels zu verwenden.
Die Profiloptimierung (PGO oder FDO) und die Optimierung der Kommunikationszeit (LTO oder LTCG) verlangsamen den Erstellungsprozess erheblich und erfordern mehr RAM, damit der Compiler funktioniert. Theoretisch erhöhen sie jedoch die Befehlsausführungsgeschwindigkeit um 10 bis 20%. PGO wird von Entwicklern selten verwendet, und LTO wurde kürzlich zum Erstellen von Kerneln und anderen Paketen verwendet. Zuvor waren Entwickler aufgrund von Kompatibilitätsproblemen bei den GCC- und LLVM-Compilern vorsichtig bei der Optimierung der Verbindungszeit. Das Team von Birman wandte sich an den erfahrenen Linux-Kernel-Entwickler Andy Kleen, der einen Patch veröffentlichte, mit dem LTO ordnungsgemäß mit ARM-Prozessoren funktioniert. Damit PGO funktioniert, haben die Entwickler die Dokumentation untersucht und durch Ausprobieren stabilisiert.
Nach Abschluss des Kernel-Builds testete das Team die Leistung auf dem Open Source Redis NoSQL-residenten Datenbankverwaltungssystem. Nach der Ausführung verschiedener Befehle meldeten die Entwickler eine Erhöhung der Geschwindigkeit der Befehlsausführung um 5-20%. Daten aus dem internen Redis-Benchmark-Test.
Übrigens hat Microsoft vor nicht allzu langer Zeit das Update KB4566116 für Windows 10 veröffentlicht. Das Update bietet Unterstützung für das Windows-Subsystem für Linux 2 (WSL 2) in den Versionen 1909 und 1903 des Betriebssystems. Dies ermöglicht die Verwendung eines vollwertigen Linux-Kernels. In WSL2 ist es standardmäßig nicht Teil von Windows, wird jedoch dynamisch geladen und mithilfe der im Betriebssystem integrierten Tools aktualisiert.