zurück zum Artikel

Die Neuerungen von Linux 3.6

| Thorsten Leemhuis

Der Kernel 3.6 beherrscht hybriden Schlaf, kann PCIe-Chips die Stromzufuhr abklemmen und bringt ein neues Framework für Userspace-Treiber. Dazu kommen verbesserte Netzwerkfunktionen, Quota- und Backup-Funktionen für Btrfs und neue Treiber.

Zehn Wochen haben Linus Torvalds und seine Mitstreiter für die Entwicklung der jetzt erhältlichen [1] Linux-Version 3.6 gebraucht. Der kürzlich "Terrified Chipmunk [2]" getaufte [3] Kernel bringt wieder eine Reihe wichtiger Neuerungen.

Mehr Infos

Im Detail

Bereits in den vergangenen Wochen hat das Kernel-Log [6] in der Serie "Was Linux 3.6 bringt" detailliert über die Neuerungen von Linux 3.6 berichtet:

  1. Dateisysteme und Storage [7]
  2. Netzwerk-Treiber und -Infrastruktur [8]
  3. Architektur-Code [9]
  4. Treiber [10]
  5. Infrastruktur [11]

Der nebenstehende Text fasst die wichtigsten Neuerungen dieser Artikel zusammen und gibt einen Ausblick auf den Kernel 3.7.

Dank Suspend to Both [12] beherrscht der Linux-Kernel 3.6 hybrides Standby. Mac OS X und Windows bieten solch eine Funktion schon länger, bei der Rechner den Speicherinhalt sowohl im Arbeitsspeicher vorhält als auch vor dem Einschlafen auf den Systemdatenträger schreibt. Normalerweise wacht ein so schlafendes System dann wie aus dem Suspend-to-RAM (ACPI S3) innerhalb von Sekunden auf; wurde während des Rechnerschlafs jedoch die Stromversorgung unterbrochen, etwa weil der Notebook-Akku zur Neige ging, restauriert das System den Hauptspeicherinhalt wie nach einem Suspend-to-Disk (Hibernate/Ruhezustand) vom Datenträger.

Auf einem etwas älteren Testsystem mit 250-GByte-Festplatte arbeitete Suspend-to-Both im Kurztest wie gedacht. Das Schlafenlegen dauerte wie der Suspend-to-Disk rund 16 Sekunden und damit viermal so lange wie der Wechsel in den Suspend-to-RAM.

Der Linux-Kernel 3.6 kann zudem PCIe-Geräte in den Tiefschlafzustand "D3cold" schicken, den manche modernen Rechner unterstützten, um die Stromversorgung einzelner PCIe-Geräte komplett zu unterbrechen, wenn diese nicht benötigt werden (1 [13], 2 [14], 3 [15]).

Das weiterhin experimentelle Btrfs-Dateisystem unterstützt nun Quotas für Subvolumes [17]; damit lässt sich reglementieren, wie viel Platz Nutzer in einem Subvolume maximal belegen dürfen (u. a. 1 [18], 2 [19]). Eine weitere Btrfs-Neuerung ist send/receive [20]. Über diese Schnittstellen können Userspace-Programme die Unterschiede zwischen zwei Snapshots bestimmen und in einer Datei sichern beziehungsweise solche Sicherungen bei Bedarf zurückspielen; das ist vor allem für inkrementelle, atomare Backups interessant. Einige weitere Erläuterungen zu dieser auch von ZFS gebotenen Funktion [21] liefert ein LWN.net-Artikel [22].

Schon von 1996 stammt die Grundidee für eine mit Linux 3.6 umgesetzte Funktion [23], keinen Hard- und Softlinks in Verzeichnissen mit Sticky-Bit (etwa /tmp/) zu folgen, die in übergeordnete Verzeichnisse führen. Wie LWN.net in einem Artikel [24] erläutert, unterbindet diese via Sysctl einschaltbare Funktion einen Trick, den Angreifer häufig einsetzen, um sich über Hintergrunddienste mit root-Rechten höhere Rechte zu verschaffen.

