To date, most attempts to manage the costs and patterns of IT related energy consumption have focused on events and processes at the infrastructure layer. It is generally recognized that infrastructure level energy consumption management could end up frustrating the legitimate power consumption demands of business critical applications while oversupplying energy to applications that are relatively unimportant. Nonetheless, analytics technologies and techniques do not, as yet, appear capable of delivering sufficiently robust application process/event to infrastructure process/event correlations to allow us to manage energy consumption at the application level.
In a recent post, I discussed computational complexity in relationship to market equilibrium discovery algorithms and it has occurred to me that computational complexity considerations could be used to guide enterprises in their attempts to determine energy consumption at the application level. In essence, an algorithm’s computational complexity is a measure of how the time and/or space it requires to execute grows with the size of the representation of its input. It is relatively easy to segregate algorithms into a sequence of classes of heightening complexity and applications can be described in terms of the algorithms that they contain. Hence, one can determine which algorithms contained within an application are likely to be invoked. On this basis, an application’s ‘complexity profile’ can be constructed as a function of the frequencies with which its usage requires the invocation of its high complexity algorithms.
So what? Well, an application that frequently executes high complexity algorithms is either consuming comparatively large quantities of space and/or compute time to accomplish its goals and a such a consumption is an excellent proxy for the amount of energy, the application is likely to consume. In other words, when looked at from a slightly different perspective, the entire body of computational complexity research is really a study of how algorithms consume energy and, hence, could serve as a source of guidance for application level energy management.