Sustainable Programming, Teil 1

Programmieren für die Umwelt

| Autor / Redakteur: Christian Rentrop / Stephan Augsten

Selbst ein kleiner Programmierfehler kann dazu führen, dass eine Software übermäßig viele Ressourcen verschluckt.
Selbst ein kleiner Programmierfehler kann dazu führen, dass eine Software übermäßig viele Ressourcen verschluckt. (Bild: JohnsonMartin - Pixabay.com / CC0)

Schlecht programmierte Software kann zum Stromfresser mutieren. Was auf dem kleinen Notebook schlicht nervt, skaliert sich in Serverfarmen schnell zu umweltschädigender Kostentreiberei. Sustainable Programming versucht, das Problem in den Griff zu bekommen.

In Zeiten der Energiewende, des Klimawandels und des globalen 2-Grad-Ziels ist es zurecht verpönt, Strom zu verschwenden: Einerseits, weil jede Wattstunde natürlich erzeugt werden muss und dementsprechende Infrastruktur in Form konventioneller oder erneuerbarer Energie braucht, Flächen- und Ressourcenverbrauch inklusive.

Die seit der Energiewende in Deutschland massiv angewachsenen Stromkosten stellen außerdem für jedes Unternehmen mit größerem Rechnerbestand – egal ob Entwickler oder Kunde – eine erhebliche Kostenbelastung dar. Selbst kleinste stromfressende Programmierfehler – und sei es nur ein scheinbar unbedeutender Bug, der die Prozessorlast ein wenig in die Höhe treibt – können hochskaliert auf hunderte, tausende oder gar Millionen Rechner durchaus enorme betriebswirtschaftliche und ökologische Auswirkungen haben.

Genau hier setzt das sogenannte Sustainable Programming an: Anwendungsentwickler versuchen mit dieser Philosophie, den Energieverbrauch von Software maximal zu reduzieren – und so die Umwelt zu schonen.

Sustainable Programming schont Umwelt und Klima

Das Ziel jeder Programmierung sollte maximale Effizienz sein, das dürfte jedem Entwickler klar sein. Doch die Idee des Sustainable Programming geht einen Schritt weiter: Durch möglichst effiziente Hardwarenutzung soll der Stromverbrauch einer Anwendung dabei möglichst weit reduziert werden, das Ziel ist also höchste Energieeffizienz.

Dies ist auch notwendig, wie ein Rechenbeispiel zeigt: Bis 2020 sollen ca. 37,5 Millionen Arbeitsplatzrechner in Deutschland in Betrieb sein. Wenn jeder Rechner – aktuelle Hardware vorausgesetzt – an einem 8-Stunden-Arbeitstag rund 20 Wattstunden Strom sparen würde, könnte in Deutschland rechnerisch ein mittelgroßes Kohlekraftwerk vom Netz gehen.

Think global

Weiter gedacht auf globale Werte und all die im Hochleistungs-Dauerbetrieb arbeitenden Infrastruktur-Server bei Cloud-Anbietern, Providern und in Unternehmen ergibt sich somit erhebliches Sparpotenzial. Das betrifft natürlich nicht nur typische Anwendungen wie Betriebssysteme, Office-Produkte oder Server-Anwendungen: Jedes noch so kleine Stück Software kann, wenn es nur weit genug verbreitet ist, zur Energieeinsparung und damit zur Reduktion des CO2-Ausstoßes beitragen. Das schont die Umwelt – lokal und global.

Die Philosophie des Sustainable Programming

Die Idee, Ressourcen und damit Energie zu sparen und auf diese Weise die Umwelt zu schonen, ist natürlich nicht neu: Schon in den 1990ern gab es den Begriff der „Green IT“, als deutlich wurde, dass die zunehmende Verbreitung von Computern einen erheblichen Einfluss auf die Umwelt hat. Stromspar-Methoden wurden etabliert, Dinge wie Standby-Modi weiterentwickelt, Recycling-Methoden etabliert.

Sustainable Programming konzentriert sich allerdings anders als die Green-IT ausschließlich auf Software und hier vor allem auf den Teilbereich der Anwendungen. Die Voraussetzung für Sustainable Programming ist allerdings ein Umdenken unter den Entwicklern sowie in den Unternehmen, die Software herstellen. Das klassische „das haben wir immer so gemacht“ darf nicht mehr greifen.

Vielmehr ist die Idee, ausgetretene Pfade der Softwareentwicklung zu verlassen und die Anwendungen neu zu denken. Das setzt bereits bei der Planung an. Sind zum Beispiel bestimmte Hintergrundprozesse und Funktionen wirklich notwendig? Und wie lässt sich das Programm auf eine optimale Laufzeit trimmen? Dass solche Umdenkprozesse grundsätzlich möglich sind, zeigen viele ausgesprochen energiesparende Apps für Smartphones und Tablets, die funktional jedoch nur wenige Einschränkungen besitzen.

Energieoptimierung vs. Geschwindigkeit

Sustainable Programming stellt Entwickler allerdings vor eine nicht ganz leicht zu lösende Aufgabe. Denn nicht selten geraten sie in einen Konflikt zwischen Anwendungsgeschwindigkeit und Energieoptimierung. Nutzt ein Prozess große Teile der Hardware, um schnell zu arbeiten, dreht der Prozessor hoch, der Stromverbrauch steigt. Hier zu reduzieren wäre jedoch kontraproduktiv, denn langsame Anwendungen will natürlich auch niemand haben.

Ein Ziel des Sustainable Programming besteht deshalb auch darin, vorhandene Technologien optimal auszunutzen, etwa durch Verwendung aller Möglichkeiten, die ein Betriebssystem bietet. Das setzt im Zweifel auch native Software voraus – plattformübergreifende Programmierung mit ressourcenfressenden Laufzeitumgebungen, etwa mit Java, verbietet sich dadurch von selbst.

Energieeffizienz optimieren

Zum Glück bieten moderne Systeme ausreichend Kapazitäten für Sustainable Software: So könnte die Zahl der stromfressenden Zugriffe auf einen Datenspeicher reduziert werden, indem die Anwendung komplett im Arbeitsspeicher läuft. Das sogenannte In-Memory-Computing wiederum setzt aber voraus, dass die Anwendung ressourcensparend genug ist, um das möglich zu machen.

Solche Szenarien geht natürlich eine eingehende Analyse der vorhandenen Hardwarebasis voraus. Eine Sustainable-Serveranwendung, die im Regelbetrieb vier Gigabyte RAM benötigt und auf dedizierten Servern komplett aus dem Speicher laufen kann, bringt eine virtuelle Serverumgebung gegebenenfalls schnell ins Schwitzen. Und natürlich ist zu bedenken, ob die Software auf möglichst stromsparenden Systemen auch mit ausreichender Geschwindigkeit laufen kann. Hierbei können auch Caches und Buffer helfen.

Sustainable Programming ist ein Thema

Die Ideen des Sustainable Programming werden mit jedem Tag ein Stückchen wichtiger. Einerseits, weil der Stromverbrauch von Servern und Arbeitsplatzrechnern zu einem erheblichen betriebswirtschaftlichen Impact führt. Auf der anderen Seite aber auch, weil energieoptimierte Software automatisch auch effizienter und damit schneller arbeitet und gegebenenfalls auf überflüssige Funktionen verzichtet. Das führt zu besserer Bedienbarkeit bei sparsamerer Hardware – und kann auf diese Weise massiv Kosten sparen.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45644824 / Coding & Collaboration)