Linux-Kernel 3.10 ist veröffentlicht
Linux-Vater Linus Torvalds hat Kernel 3.10 freigegeben. Zum Beispiel bringt der neueste Kernel Timer Free Multitasking mit sich. In der digitalen Steinzeit konnten Computer nur einen Task ausführen. Multitasking wurde aber immer mehr und ist heute Standard – wurde aber auch immer weiter verbessert. Somit wurden die Ticks eingeführt. Das ist ein Timer, der in regelmäßigen Intervallen abgefeuert wird. Dieser Timer kann ein Programm zum Pausieren zwingen, falls eine wichtigere Routine vom Betriebssystem notwendig ist. Moderne Betriebssysteme verwenden so ein Preemptive Multitasking.
Dieses Verhalten ist aber suboptimal auf moderner Hardware. CPUs von Notebooks und mobilen Geräten brauchen wegen der Energiesparoptionen eine gewisse Inaktivität. Preemptive Multitasking feuert aber in einem typischen Linux-Kernel den Timer 1000 Mal pro Sekunde ab – auch dann, wenn das System gar nichts tut. Somit kann die CPU nicht so viel Energie wie möglich sparen. Auch Virtualisierung ist ein Problem. Mit Linux-Kernel 2.6.21 kam erste Besserung. Der Timer wurde nicht abgeschossen, wenn sich das System im Leerlauf befand.
In dieser Ausgabe des Linux-Kernel gibt es Unterstützung, dass gar kein Timer abgeschossen wird – tickless. Allerdings ist diese Ausgabe noch nicht komplett tickless. Der Kernel braucht den Timer immer noch, feuert aber nur einmal pro Sekunde. Der komplette Tickless-Modus ist dann deaktiviert, wenn die CPU mehr als einen Task ausführt.
Bcache – ein Block Layer Cache für SSD caching
SSD-Storage-Geräte werden immer populärer und der Einsatz verleiht den Rechnern Flügel. Bcache erlabt SSD-Geräten andere Block-Geräte zu cachen. Die Funktionalität lässt sich mit L2Arc für ZFS vergleichen. Bcache kann auch Writeback Caching ist Dateisystem-agnostisch. Du findest weitere Informationen dazu in der Dokumentation oder dem entsprechenden Wiki.
Btrfs: kleinere Extents
Die Extent-Referenzen bei Btrfs wurden für jeden Tree Block von 51 Byte auf 33 Byte gesenkt. Damit wird der Platz auf dem Massenspeicher effizienter ausgenutzt. In der Praxis sollte der Extent Tree damit 30 bis 35 Prozent kleiner sein. Ein weiterer positiver Effekt ist, dass komplexe Metadaten-Operationen viel schneller vor sich gehen.
Automatisch wird diese Funktion beim Anlegen von Btrfs-Dateisystemen nicht verwendet. Du musst es mittels mkfs time
oder btrfstune -x
aktivieren.
XFS Metadaten-Checksummen
Auch am Dateisystem XFS wurde geschraubt. Dieser Kernel enthält eine experimentelle Implementation von Metadaten-Checksummen (CRC32c). Es handelt sich hier um einen Teil eines größeren Projekts, das von den XFS-Entwicklern “self-describing metadata” genannt wird. Mehr dazu gibt es in der entsprechenden Dokumentation.
Verbesserungen bei rwsem-locking-Skalierbarkeit
Das rwsem-Locking-Schema hatte bisher mit Performance-Problemen zu kämpfen. Das lag an den strikten, seriellen, FIFO-sequentiellen Schreibrechten der Semaphoren. Mit Linux-Kernel 3.9 wurde der “opportunistic lock stealing”-Patch eingeführt. Das alt aber nur für den langsamen Pfad. Nun ist der Turbo gezündet und die Performance bei pgbench hat sich teilweise im zweistelligen Bereich verbessert.
TCP-Optimierung: Tail loss probe
Linux-Kernel 3.10 bringt den Algorithmus TCP Tail Loss Probe mit sich. Somit soll sich die Latenzzeit bei kurzen Transaktionen verringern. Damit lassen sich Fehler beim Ende der Übertragungen schneller wieder aufnehmen.
Unterstützung für MIPS KVM
Ab sofort hat auch die Architektur MIPS Unterstützung für KVM. Dazu gibt es mehr in der offiziellen Ankündigung.
Darüber hinaus gibt es verbesserte Unterstützung für Intels Haswell-Prozessoren. Wie immer gibt es eine ausführliche Beschreibung zu allen Neuerungen und Änderungen bei Kernelnewbies.org. Das Dokument ist allerdings noch nicht ganz fertig, aber es deckt die prominentesten Änderungen ab. Kernelnewbies.org macht das wirklich erste Sahne – allerdings musst Du der englischen Sprach mächtig sein.
In seiner offiziellen Ankündigung spricht Linus Torvalds davon, dass er die Ausgabe einen Tag verspätet ausgegeben hat. Er hat sich überlegt, ob eine zusätzlicher Veröffentlichungs-Kandidat sinnvoll ist. Es war ihm einfach nicht ruhig genug. Man hat in den letzten beiden Wochen lange Diskussionen lange über ein Problem bezüglich der “Inode List Locking Scalability” geführt. Allerdings sei das Problem nicht neu gewesen.
Wie eigentlich immer weist Torvalds darauf hin, dass er sich kurz vor der Ausgabe weniger Pull-Requests wünscht. Sogar am Freitag Abend sei noch eine Anfrage eingetrudelt. Torvalds hat sich dann aber doch entschlossen, den Kernel auszugeben. Er habe nicht genug Gründe gesehen, einen weiteren RC einzuschieben. Wie nicht unüblich sind zwei Drittel der Änderungen bei den Treibern zu finden.