
Energie-Effiziente Software-Entwicklung (Engery Aware Software-Engineering and Development) steht nicht für Programmierer, die sich nur von Brot und Wasser ernähren; es geht vielmehr darum, Programme von vornherein darauf auszulegen, dass diese möglichst wenig Energieverbrauch verursachen. Geringe CPU-Last ist dabei nur ein Faktor von vielen, wenn auch ein wichtiger.
Vom 26. bis 28. November 2014 findet die zweite Green Code Lab Challenge statt, ein Wettbewerb, bei dem es darum geht in 48 Stunden ein bestehendes Open-Source-Projekt hinsichtlich Strom- und Ressourcenverbrauch zu optimieren. Denn nicht nur die Hardware bestimmt, wie viel Strom verbraucht wird. Mindestens genauso wichtig, wenn nicht sogar wichtiger, ist die Software, die darauf läuft, denn diese bestimmt, wie stark die verwendete Hardware ausgelastet wird. Praktisch bedeutet das längere Akkulaufzeiten für Notebooks, Tablets und Handys genauso wie weniger Stromverbraucht durch Rechenzentren. Gerade bei letzteren können kleine Optimierungen große Wirkung haben. Grund genug, ein paar Informationen über Grüne Software-Entwicklung zusammenzutragen.
Was soll ich mit grüner Software?
Reduziert an das „grün“ in „grüner Software“ nur auf den Stromverbrauch, dann stellt sich die Frage, was habe ich persönlich davon? Nun gut, eigentlich sollte sich diese Frage nicht stellen; ganz platt gesagt ist weniger Stromverbrauch gut für die Umwelt. Aber wenn ich nicht gerade ein Rechenzentrum betreibe, wird sich doch effizientere Software kaum auf meiner Stromrechnung bemerkbar machen, oder? So etwas macht sich doch sicherlich nur bei wirklich rechenintensiven Programmen bemerkbar.
Diverse Beispiele zeigen immer wieder, dass es bei ganz „normalen“ Programmen, wie einem Webbrowser, große Unterschiede in der Akkulaufzeit von Notebooks und Tablets geben kann. Jüngstes Beispiel war Chrome: Ein Bug im Google-Browser hat lange Zeit dafür gesorgt, das dieser für deutlich geringe Akkulaufzeiten verantwortlich war. Chrome hatte die CPU nicht zur Ruhe kommen lassen. Grundsätzlich ist übrigens der Internet Explorer der sparsamste aller aktuellen Webbrowser. Den IE zu verwenden kann noch immer eine bis zu 30% längere Akkulaufzeit zur Folge haben.
Was Notebooks mit ihren doch recht großen Akkus betrifft, trifft die kleinen Handy-Akkus noch viel mehr. Der einstündige Webcast Who Killed My Battery: Analyzing Mobile Browser Energy Consumption behandelt die Akkubelastung durch surfen mit dem Handy: Despite the explosive growth of smartphones and growing popularity of mobile web browsing, the energy consumed by a phone browser while surfing the web is poorly understood. While web pages are often optimized for speed and beauty, little attention is given to the amount of energy needed to download and render the page.
Nur halb so lang, aber ebenfalls interessant ist folgendes Video auf Channel9: Mark Aggar: Energy Smart Software – Here, we visit Mark Aggar, a Director in the Environmental Sustainability organization at Microsoft to get some insights into what energy efficient computing means and why it matters. Further, since Channel 9 is a comfortable place for developers, we discuss developing Windows applications that work in concert with Windows Power Management to effectively and efficiently use energy resources.
Einstieg in grüne Software-Entwicklung
Ein erster Anlaufpunkt für aktuelle Meldungen rund um nachhaltige Software-Entwicklung könnte der Sustainable Software Blog sein. Vorwiegend finden sich hier Informationen zu aktuellen Veranstaltungen und Konferenzen, aber auch Buchrezensionen und einige kurze Artikel zu Entwicklungspraktiken. Der Blog wird betrieben von ehemaligen Mitarbeitern des Green Software Engineering-Projekts der Universität Trier, auf dessen Webseite finden sich ebenfalls aktuelle Meldungen zum Thema finden.

