Software-Bloat

Es ist eine oft gemachte empirische Beobachtung, dass die Performancegewinne der Hardware meist durch die Software bald wieder wettgemacht werden. Mit jeder neuen Version hat Software oft gesteigerte Anforderungen an die Hardware, nicht selten führt ein Upgrade der Software auch zur Notwendigkeit die Hardware zu tauschen.

Seit den Anfängen der Informationstechnologie hat sich der Schwerpunkt bei der Softwareerstellung von Laufzeiteffizienz hin zu „Programmierproduktivität“ verschoben [Bhattacharya u.a., 2011]. Softwaresysteme sind heutzutage sehr modular aufgebaut, die Flexibilität und Wiederverwendbarkeit von Bibliotheken steht im Vordergrund, die Anwendungskomplexität wird meist mittels einer Schichtenarchitektur abstrahiert. Auch wenn in einem Softwareprojekt nur eine Teilmenge der verfügbaren Funktionalität benötigt wird, so ist doch oft der Overhead des gesamten Frameworks zu tragen. Dies kann zur Erzeugung großer Mengen von Objekten, übermäßig vielen Funktionsaufrufen und übertrieben großen Datenstrukturen führen. So benötigte beispielsweise in einer Börsensoftware die Übermittlung eines Datumsfeldes von einer SOAP-Message in ein Java-Objekt 58 Umwandlungen und generierte 70 Objekte [Mitchell u.a., 2006].

Es hängt von verschiedenen Faktoren ab, wie sehr die Überbeanspruchung von Ressourcen durch „Software Bloat“, zu einem erhöhten Energieverbrauch führt. Eine zu hohe Ausnutzung des Hauptspeichers, wie sie beim sogenannten „Datastructure Bloat“ vorkommt, ist vom Standpunkt der Energieeffizienz her als geringeres Problem einzustufen als eine zu hohe Auslastung der CPU, wie sie beim „Execution Bloat“ durch vermehrte Funktionsaufrufe und Objektgenerierungen auftritt [Bhattacharya u.a., 2011].

Ein bestimmender Faktor ist auch der durch ineffiziente Software ausgelöste Auslastungsgrad der Hardwareressourcen und ob diese im Gesamtsystem zum Engpass werden. Bei einer „bottleneck“-Ressource wird die allgemeine Systemleistung herabgesetzt, ohne dass die Energieeffizienz maßgeblich beeinflusst wird. Wirkt sich die Auslastung einer Ressource nicht beschränkend auf die Gesamtperformance aus, handelt es sich also um keinen Engpass, wird sich der Energieverbrauch des Systems durch Software Bloat stärker verändern lassen. Der Grad dieser Beeinflussung wiederum ist abhängig von der Energieproportionalität der betroffenen Ressource, also davon, wie sehr der Energieverbrauch vom Nutzungsgrad abhängig ist [Bhattacharya u.a., 2011].

Allgemein ist zu sagen, dass zur Erreichung eines energieeffizienten Gesamtsystems auch die Rolle der Software zu beachten ist. Bei der Planung und Implementierung einer Applikation sollten stets auch die Auswirkungen auf die Hardware in Betracht gezogen werden. Das Ziel von nachhaltiger Softwareentwicklung ist die Einbeziehung des direkten und indirekten Ressourcenverbrauches und auch die Berücksichtigung der Auswirkungen der Softwaresysteme über ihren gesamten Lebenszyklus hinweg [Johann u.a., 2011].

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.