Linux 3.10: Kernel ohne Ticks
Im nächsten Linux-Kernel werden die Weichen für den Betrieb ohne Ticks gestellt. Damit soll die Leistung verbessert werden. Den Entwicklern steht aber bei dieser fundamentalen Änderung noch viel Arbeit bevor.

Jede CPU auf einem Linux-System wird bis zu 1.000 Mal pro Sekunde durch einen Tick unterbrochen. Das führt zu Leistungseinbußen, die die Kernel-Entwickler in künftigen Kernel-Versionen beseitigen wollen. Im nächsten Linux-Kernel wird es möglich sein, Ticks auch komplett auszuschalten. Noch müssen aber zahlreiche Probleme überwunden werden. Kernel-Entwickler Jonathan Corbet bezeichnet den Tickless-Kernel als größten Umbruch seit der Entfernung des Big Kernel Lock.
Die periodischen Unterbrechungen - im Englischen Ticks genannt - veranlassen sämtliche CPUs in einem System, die Prioritäten der Prozesse neu zu definieren oder Read-Copy-Updates (RCU) durchzuführen. Dass sämtliche CPUs unterbrochen werden, ist überflüssig und führt nicht nur zu Leistungseinbußen, sondern belastet auf mobilen Geräten auch den Akku.
Derzeit nur im Schlafmodus
Bislang konnten die Timer-Ticks zwar ausgeschaltet werden, aber nur, wenn die CPUs in den Schlafmodus versetzt wurden. Auf hochverfügbaren Systemen sorgt die Option allerdings dafür, dass die Aufwachphase deutlich länger dauert als mit aktivierten Ticks. Deshalb ist das Ausschalten derzeit optional.
In Linux 3.10 gibt es künftig drei Optionen. CONFIG_HZ_PERIODIC sorgt dafür, dass die Ticks stets für alle CPUs aktiviert bleiben. Neuer Standard wird indes die Option CONFIG_NO_HZ_IDLE, bei der Ticks im Schlafmodus deaktiviert werden. CONFIG_NO_HZ_FULL deaktiviert die Ticks im neuen Kernel.
Tickless mit Einschränkungen
Allerdings muss eine CPU weiterhin für notwendige Arbeiten wie die Neuordnung der Prozesse sorgen. Deshalb lassen sich Ticks nicht ganz deaktivieren. Auf einem Mehrkernsystem wird eine CPU beim Systemstart dafür ausgewählt, die anderen kommen dann ohne Unterbrechungen aus. Die Änderungen, die benötigt würden, um sämtliche CPUs im Tickless-Modus laufen zu lassen, seien noch zu umfangreich, schreibt Corbet.
Eine weitere Einschränkung besteht darin, dass Ticks auf einer CPU nur dann deaktiviert werden, wenn dort nur ein einziger Prozess läuft. Sobald ein zweiter verarbeitet werden soll, wird der Tick wieder benötigt, um die dafür notwendigen Zeitscheiben zu bearbeiten. Außerdem benötigt der Scheduler mindestens eine Unterbrechung pro Sekunde. Dennoch sorgt die Reduzierung der Ticks für mindestens eine einprozentige Leistungszunahme auf Desktopsystemen und deutlich weniger Latenzen in Real-Time-Umgebungen und bei High-Performace-Computing (HPC), schreibt Entwickler Ingo Molnar in seinem Pull-Request.
Der Administrator müsste allerdings nicht nur dafür sorgen, dass Prozesse und Kernel-Threads besser verteilt werden, sondern auch die RCUs anpassen. Dazu gibt es bereits eine Dokumentation, die zahlreiche Optionen auflistet.
Noch viel Arbeit
Obwohl bereits im Kernel 3.9 einige Funktionen für den Tickless-Kernel angepasst wurden, etwa Subsystem printk() oder irq_work, steht den Entwicklern noch einiges an Arbeit bevor. Bislang funktioniert der Kernel ohne Ticks nur auf 64-Bit-Systemen, für 32-Bit-Systeme existiert aber bereits ein Patch. Später wollen die Entwickler auch den letzten Tick beseitigen. Dafür müssen aber sowohl der Scheduler als auch das Load Balancing angepasst werden. Möglicherweise tauchten auch noch unvorhergesehene Probleme bei einem so fundamentalen Umbau auf, schreibt Corbet.
Pläne für die Beseitigung der Ticks bei mehreren Prozessen auf einer CPU sind allerdings erst einmal vom Tisch. Kernel-Vater Linus Torvalds schrieb, dass er nicht glaube, dass sich der Aufwand lohne, schloss aber eine spätere Umsetzung nicht aus, wenn dadurch tatsächlich weitere Entlastungen möglich sind.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Irgendwie.... irgendwie finde ich ist der Artikel seltsam aufgebaut. Zuerst wird einem...
Naja, merken wird mans höchstens in einem Benchmark. Wenn ich bedenke wie ich damals noch...
Derzeit wird bei mir an der Uni noch über Ticks im Kernel unterrichtet. Ich bin gespannt...
http://blog.zorinaq.com/?e=74