Kernel-Log – Was 3.2 bringt (3): Architektur-Code | heise online

Kernel-Log – Was 3.2 bringt (3): Architektur-Code

Optimierte Assembler-Codepfade beschleunigen SHA1 und die Verschlüsselungs-Algorithmen Blowfish und Twofish. Der Linux-Kernel 3.2 umschifft ferner ein Cache-Problem der neuesten AMD-Prozessoren und bringt neue und erweiterte Treiber für Intel-CPUs mit.

vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 16 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Dem üblichen Wochenrhythmus folgend gab Linus Torvalds am Freitag vergangener Woche die vierte Vorabversion von Linux 3.2 frei. Sie sei kleiner als die beiden vorangegangenen Vorabversionen und es würde langsam ruhiger; Torvalds deutete sogar an, es sei verdächtig ruhig.

Mit der fortschreitenden Entwicklung von Linux 3.2 will auch das Kernel-Log die Mini-Serie "Was 3.2 bringt" fortsetzen. Nach der Beschreibung der Neuerungen rund um Netzwerk-Treiber und -Infrastruktur sowie denen bei Dateisystemen folgen nun die mit Bezug zu Architektur- und Prozessor-Unterstützung; für die kommenden Wochen sind Artikel zur Kernel-Infrastruktur und Treibern geplant.

Eine zusätzliche SHA1-Implementierung für x86-64-CPUs soll der Hash-Algorithmus durch den Einsatz von SSE3- oder AVX-Befehlen einen höheren Durchsatz erzielen; laut Messungen des Entwicklers habe sie den Durchsatz bei Messungen mit einer IPSec-Verbindung auf einem Core 2 Quad von 344 auf 464 Mbit/s gesteigert.

Der Blowfish-Code erhielt eine x86-64-Assembler-Implementation, der Twofish-Code eine ebenfalls in Assembler für x86-64-Systeme realisierte 3-Wege-Parallel-Implementation. Beide sollen das Ver- und Entschlüsseln mit den genannten Mechanismen erheblich beschleunigen, wie Messwerte in den Commit-Kommentaren zeigen; das Entschlüsseln mit Blowfish etwa soll in bestimmten Fällen zwei bis zweieinhalb Mal schneller erfolgen.

Durch einige Patches (u. a. 1) umschifft Linux 3.2 eine Eigenart des L1-Instruktioncaches in AMDs Bulldozer-Prozessoren, die bei bestimmten Arbeitsszenarien zu Performance-Einbußen führt. Diese Patches sind auch als Korrekturen für Stable-Kernel der Serien 3.0 und 3.1 eingereicht (1, 2), wurden dort aber bislang nicht integriert.

Neu ist auch Unterstützung für den über die x86-Instruktion RDRAND ansprechbaren Zufallszahlengenerator der Ivy-Bridge-CPUs, die Intel im nächsten Jahr als Sandy-Bridge-Nachfolger einführen will (1, 2, 3). Zum Subsystem für EDAC (Error Detection And Correction) stieß ein experimenteller neuer Treiber für Intels Sandy-Bridge-EP-Prozessoren (1, 2, 3). Der Treiber i7core_edac bietet nun auch Unterstützung zum Beeinflussen der Scrub-Rate des Arbeitsspeichers.

Linux arbeitet nun auch auf Qualcomms Hexagon-CPU-Architektur (u. a. 1, 2). Einige Hintergründe zu dieser liefert LWN.net im Artikel "Upcoming DSP architectures"; die dort ebenfalls erwähnte Unterstützung für die C6X-Architektur wurde nicht aufgenommen, dürfte jedoch bei Version 3.3 folgen.

  • Der Zeitgeber-Treiber für Micosofts Virtualisierungstechnik Hyper-V zog vom Staging-Bereich in den x86-Architektur-Code um. Auch einige andere Treiber für Kern-Techniken von Hyper-V konnten nach zahlreichen Verbesserungen durch Microsoft-Programmierer nun die Staging-Einstufung ablegen. Die Hyper-V-Treiber für die emulierte Pointer-, Netzwerk- und Storage-Hardware bleiben vorerst noch im Staging-Bereich, dürften diesen aber mit Linux 3.3 verlassen.
  • Die seit einigen Monaten vorangetriebenen Umstrukturierung und Aufräumarbeiten im ARM-Code gingen weiter voran. Über die neuen Sub-Architekturen Highbank und Picoxcell spricht der Kernel die gleichnamigen Chipfamilien an. Neu ist auch Unterstützung für die SOC-Familie imx6q (u. a. 1, 2), den Denx MX28 und Boards mit dem Omicron ixp425.
  • Unter den Änderungen am Code für Power/PowerPC-Prozessoren ist Unterstützung (u. a. 1) für die "Power 'Non Virtualized' Platform". Einige neuere Systeme bieten diese PowerNV genannte Betriebsart, bei der Linux nicht unter einem Hypervisor läuft, sondern selbst mit KVM virtualisiert.
  • Am Code für User-Mode-Linux (UML) gab es eine Reihe Aufräum- und Umbauarbeiten.

Viele kleinere, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs auf Kernel.org, der die gemeinhin als "offiziell" bezeichneten Kernel-Quellen enthält. Der über diese Links angezeigte Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderung.

Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien; diese enthalten die Konfigurationsoptionen samt der zugehörigen Hilfetexte, die bei der Kernel-Konfiguration über "make menuconfig" oder "make xconfig" angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" kennzeichnet Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.

x86

ARM

PPC

Various

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl) (thl)