Energy Proportionality and the Promise of Greener Systems

Energy Proportionality and the Promise of Greener Systems

The cloud is just someone else’s computer.

While a funny metaphor and thought-provoking statement, it is ~technically~ true, except that the ‘someone else’ is generally a multinational, beast of a company. In essence, the cloud is just:

  • various providers’ data centres (full of servers)
  • all connected and automated to create a service to sell to companies and individuals.

When using these services we often think of this idea of scale or growth that we need to prepare for, and so we leave a little buffer in case we need it. Often, when looking at systems you will notice a trend of below fifty percent utilisation, to accommodate for spikes or peak times. This is known as overprovisioning–having more resources available than you need at the moment, in anticipation for future needs.

This is your wake-up call to change that mindset.

Preemptively scaling is having a drastic effect on ecosystems.Using energy efficiently and not excessively should become the new norm.

What is Energy Proportionality?

Energy proportionality in servers refers to the principle that the energy efficiency of a server is not linear or proportional to its utilisation. In other words, as the server’s utilisation increases (i.e. the more processes a server is running), the more efficiently it will use energy.

Let’s take the example of a web application running and serving a low amount of requests, say 10 requests per second, and using 1KWh of energy to do so. When we scale it to 20 requests per second, it would potentially only use 1.7KWh, meaning that the increase in utilisation (how many requests are being served) is not directly proportional to energy usage, which will increase at a slower pace than the utilisation.

This ends up looking something like this

power usage vs utilisation graph

The most important thing to note is that the more utilised the server is, the more efficiently the energy starts being used. There are even some features of CPUs that can help better achieve energy proportionality:

  • Wide dynamic power range: this functionality allows the server to consume less energy at lower activity modes but does come with some drawbacks, like latency
  • Active low-power modes: this is generally only on the processor and also has latency and energy penalties attached to them

This is simply how servers are currently designed, but there is ongoing work to get the above graph to be more efficient.

efficient power usage vs utilisation graph

While CPUs are relatively energy efficient, there are still needs for improvements in server subsystems such as memory and storage to achieve better energy efficiency. These subsystems are becoming increasingly responsible for overall system energy consumption.

For a practical example, see Principal Sustainability Engineer Gabi Beyer’s post on using the Perf CLI to measure energy consumption .

Why is Energy Proportionality Important?

While it is difficult to get an exact average, it is common to see very low server utilisation. Some papers put the average at below 30% utilisation while “The Case for Energy-Proportional Computing ” has the typical operating region of a server between 10% and 50% utilisation. Whatever the source is, the numbers are all very low, meaning that we are expending vastly more energy than is needed to run our global IT systems. With the understanding that this wasted energy directly correlates to carbon equivalent emissions being pumped into our atmosphere, it stands to reason that taking energy proportionality into account will have a major impact on creating sustainable systems.

Final Thoughts

While systems engineers are actively developing more robust and energy-efficient hardware and software, platform engineers and system admins can significantly contribute to energy efficiency in their own roles by optimising their existing systems. This can be achieved by identifying underutilised servers and implementing strategies to improve utilisation, like:

  • sharing servers among applications to maximise resource usage
  • Seeing which servers can be scaled down
  • Leveraging autoscaling features to dynamically adjust server resources based on workload fluctuations

As always, almost everything can become a little more energy efficient, from your Christmas tree to your LLM. We just need to consider a few things.

Until next time!