name: sci-calculation
description: Calculate operational carbon from CPU utilization using the Teads curve and then get operational and embodied carbon too
initialize:
# outputs:
# - csv
plugins:
group-by:
path: 'builtin'
method: GroupBy
# yaml-to-csv:
# method: Shell
# path: "@grnsft/if-plugins"
interpolate:
method: Interpolation
path: builtin
global-config:
method: linear
x:
- 0
- 10
- 50
- 100
y:
- 0.12
- 0.32
- 0.75
- 1.02
input-parameter: cpu/utilization
output-parameter: cpu-factor
cpu-factor-to-wattage:
method: Multiply
path: builtin
global-config:
input-parameters:
- cpu-factor
- thermal-design-power
output-parameter: cpu-wattage
wattage-times-duration:
method: Multiply
path: builtin
global-config:
input-parameters:
- cpu-wattage
- duration
output-parameter: cpu-wattage-times-duration
wattage-to-energy-kwh:
method: Divide
path: builtin
global-config:
numerator: cpu-wattage-times-duration
denominator: 216000
output: cpu-energy-raw
calculate-vcpu-ratio:
method: Divide
path: builtin
global-config:
numerator: vcpus-allocated
denominator: vcpus-total
output: vcpu-ratio
correct-cpu-energy-for-vcpu-ratio:
method: Divide
path: builtin
global-config:
numerator: cpu-energy-raw
denominator: vcpu-ratio
output: cpu/energy
sum-energy-components:
path: builtin
method: Sum
global-config:
input-parameters:
- cpu/energy
- network/energy
output-parameter: energy
embodied-carbon:
path: builtin
method: SciEmbodied
operational-carbon:
path: builtin
method: Multiply
global-config:
input-parameters:
- energy
- grid/carbon-intensity
output-parameter: carbon-operational
sum-carbon:
path: builtin
method: Sum
global-config:
input-parameters:
- carbon-operational
- carbon-embodied
output-parameter: carbon # total carbon in gCO2eq
sci:
path: builtin
method: Sci
global-config:
functional-unit: machine
tree:
children:
child:
pipeline:
- group-by
- interpolate
- cpu-factor-to-wattage
- wattage-times-duration
- wattage-to-energy-kwh
- calculate-vcpu-ratio
- correct-cpu-energy-for-vcpu-ratio
- sum-energy-components
- embodied-carbon
- operational-carbon
- sum-carbon
- sci
# - yaml-to-csv
config:
group-by:
group:
- instance-type
# yaml-to-csv:
# executable: python C:\Users\martha.calder-jones\OneDrive - University College London\UCL_comp_sci\Summer Project\HPSusSys\src\yaml-to-csv.py -c C:\Users\martha.calder-jones\OneDrive - University College London\UCL_comp_sci\Summer Project\HPSusSys\output.csv -j
defaults:
device/emissions-embodied: 1533.120 # gCO2eq (random for now) and is the sum of Life Cycle Assessment (LCA) emissions for the component
time-reserved: 3600 # 1hr in seconds
grid/carbon-intensity: 35 # this is the number for London (June 2024)
device/expected-lifespan: 94608000 # 3 years in seconds == the length of time, in seconds, between a component's manufacture and its disposal
resources-reserved: vcpus-allocated
resources-total: vcpus-total
machine: 1 # this is for 1 machine right now as have taken the average for machines rather than data for all machines
duration: 21600
# cloud/region: uk-west # don't think i need this as not using cloud metadata?
inputs:
- timestamp: 2024-07-14T00:00:00.000Z
thermal-design-power: 125
vcpus-total: 24 #Total VCPUs for Intel Core i9-12900K (8 P-cores and 8 E-cores with Hyper-Threading)
vcpus-allocated: 1 # need to check
cpu/utilization: 0.76
network/energy: 0.000001 # this is random right now
instance-type: c24
- timestamp: 2024-07-14T00:00:00.000Z
thermal-design-power: 165
vcpus-total: 28
vcpus-allocated: 1 # need to check
cpu/utilization: 0.13
network/energy: 0.000001 # this is random right now
instance-type: c28