Thursday, 30 May 2013

Why software MUST go GREEN !!!

More often than not one will come across the term "Energy Efficiency" or Energy "efficient" when reading marketing material of systems & components. And since software is a major part of most systems, one does wonder what it would mean for software itself ? 

The average software developer probably has no clue about how this concept can be applied to software. For me, at a system level energy is consumed by Hardware (not software) or is lost in transmission from the source of power generation to consumption. Based on this thought, the following inferences come to my mind:

  1. If we use less hardware (nodes, boards, disks, DRAM modules, transistors, etc for the same application) we consume less energy. And that is the case with cloud computing applications.
  2. If the hardware is put near the generation center, then probably their is less transmission loss and energy on the whole is efficiently used, even if the consuming device is just the same. Possibly that's one reason why data centers are located near hydroelectric dams or nuclear power reactors, apart from the obvious advantage of using water cooling in case of the former

While software may have little role in (2), it is an important enabler for (1). It is the demands of the software which decides what hardware is going to be used, not just better energy efficient hardware (which again requires huge energy investment in R&D). Therefore it is equally important in my opinion to write *efficient* software, rather than developing or using the most energy efficient hardware.

The situation was very different 5-10 years back. For e.g., in handheld devices (which are battery powered), software space efficiency was top-constraint, not battery capacity (mah ratings). But today we can see 3 GB of RAM in smartphones (with 4 GB round the corner) implying the space constraints have diminished while  battery life is still a big issue (reduced from 5-7 days to 1 day or lesser) while handling complex applications that make use of that RAM size. RAM size growth has outpaced battery charge holding capacity growth by many folds. Energy efficiency of software is the "pain" now, rather than how many applications we can cram into one device.

Similarly network servers were written with the provision of horizontal scaling of software, assuming the hardware is practically unlimited. If the problem gets bigger/complex, throw more hardware (and power) at it, and we are good to go again. As it turns out today power (including backup diesel generator power) is the main OPEX of service providers who run these servers. The problem will continue to get bigger and complex, but we need to put brakes on how much power is consumed, for we wont have so much or be able to afford so much.

Two radically different software development environments. Same target goal. And that's why we need to pay attention to going green with software construction.

No comments:

Post a Comment