Energy Star for Software Again!!

After I posted a blog on software energy efficiency recently, I realized from some of the comments from readers that most people did not get it. When I talk about software energy efficiency, most people think I am talking about using software to make other things greener. Yes, software can be used to automate and to scale in making other things greener. But I am talking about a particular piece of software being greener.

Here are a few examples to make my point.

Take a sorting program. We can implement such a program with half a dozen algorithms. This is Data Structure/Algorithm 101: the resultant program behaves differently depending on the algorithm used. Some programs take more time than others. Some consume more CPU time and memory than others. Obviously, the version of the sorting program that consumes the least CPU time and memory is the greenest. We can make this discussion more interesting by adding other factors like data structures, the implementation language, and so on.

We can implement such a program using arrays or linked lists. When we use arrays, we can allocate a large area for the arrays or the smallest area to accommodate the input space. We also can select a language for implementation, such as C, C++, scripts, or web languages. There may be more factors involved. I hope this trivial example illustrates my point of making software more energy efficient.

Another example is SMTP server software. SMTP is the de facto standard and is available on Windows, Unix, Linux, Mac, and other platforms for sending email. SMTP is big. It is designed to be implemented as a monolithic chunk, executable rather than modularized. Running such a big executable requires a lot of swapping because not all of it is stored in memory. If it is modularized, each module may fit in memory, reducing swapping. So if software is well designed with modularization in mind, its performance will increase with less computing resources. Everyone knows SMTP needs a rewrite, but it is widely used, and it will take a long time to have a thoroughly quality-assured new version of it.

  – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Reducing Storage Complexity
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

The third example is parallel programming. Scientific application programs tend to be broken into pieces that can be computed in parallel. They save more computing resources that way. In the days of single-core CPUs, this did not make any sense. With the advent of multicore CPUs, we can exploit this computer architecture.

So, again, my point is that each piece of software, without considering its relationship with other things, can be made greener, requiring less computing resources (CPU time and memory) and power. And of course, greener software can also make other things, including other software, greener. I hope I made my point clearer. What do you think?

Zen Kishimoto

About Zen Kishimoto

Seasoned research and technology executive with various functional expertise, including roles in analyst, writer, CTO, VP Engineering, general management, sales, and marketing in diverse high-tech and cleantech industry segments, including software, mobile embedded systems, Web technologies, and networking. Current focus and expertise are in the area of the IT application to energy, such as smart grid, green IT, building/data center energy efficiency, and cloud computing.

, ,

No comments yet.

Leave a Reply