Über eine neue Schnittstelle [26] können Userspace-Programme dem Kernel mitteilen [27], wenn sich die Größe einer verwendeten Partition ändert; dadurch kann der Kernel nun auch bei eingehängten oder anderweitig verwendeten Partitionen zur Laufzeit von Größenänderungen erfahren und die neuen Gegebenheiten fortan nutzen. Das Programm Resizepart wird die neue Kernel-Schnittstelle nutzen; es wurde in die zweite Vorabversion von Util-Linux 2.22-rc2 integriert [28], die kürzlich erschienen ist [29].

Änderungen [30] am Software-RAID-Code des MD-Subsystems sollen die Performance von RAIDs verbessern, bei denen einige oder alle Datenträger SSDs sind. Die Kernel-Entwickler haben zudem den vorerst als Staging-Code markierten Fabric-Treiber tcm_vhost integriert [31], mit dem sich SCSI-Geräte eines Wirtssystems ohne viel Overhead in mit KVM virtualisierten Gastsystemen nutzen lassen [32].

KVM erhielt einige Änderungen, um den mit der Interrupt-Verarbeitung verbundenen Arbeitsaufwand zu reduzieren und so die Performance zu steigern (1 [34], 2 [35], 3 [36]). Zum Kernel stießen [37] ferner die IOMMU Groups [38], die Verbesserungen zur Isolation von PCI- und PCIe-Geräten bringen und dazu auf I/O-Virtualisierungstechniken wie AMD-Vi [39] oder Intels VT-d [40] zurückgreifen.

Auf die IOMMU-Gruppierfunktion baut das ebenfalls integrierte Userspace-Treiber-Framework Userspace-Treiber-Framework VFIO [41] (Virtual Function I/O) auf (1 [42], 2 [43], 3 [44]); es ist vornehmlich für KVM gedacht, um PCI- und PCIe-Geräte an Gäste durchzureichen, damit diese die Geräte mit geringen Latenzen, hohem Datendurchsatz und ohne Gefahr für den Host ansprechen können. Details zu VFIO erläutern die zugehörige Dokumentation [45] und ein Artikel bei LWN.net [46]. Erweiterungen zur Nutzung von VFIO mit Hilfe von Qemu sind noch in Entwicklung [47].

Durch "TCP small queues [49]" (TSQ) nutzt Linux 3.6 pro Netzwerksocket standardmäßig nur mehr 128 KByte kleine Puffer [50]. Ähnlich wie einige [51] andere [52] jüngst vorgenommene Kernel-Änderungen soll auch diese zur Vermeidung von "Bufferbloat [53]" beitragen; der Begriff umschreibt Probleme wie hohe Netzwerklatenzen und Verbindungsabbrüche, die durch zu umfangreiches Puffern zu übertragender Daten entstehen. Die kleineren Zwischenspeicher pro Socket sollen den Durchsatz laut verschiedenen Messungen des zuständigen Entwicklers nicht beeinträchtigen [54]; Administratoren können den Wert allerdings bei Bedarf über die Datei /proc/sys/net/ipv4/tcp_limit_output_bytes zur Laufzeit anpassen.

In den Kernel ist zudem Client-Unterstützung für "TCP Fast Open [55]" (TFO) eingeflossen (u. a. 1 [56], 2 [57], 3 [58], 4 [59], 5 [60]); die Server-seitige Unterstützung soll bei Linux 3.7 folgen. TFO ist eine experimentelle, von der Internet Assigned Numbers Authority (IANA) noch nicht abgesegnete TCP-Erweiterung von Google, die den Overhead beim Verbindungsaufbau senken soll; das soll unter anderem HTTP-Verbindungen beschleunigen.

Die Kernel-Entwickler haben eine Reihe von Erweiterungen und Korrekturen für Linux 3.6 aufgenommen, die die Unterstützung für im Juli vorgestellte [63] MacBooks wie das MacBook Pro Retina verbessern. Noch sind aber nicht alle für diese Notebooks wichtigen Erweiterungen in Linux eingeflossen; bei einigen Modellen zeigt auch Linux 3.6 weiterhin Schwierigkeiten bei der Handhabung der Grafikhardware.

Der Radeon-Grafiktreiber aktiviert nun [64] die schnellsten Transfermodi von PCIe 2.0, sofern die Hardware diese beherrscht. Die Audio-Treiber unterstützten Intels Prozessoren der Haswell-Generation sowie die zugehörigen Platform Controller Hubs (PCHs) der Lynx-Point-Reihe, die Intel offenbar im nächsten Jahr einführen will. (1 [65], 2 [66]). Zum Input-Subsystem stieß ein Treiber [67] für das "ThinkPad USB Keyboard with Trackpoint" von Lenovo.

