For some time, I have been thinking about Green IT and whether the software development group has a contribution to make to a sustainable organization. Well, it the September 2011 edition of the IEEE Computer journal, Suparna Bhattacharya, K. Gopinath, Karthick Rajamani and Manish Gupta assert that bloated software code can waste energy. They ask the question, "Is modularity a hurdle to Green Software?" My first reaction was to check the date of the article to make sure it was not the April 1 edition But then the question actually did resonate a little because I remembered my days running a software development group with a fast transaction processing application. The architects and the test results sometimes confirmed that neatly structured code and efficiency of operation could be in conflict.
The authors sum up the issue succinctly so I will quote them, "During the past two decades, software design paradigms have evolved to prioritize programmer productivity over run-time efficiency in part due to dramatic improvements in performance enabled through CMOS technology." They argue that modular programming often results in an overhead (or "bloat") of operational but seldom used functionality, in their words, "run-time resource consumption disproportionate to the actual function being delivered." Some examples quoted include:
- the execution of excess function calls
- the generation of excess objects
- the creation of excessively large data structures
Unfortunately, current state-of-the-art techniques can't measure how much overall excess resource consumption and energy waste are attributable to bloat. Hence, measures of bloat are heuristics-based and tend to be narrowly defined for, say, one type of problem with one programming language. One challenge is that the impact of bloat is dependent of the current utilization level of a physical resource. If the physical resource is current bottleneck then a small amount of software bloat reduction can have a large impact of the overall system and energy performance. If we cannot remove software bloat, we might be able to mitigate it's effects and the authors recommend a lean software approach.
The authors conclude that the relations between bloat, bottlenecks and hardware power characteristics determine the exact impact of bloat on energy efficiency. They recommend adopting an integrated analysis of software bloat and hardware platforms. Personally, I think that this line of research could play an important part in the future of cloud computing since ultimately the scale of the physical resources consumed will be a major driver of the cost of hosting your application in the cloud.