Referenzmodell „Green Software“ des Projekts Green Software Engineering
Das Projekt Green Software Engineering hat unter anderem das Referenzmodell „Green Software“ entwickelt, das den gesamten Lebenszyklus der Software-Entwicklung und Nutzung betrachtet: „Grüne Software“ ist Software, deren direkte und indirekte negativen Auswirkungen auf Menschen, Gesellschaft und Umwelt über ihren gesamten Lebenszyklus hinweg minimal sind und die bestenfalls einen zusätzlichen positiven Beitrag zur nachhaltigen Entwicklung leisten. Das Projekt ist übrigens auch verantwortlich für den Green Power Indicator und führt eine Liste von Ökoprovidern.
Energy Efficient Software Development / Energy Smart Software
Es gibt einige Oberbegriffe, die für die Entwicklung „grüner“ Software verwendet werden. Da wäre selbstverständlich Green Software und Energy Efficient Software. Ein wenig trendiger klingen Energy Smart Software und Energy Aware Software Development. Viele Artikel, die man unter diesen Begriffen im Internet findet laufen auf Intel und Microsoft zurück, die beide Info-Portale zu diesem Thema anbieten.
Intels Developer Zone bietet einen guten Anlaufpunkt für den tieferen Einstieg in die Entwicklung Stromsparender Software: Energy Efficient Software Development. Hier gibt es nicht nur diverse Artikel zum Einstieg in die Entwicklung grüner Software (zum Beispiel Energy Efficient Software Guidelines und Developing Green Software), sondern Intel stellt auch diverse Tools zur Analyse des Stromverbrauchs von Software zur Verfügung, unter anderem den Battery Life Analyzer (für Intel-Notebooks) und das Intel Power Gadget (verfügbar für Windows und Mac OS X), das auch einfach nur dazu verwendet werden kann, Informationen über die CPU inklusive der aktuellen Leistungsaufnahme anzuzeigen. Wie man mit diesen Tools den Stromverbrauch von Software analysieren kann, zeigt der Artikel Power Analysis Guide for Windows.
Auch Microsoft bietet im MSDN ein ähnliches Portal: Power Management and ACPI. Der Fokus liegt hier aber nicht nur auf der Entwicklung energieeffizienter Software: A comprehensive approach to system configuration and device power control is built into Microsoft Windows operating systems, based on the ACPI system interface and other new bus and device specifications. Windows supports capabilities that can be exploited by drivers and applications to improve the user’s computing experience. Die Unterstützung der von Betriebssystem bereitgestellten Funktionen kann wesentlich zur Energieeffizienz von Programmen beitragen. Anwendungen, die auch für den Betrieb auf mobilen Geräten gedacht sind, sollten beispielsweise darauf reagieren, ob das Gerät an den Strom angeschlossen ist, oder über den Akku läuft (Power and Device Awareness).
Wer ganz tief einsteigen will, der sollte nach Energy Efficient Algorithms suchen. Hier findet sich ebenfalls relativ viel, allerdings geht es dann meist um spezielle Probleme.
Verbrauch messen – Wie grün ist meine Software?
Beim Optimieren ist es wichtig, das zu optimierende auch messen zu können. Wie sonst lässt sich eine Verbesserung oder gar Verschlechterung feststellen? Ein paar Tools für die Messung bzw. Analyse der Leistungsaufnahme wurden bereits erwähnt, aber es gibt noch mehr Möglichkeiten(abgesehen vom simplen „Laufen-Lassen-Bis-Der-Akku-Leer-Ist“).
Das Intel Energy Checker SDK (Software Development Kit) dient dem Messen der durch Software verursachten Leistungsaufnahme (es können unter anderem Daten von externen Strommessgeräten, wie z.B. Watts-Up Pro, ausgewertet werden), die dann in Relation zur „Produktivität“ der Software gesetzt wird: Software can be green. The critical impact of software on overall system efficiency is frequently overlooked by those focusing on hardware-specific system features. The Intel® Energy Checker SDK provides a way to measure how „green“ a system is by measuring the amount of productivity done by a system vs. the energy consumption of that system. Die letzte Version vom IEC SDK ist allerdings von 2011 und somit nicht mehr ganz auf der höhe der Zeit.
Microsoft Research bietet ebenfalls ein Tool zur Messung des Stromverbrauchs von Software an: Joulemeter misst aber nicht nur die Leistungsaufnahme, die durch einzelne Anwendungen verursacht wird, sondern ist eigentlich dazu gedacht, den Verbrauch ganzer Computer oder virtueller Maschinen zu analysieren: The Joulemeter project is developing methods to improve the energy efficiency of computing devices and infrastructures. It provides a modeling tool to measure the energy usage of virtual machines (VMs), servers, desktops, laptops, and even individual software applications running on a computer. The visibility provided by Joulemeter is being used to improve power provisioning costs for data centers, virtualized power budgeting, desktop energy optimizations, and mobile battery Management.
Ganz allgemein um die Energieeffizienz von Algorithmen, also unabhängig von Prozessor-Marke und Betriebssystem, geht es in dem Paper Evaluating Algorithms according to their Energy Consumption: So far it was a common belief that faster algorithms consume less energy than slower ones. This work presents results indicating that this is not universally valid. Das Paper stammt aus dem Jahr 2012.
Foto: „The.Matrix.glmatrix.2“ von Jamie Zawinski (program); Church of emacs (screenshot) – GLMatrix screensaver. Lizenziert unter Attribution über Wikimedia Commons
Neueste Kommentare