Der für einige Ethernet-Chips von Broadcom zuständige Treiber bnx2x unterstützt nun [68] das in IEEE 802.3az spezifizierte Energy-Efficient Ethernet [69] (EEE). Anwender können EEE-Parameter mit Hilfe der kürzlich veröffentlichten [70] Version 3.5 von Ethtool auslesen und setzen.

Btrfs macht wieder einen Schritt vorwärts und endlich gibt es auch für Linux ordentliche Unterstützung für hybrides Standby. Systemadministratoren können sich über die neue Schnittstellen für das Werkzeug Resizepart freuen, denn durch die braucht man nun nicht einmal mehr neu starten, wenn man die Größe verwendeter Partitionen ändert. Die Sicherheits-Verbesserungen für Soft- und Hardlinks beseitigen zudem endlich einen viel genutzten Angriffspunkt.

Direkt nach der Freigabe von Linux 3.6 beginnt nun das typischerweise zwei Wochen lange Merge Window [73], in dem die Kernel-Entwickler den Großteil der Änderungen für die darauf folgende Linux-Version in den Hauptentwicklungszweig [74] integrieren.

Zur Aufnahme liegen unter anderem größere Umbauten [75] am Intel-Grafiktreiber bereit, die den Code zum Einstellen der Bildschirmodi renovieren. Auch eine Grundsanierung [76] für den Nouveau-Treiber ist in Arbeit – bei ihr ist aber noch nicht absehbar, ob sie in Linux 3.7 einzieht. Letzteres gilt auch für die Unterstützung für die 64-Bit-ARM-Architektur Aarch64; LWN.net hat kürzlich von einer Diskussion berichtet [77], in der es einen Überblick über den Entwicklungsstand dieses Codes gab.

Das Kernel-Log [78] in c't [79] und auf heise open [80] wird wie üblich über diese und andere Neuerungen am Linux-Kernel und in dessen Umfeld berichten. Sofern Torvalds und seine Mitstreiter im üblichen Tempo arbeiten, dürfte Linux 3.7 Ende November oder Anfang Dezember erscheinen.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext²
(Ohne
Dokum.)
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
3.0 [82] 36781 14646952
(13688408)
64 Tage 9153 7946 files changed,
 555406 insertions(+),
 442033 deletions(-)
3.1 [83] 37084 14770469
(13804451)
94 Tage 8692 9181 files changed,
 728892 insertions(+),
 604658 deletions(-)
3.2 [84]
37617 14998651
(14017008)
73 Tage 11881 12608 files changed,
 1646421 insertions(+),
 1418238 deletions(-)
3.3 [85] 38082 15166074
(14173668)
74 Tage 10550 10698 files changed,
 599745 insertions(+),
 432324 deletions(-)
3.4 [86] 38566 15383860
(14370856)
63 Tage 10899 11086 files changed,
 576156 insertions(+),
 358369 deletions(-)
3.5 [87] 39096 15596378
(14556354)
62 Tage 10957 9631 files changed,
 623277 insertions(+),
 410757 deletions(-)
3.6 39733 15868036
(14811965)
71 Tage 10247 8296 files changed,
 527247 insertions(+),
 255597 deletions(-)
¹ find . -type f -not -regex '\./\.git/.*' | wc -l
² find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l (find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l)
³ git-log --no-merges --pretty=oneline v3.(x-1)..v3.(x) | wc -l
⁴ git diff --shortstat v3.(x-1)..v3.(x)
Mehr Infos

Linux 3.6 herunterladen

Der neue Kernel steht über Kernel.org zum Download [88] bereit; einige Stunden nach der Veröffentlichung liefern auch die Spiegelserver [89] diese Version aus. Den Quellcode gibt es in Tar-Archiven, die mit Gzip, Bzip2 und XZ komprimiert wurden. Mit Befehlen wie den folgenden lässt sich die Echtheit des Archivs nach dem Dekomprimieren über eine Signatur-Datei prüfen:

