16.04.2018

Schlafende Rechner: Neue Linux Version spart 10% Energie

Linux kernel Energieverbrauch-Bug im Leerlauf wurde vor einem Jahr von Wissenschaftlern der TU Dresden entdeckt und untersucht. Ein Wecker soll helfen.

Powernightmares before and after © Thomas Ilsche Powernightmares before and after © Thomas Ilsche
Powernightmares before and after

© Thomas Ilsche

Vor einem Jahr stießen Wissenschaftler des ZIH der TU Dresden mit speziellen Energie­messungen auf ein Problem im Linux kernel, das zu einem zu hohen Energieverbrauch im Leerlauf führte. Die Untersuchung der Dresdner Gruppe zeigte, dass das Problem auf ein komplexes Zusammenspiel zwischen Hintergrund-Prozessen und dem sogenannten "idle governor" zurück zu führen ist. Dies ist in einem Forschungsartikel, der auf dem Euro-Par 2017 Workshop ROME 2017 vorgestellt wurde, beschrieben (http://doi.org/10.1007/978-3-319-75178-8_50).

Messumgebung-Energieeffizienz auf dem Board © ZIH Messumgebung-Energieeffizienz auf dem Board © ZIH
Messumgebung-Energieeffizienz auf dem Board

© ZIH

Der „idle governor“ ist dafür zuständig, die Prozessorkerne in einen ausgewählten Schlaf­zustand zu versetzen, wobei sich die prognostizierte Dauer dieser Pause sich auf verschie­denen Ebenen auswirkt: Für kurze Zeiträume im Bereich von Mikrosekunden ist es wichtig, dass der Kern schnell wieder aktiv werden kann; schläft der Kern hingegen länger, ist vor allem eine Senkung des Stromverbrauchs wichtig. Die TU-Wissenschaftler stellten fest, dass Probleme auftreten, wenn die heuristische Vorhersage der Zeit zum Schlafen falsch liegt, wenn also ein Schlafzustand mit einem hohen Stromverbrauch gewählt wird, der eigentlich nur für kurze Schlafphasen vorgesehen ist. Dauert die folgende Schlafphase dann länger (beispielsweise bis zu 10 Sekunden), gibt es keine Möglichkeit, die Entscheidung während dieser Zeit zu korrigieren.

Praktisch taucht dieses Problem bislang vor allem auf Server-Systemen mit mehreren Dutzend Rechenkernen auf. Der Stromverbrauch ist hier im Leerlauf besonders davon abhängig, dass alle Kerne möglichst tief schlafen: Auf einem System mit Prozessoren vom Typ Intel Skylake-SP erhöht schon ein einzelner falsch schlafender Kern die Leistungs­aufnahme des Gesamtsystems für den betroffenen Zeitraum von 70 Watt auf 120 Watt.

Für ihren Forschungsartikel entwickelten die Wissenschaftler Strategien, um dieses Problem zu beheben. Sie konnten zeigen, dass es am wichtigsten ist, eine falsche Entscheidung für einen Schlafzustand innerhalb kurzer Zeit korrigieren zu können. Ein dafür ausgelegter Wecker erschien hier gewinnbringend. Parallel zu ihrem Artikel, wandten sie sich mit dem Problem und der beispielhaften Implementierung einer Lösung an die Linux-Community, wo das Problem zielführend weiter diskutiert wurde.

Darauf aufbauend wurden durch den Kernel-Entwickler Rafael J. Wysocki Änderungen am Linux-idle-Subsystem vorgenommen, die unter anderem dieses Verhalten verbessern (http://lkml.iu.edu/hypermail/linux/kernel/1804.1/03723.html). Damit kann das System nun dauerhaft energieeffizient schlafen, was im Durchschnitt die Leistungsaufnahme im Leerlauf um ca. 10 % reduziert. Anwendungen mit kurzen Schlafzyklen profitieren darüber hinaus von einer reduzierten Latenz und damit verbesserten Performance. Nach intensiven Tests durch die ZIH-Forschergruppe und weitere Mitglieder der Community wurden diese Ver­besserungen nun in Version 4.17 des Linux kernels integriert.

Für weitere Informationen:
Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) der TU Dresden
Thomas Ilsche (thomas.ilsche@tu-dresden.de)

Zu dieser Seite

ZIH
Letzte Änderung: 17.04.2018