There is scientific consensus today that Earth’s climate is changing and getting warmer, largely because of a dramatic increase in emissions of so-called greenhouse gases (GHGs), like carbon dioxide, since the 19th century. As NASA states, “human activities have profoundly increased carbon dioxide levels (a heat-trapping gas) in Earth’s atmosphere”.
Many very common human activities result in the emission of GHGs, including generating electricity from fossil fuels, air travel and combustion engines, agriculture and concrete production, and so it is tempting to assume that a relatively modern, post-industrial activity, like the information and communications technology (ICT) industry, is largely exempt from having to consider its emissions. Unfortunately, this simply isn’t true.
The contribution of the ICT sector to global greenhouse gas emissions is still being researched by the scientific community, but most estimates place it in the range of 2-4% in 2020 (see the research of Malmodin & Lundén and Belkhir & Elmeligi). If the sector does nothing to reduce its output, this percentage is likely to grow as the sector becomes larger and other sectors actively reduce their emissions.
So, we have some work to do.
A lot of the research into the ICT sector’s greenhouse gas emissions has focused on hardware, which is a natural place to start. For example, one of the studies cited above estimates that data centres produce 45% of the sector’s emissions, networks contribute 24%, smartphones 11%, displays 7%, desktop computers 7% and laptops 7%. These estimates are for whole life cycle emissions, so they include the emissions produced by manufacturing and disposing of the hardware (known as ‘embodied emissions’) as well as the emissions produced during its use.
What many of the hardware-based studies omit is the effect that the software running on the hardware can have on the life cycle emissions of that hardware. We will return to this topic shortly.
There has been an awareness of the emissions produced by the ICT sector’s data centres and hardware for some time, and a significant amount of academic research, regulatory attention (particularly in Europe) and industrial activity has been focused on reducing these emissions.
Taking data centres as an example, in the last 10 years, data centres have become much more efficient, with studies showing that while installed capacity has increased by a factor of 10, data centre power efficiency has improved by 25%, and the efficiency of the hardware within the data centres has improved by a factor of 4-5, depending on workload type (Masanet et al). Clearly, this still amounts to a significant net increase in energy usage but also illustrates the dramatic improvements that have been achieved in data centre and hardware power consumption.
The question that remains is where the software running on this hardware fits into the picture.
Software is a series of instructions for a piece of hardware to execute, so the emissions that software is responsible for are emitted by the underlying hardware. A hardware device invariably causes some GHG emissions – whether it is used or not. GHG are emitted during its production, it uses energy whenever it is switched on, and further GHG emissions are created as part of its final destruction. However, the lifetime emissions of a long-lived piece of hardware can be significantly affected by how it is used and operated, and an important aspect of this is the software it runs.
While in operation, highly utilised hardware will consume more energy than the same hardware with low utilisation, both as a direct result of the device’s electricity consumption and indirectly because of the load that it places on its physical environment, primarily the amount of cooling it needs. However, the environmental impact of this energy can vary depending on how the electricity is generated. Electricity from renewable sources will create considerably fewer net emissions than traditional energy sources, such as fossil fuels.
We also need to be aware that the relationship between the embodied emissions of the device, the energy consumed and the load on the physical environment can be complex and subtle. For example, is it better to run a smaller number of highly utilised high-capacity, relatively inefficient, older devices than a larger number of smaller, more efficient, newer devices when you consider energy consumption and embodied emissions? The answer is rarely obvious since it depends on the relationships between the specifics of the device type and the lifespan and usage of each device, which can take a significant amount of analysis to understand.
During operation, the variable factor that we can affect with our software is the energy consumption. So, apart from using electricity from sustainable sources, the obvious place to start in order to make our software ‘greener’ is to reduce the energy consumption that it causes in the underlying devices, including its compute nodes (CPUs, memory), storage and network devices.
When running software on a single dedicated, physical hardware device, we can estimate our energy usage relatively easily, but in today’s complex, virtualised environments, it can be difficult to know whether we are improving things or not. In a highly virtualised environment, it is difficult to measure the real energy consumption, and there are always many trade-offs to consider. To take one example: is it more energy-efficient to compress large data sets before storage to minimise the energy usage for storage but incur CPU usage for the compression and decompression operations? Well, that depends on the relative energy consumption of different devices, the data size and the access patterns of the data.
We could spend a huge amount of time performing fine-grained analyses of our system in order to understand the emissions caused by our decisions, but we will never have time to do this thoroughly unless it becomes much simpler than it is today.
To cut through this complexity, we can adopt a simplifying principle: the more efficient our software is, the less hardware it will need and the less energy it will cause the hardware to consume, which should minimise its lifetime emissions.
Maximising the efficiency of software can be an involved process, but there is a lot of established knowledge that we can draw on. As well as long-standing industrial practice in software efficiency, there is also an emerging body of knowledge developed by the research community that considers efficiency specifically from a sustainability perspective, such as research by Procaccianti et al and Vos et al, to name just two.
This principle is a useful simplification to help us consider the emissions of our software in operation, but there are some other factors we need to bear in mind as well. What emissions do we cause with our software development work? Test environments, continuous delivery pipelines, code repositories, analysis tools, developer workstations and IDEs and all the other parts of a modern software delivery environment are also responsible for emissions. For example, if we run a full “pre-live” environment to simulate production operation and run workload through it regularly, we may be nearly doubling the emissions created by our software.
We also have to consider our indirect emissions, such as those from office space, people commuting to the office, air travel and so on. These may well be counted elsewhere in a corporate emissions study, so we don’t want to double count, but we need to acknowledge that they are a side effect of our software development activity.
In summary, it is quite difficult to assess whether a particular piece of software is ‘green’ or not. Software development and operation certainly generate GHG emissions, directly and indirectly, but estimating the exact level of emissions is hard, and it can be even harder to know how to reduce them.
Our advice is to use cloud platforms powered by sustainable energy sources wherever possible as, for most people, these are the lowest-emission platforms available to them. Most cloud platforms also offer tools which can provide a rough estimation of the emissions generated by your cloud environment, giving insight into the environmental impact of design decisions. We should also increase our awareness of the emissions generated by our software production process, as discussed above.
If we can take these simple steps and consider these factors throughout our software development activities, we can start to understand the environmental impact of our software and, over time, reduce our overall emissions. However, we currently believe that deciding whether a piece of software is really ‘green’ or not is probably beyond us, and claims that certain software is greener than others should be treated with scepticism.
If we cannot confidently assess the environmental impact of a piece of software today, what does the future hold? How do we move closer to that goal?
Other participants in the ICT ecosystem have led the way to solve this problem, notably the engineers who build data centres and the teams who design hardware devices. In the last decade, both of these parts of the ICT sector have dramatically increased awareness of their environmental impact and made huge improvements in measurement, standardisation and then efficiency, significantly reducing their environmental impact.
We believe that people truly desire for software to follow the same path and that the next phase of environmental awareness in ICT will be the development of measurement methods for the environmental impact of software. These will allow us to understand – and then reduce – the emissions that our software is responsible for. Indeed, in the future, the regulatory forces that have encouraged data centre and hardware designers to take these factors seriously may also emerge for software.
So, we hope that in the not-too-distant future, we’ll be able to take the same quantitative approach to software GHG emissions that we already have for hardware devices and data centres, but in the meantime, there are plenty of simpler ways that we can increase awareness of the environmental impact of our software development and operation.
Belkhir, Lotfi, and Ahmed Elmeligi. “Assessing ICT global emissions footprint: Trends to 2040 & recommendations.” Journal of Cleaner Production 177 (2018): 448-463.
Malmodin, Jens, and Dag Lundén. “The energy and carbon footprint of the global ICT and E&M sectors 2010–2015.” Sustainability 10.9 (2018): 3027.
Masanet, Eric, et al. “Recalibrating global data center energy-use estimates.” Science 367.6481 (2020): 984-986.
Procaccianti, Guiseppe, Héctor Fernández and Patricia Lago, “Empirical evaluation of two best practices for energy-efficient software development”, Journal of Systems and Software, 117(2016): 185-198.
Vos, Sophie, Patricia Lago, Roberto Verdecchia and Ilja Heitlager, “Architectural Tactics to Optimize Software for Energy Efficiency in the Public Cloud”, International Conference on ICT for Sustainability, 2022.
No video selected
Select a video type in the sidebar.