| « Sondertasten spezieller Tastaturen und Laptops konfigurieren - Teil 1: Hotkey Setup | Ersatz für setuid und setguid - Sicherheit von Programmen, die erweiterte Rechte benötigen erhöhen » |
Energiesparen und damit längere Laufzeiten für Laptops durch Tickless Timer
In einem Multitasking-System, in dem sich viele gleichzeitig bzw. quasi-gleichzeitig ablaufende Programme (tasks) um die Ressource Rechenzeit streiten, gibt es einen Hardware-Timer, der die kontinuierlich fortlaufende Zeit in sogenannte Zeitscheiben (timeslices) zerteilt. Nach Ablauf jeder Zeitscheibe wird eine Unterbrechung (interrupt) ausgelöst. Diese veranlasst die CPU nachzuschauen, ob die Kontrolle nun an einen anderen Task übergeben werden soll (scheduling). Nun stellt sich die Frage: Wie kann das System noch funktionieren, wenn man die Einteilung in Zeitscheiben abschafft? Und wie will man obendrein noch Energie sparen?
Follow up:
Die Zeitscheiben sind üblicherweise gleich lang und zwar 10ms (Zerteilung erfolgt mit 100Hz). Einige Systeme werden auch mit 250Hz, 300Hz oder sogar 1000Hz betrieben, damit sie nicht so träge wirken, bzw. Multimediainhalte flüssig abspielen können. Das bedeutet jedoch, dass in Phasen geringer Aktivität trotzdem regelmäßig Unterbrechungen, die von der CPU bearbeitet werden müssen, ausgelöst werden. Folglich können die Stromsparmodi, in denen aktuelle CPUs in einen unterschiedlich tiefen "Schlaf" versetzt werden können, nicht genutzt werden. Die CPU wird durch die Unterbrechungen regelmäßig wieder aufgeweckt.
Dies lässt sich verhindern, wenn man die CPU nur aufweckt, wenn es wirklich etwas zu tun gibt. Dann kann sie durch die nicht unterbrochenen und dadurch auch tieferen Schlafphasen Energie sparen, was im realen Test die Laufzeit von Laptops erheblich steigern kann. Ein System ohne Timer Ticks wird als Tickless Timer System bezeichnet.
Dass dies funktioniert, habe ich ja schon vorweggenommen. Die Frage ist nur noch, wie dies bewerkstelligt wird. Nunja, der Timer lässt sich auch so ähnlich wie ein Wecker verwenden, d.h. man kann den Timer auf eine "Weckzeit", nach der eine Unterbrechung ausgelöst werden soll, programmieren. Die CPU muss nun jeweils planen, wann der früheste Zeitpunkt ist, zu dem ein Taskwechsel stattfinden soll und dem entsprechend den Timer stellen. Damit wird aus dem zuvor gleichmäßigen Takt ohne Randbedingungen, ein unregelmäßiger Takt, der sich nach den Anforderungen der Tasks richtet.
Im 2.6er Kernel findet man unter "Processor types and features" die Option "Tickless Timer". Diese aktiviert, eine aktuelle CPU vorausgesetzt, die oben beschriebenen Stromsparfunktionen.
Weitere Infos findet man hier:
Clockevents and dyntick