[thl@thl tmp]$ wget --quiet http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.tar.sign \
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.tar.xz
[thl@thl tmp]$ xz -d linux-3.1.tar.xz
[thl@thl tmp]$ gpg --verify linux-3.1.tar.sign
gpg: Unterschrift vom Mo 24 Okt 2011 09:17:58 CEST mittels RSA-Schlüssel ID 00411886
gpg: Korrekte Unterschrift von "Linus Torvalds <torvalds@linux-foundation.org>"
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg: Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck = ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs [90] auf heise open [91]. Neue Ausgaben des Kernel-Logs [92] werden auf den Identi.ca [93]- und Twitter [94]-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H Open [95]" erscheinenden Übersetzungen auf den Identi.ca [96]- und Twitter [97]-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige später meist auch im Kernel-Log erwähnte Themen als "@kernellogauthor" bei Identi.ca [98] und Twitter [99]. (thl [100]) (thl [101])


URL dieses Artikels:
https://www.heise.de/-1714142

Links in diesem Artikel:
[1] http://thread.gmane.org/gmane.linux.kernel/1367467
[2] https://plus.google.com/+LinusTorvalds/posts/4tWgzbhGX2m
[3] http://git.kernel.org/linus/979570e02981d4a8fc20b3cc8fd651856c98ee9d
[4] 
[5] 
[6] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[7] https://www.heise.de/hintergrund/Kernel-Log-Was-3-6-bringt-1-Dateisysteme-und-Storage-1671225.html
[8] https://www.heise.de/hintergrund/Kernel-Log-Was-3-6-bringt-2-Netzwerk-1697525.html
[9] https://www.heise.de/hintergrund/Kernel-Log-Was-3-6-bringt-3-Architektur-1708126.html
[10] https://www.heise.de/hintergrund/Kernel-Log-Was-3-6-bringt-4-Treiber-1710392.html
[11] https://www.heise.de/hintergrund/Kernel-Log-Was-3-6-bringt-5-Infrastruktur-1711755.html
[12] http://git.kernel.org/linus/62c552ccc3eda1198632a4f344aa32623d226bab
[13] http://git.kernel.org/linus/448bd857d48e69b33ef323739dc6d8ca20d4cda7
[14] http://git.kernel.org/linus/71a83bd727cc31c5fe960c3758cb396267ff710e
[15] http://git.kernel.org/linus/4f9c1397e2e80e52b17ec4e39760caa807bd15c7
[16] 
[17] https://www.heise.de/tests/Das-Dateisystem-Btrfs-221863.html
[18] http://git.kernel.org/linus/8ea05e3a4262b9e6871c349fa3486bcfc72ffd1a
[19] http://git.kernel.org/linus/bcef60f249034f69e89e544461cbfecb68975595
[20] http://git.kernel.org/linus/31db9f7c23fbf7e95026143f79645de6507b583b
[21] http://docs.oracle.com/cd/E19963-01/html/821-1448/gbchx.html
[22] http://lwn.net/Articles/506244/
[23] http://git.kernel.org/linus/800179c9b8a1e796e441674776d11cd4c05d61d7
[24] http://lwn.net/Articles/503660/
[25] 
[26] http://git.kernel.org/linus/c83f6bf98dc1f1a194118b3830706cebbebda8c4
[27] http://thread.gmane.org/gmane.linux.kernel/1325114
[28] http://www.kernel.org/pub/linux/utils/util-linux/v2.22/v2.22-rc2-ChangeLog
[29] http://article.gmane.org/gmane.linux.kernel/1343738
[30] http://git.kernel.org/linus/9dedf60313fa4dddfd5b9b226a0ef12a512bf9dc
[31] http://git.kernel.org/linus/057cbf49a1f08297877e46c82f707b1bfea806a8
[32] http://wiki.qemu.org/Features/VirtioSCSI/TCM_Overview
[33] 
[34] http://git.kernel.org/linus/ae7a2a3fb6f8b784c2752863f4f1f20c656f76fb
[35] http://git.kernel.org/linus/ab9cf4996bb989983e73da894b8dd0239aa2c3c2
[36] http://git.kernel.org/linus/c1af87dc96cd0f8f17694d0cd9be01b80b2c7a6a
[37] http://git.kernel.org/linus/d72e31c9374627068df29da8085ca18c92ae35d3
[38] http://thread.gmane.org/gmane.linux.kernel.iommu/1006
[39] http://git.kernel.org/linus/9dcd61303af862c279df86aa97fde7ce371be774
[40] http://git.kernel.org/linus/abdfdde2534c48d7a761fc437ad3d840a5947dbc
[41] http://thread.gmane.org/gmane.linux.kernel.iommu/1009
[42] http://git.kernel.org/linus/cba3345cc494ad286ca8823f44b2c16cae496679
[43] http://git.kernel.org/linus/89e1f7d4c66d85f42c3d52ea3866eb10cadf6153
[44] http://git.kernel.org/linus/73fa0d10d077d9521ee2dace2307ae2c9a965336
[45] http://git.kernel.org/linus/4a5b2a20ec87384eeb19e70991e7e15a00cad87b
[46] https://lwn.net/Articles/474088/
[47] http://thread.gmane.org/gmane.comp.emulators.qemu/165451/
[48] 
[49] http://git.kernel.org/linus/46d3ceabd8d98ed0ad10f20c595ca784e34786c5
[50] http://lwn.net/Articles/507065/
[51] https://www.heise.de/hintergrund/Kernel-Log-Was-3-5-bringt-1-Netzwerk-1624233.html
[52] https://www.heise.de/hintergrund/Kernel-Log-Was-3-3-bringt-1-Netzwerk-1421300.html
[53] http://www.bufferbloat.net/
[54] http://thread.gmane.org/gmane.network.routing.codel/90
[55] http://tools.ietf.org/html/draft-ietf-tcpm-fastopen-01
[56] http://git.kernel.org/linus/2100c8d2d9db23c0a09901a782bb4e3b21bee298
[57] http://git.kernel.org/linus/783237e8daf13481ee234997cbbbb823872ac388
[58] http://git.kernel.org/linus/aab4874355679c70f93993cf3b3fd74643b9ac33
[59] http://git.kernel.org/linus/8e4178c1c7b52f7c99f5fd22ef7af6b2bff409e3
[60] http://git.kernel.org/linus/1fe4c481ba637660793217769695c146a037bd54
[61] 
[62] 
[63] https://www.heise.de/news/WWDC-Apple-bringt-neue-MacBooks-und-eines-mit-Retina-Display-1615511.html
[64] http://git.kernel.org/linus/197bbb3d464f33eac1b458e83c1929d2f268d4c9
[65] http://git.kernel.org/linus/e926f2c850c472f813f9bab486c68a3fe0b03ae4
[66] http://git.kernel.org/linus/1c76684d2752b3a24bb7da183cc18e5d126dbcc9
[67] http://git.kernel.org/linus/c1dcad2d32d0252e8a3023d20311b52a187ecda3
[68] http://git.kernel.org/linus/c8c60d88c59cbb48737732ba948663a3efe882aa
[69] http://en.wikipedia.org/wiki/Energy-Efficient_Ethernet
[70] http://thread.gmane.org/gmane.linux.network/239075
[71] 
[72] 
[73] https://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[74] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[75] http://blog.ffwll.ch/2012/08/new-modeset-code.html
[76] https://www.heise.de/hintergrund/Kernel-Log-Nouveau-Grundrenovierung-1664223.html
[77] https://lwn.net/Articles/514062/
[78] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[79] http://www.heise.de/ct/
[80] http://www.heise.de/open/
[81] 
[82] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-0-1279228.html
[83] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-1-1346661.html
[84] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-2-1398004.html
[85] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-3-1464664.html
[86] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-4-1572878.html
[87] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-5-1636890.html
[88] http://www.kernel.org/pub/linux/kernel/v3.0/
[89] http://www.kernel.org/mirrors/
[90] http://www.heise.de/open/kernel-log-3007.html
[91] http://www.heise.de/open/
[92] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[93] http://identi.ca/kernellog
[94] http://twitter.com/kernellog
[95] http://www.h-online.com
[96] http://identi.ca/kernellog2
[97] http://twitter.com/kernellog2
[98] http://identi.ca/kernellogauthor
[99] http://twitter.com/kernellogauthor
[100] mailto:thl%40ct.de
[101] mailto:thl@ct.de