The objective of the proof of concept is to make the power consumption and embedded carbon emissions from the underlying server visible within a server-side software application.
Four simple examples of the resulting visibility are:
-
As a HTTP Header which is attached to a request to a HTTP-based API, e.g.
X-Carbon-Footprint: { power_consumption: 122 watt/hours, embedded_carbon: 12kg }
-
Displayed on a webpage that was rendered server-side
-
Monthly reports on the total power consumption and embedded carbon of an application potentially broken down by request, virtual machine or container
-
A continuous integration system, which calculates the power consumption and embedded carbon for each test run or build, e.g. how much was consumed during the entire execution
To validate this proof of concept, we require diverse test beds where we can test the implementation of our data collection & calculation approaches.
What is required of a test bed?
The requirements are ordered by priority, not all of them may be necessary, the more requirements can be met, the better for the validation effort.
- A non-productive virtualization or container environment, such as Kubernetes, OpenStack or comparable
- The specification and product name of the underlying server (age, hardware configuration, specific model name and manufacturer) as well as the power settings of the BIOS (eco-mode on/off and any other changes)
- Root-level access to the physical server which is hosting the hypervisor or container platform
- An external power metering and observation system that is not within the server itself, this can be:
- A vendor-specific power monitoring system, such as from HPE
- An IT monitoring system, such as Prometheus or nagios which observes the power consumption of the physical server
- A data center infrastructure management system (DCIM) which observes the power consumption of the Power Distribution Unit (PDU) in the rack in which the server is situated on a per-socket basis
- Alternatively a smart PDU which is capable to report the power consumption per socket via SNMP, modbus or API (e.g. Legrand PX3 series)
- Physical or remote-hands support for debugging the systems under (4)
What are we going to do on the test bed?
We are going to deploy a simple test system based on various components that collect three timeseries data streams which we use to calculate the final power consumption & embedded emissions per container or virtual machine:
- Resource consumption per virtual machine or container (memory, CPU, storage, etc.)
- Power consumption of the underlying physical server (either via the server itself, e.g. via lf_perf or Intel RAPL)
- Operating time of each virtual machine or container (e.g. when it was started, stopped, paused)
These will be collected through the deployment of the following components: