@grnsft/if
Version:
Impact Framework
292 lines • 8.49 kB
YAML
name: pipeline-with-aggregate
description: a full pipeline with the aggregate feature enabled
tags:
aggregation:
metrics:
- carbon
type: "both"
initialize:
plugins:
"interpolate":
method: Interpolation
path: "builtin"
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"
parameter-metadata:
inputs:
cpu/utilization:
unit: percentage
description: refers to CPU utilization.
aggregation-method:
time: avg
component: avg
outputs:
cpu-factor:
unit: kWh
description: result of interpolate
aggregation-method:
time: avg
component: avg
"cpu-factor-to-wattage":
method: Multiply
path: builtin
config:
input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
output-parameter: "cpu-wattage"
parameter-metadata:
inputs:
cpu-factor:
unit: kWh
description: result of interpolate
aggregation-method:
time: avg
component: avg
cpu/thermal-design-power:
unit: kWh
description: thermal design power for a processor
aggregation-method:
time: avg
component: avg
outputs:
cpu-wattage:
unit: kWh
description: the energy used by the CPU
aggregation-method:
time: sum
component: sum
"wattage-times-duration":
method: Multiply
path: builtin
config:
input-parameters: ["cpu-wattage", "duration"]
output-parameter: "cpu-wattage-times-duration"
"wattage-to-energy-kwh":
method: Divide
path: "builtin"
config:
numerator: cpu-wattage-times-duration
denominator: 3600000
output: cpu-energy-raw
parameter-metadata:
inputs:
cpu-wattage-times-duration:
unit: kWh
description: CPU wattage multiplied by duration
aggregation-method:
time: sum
component: sum
outputs:
cpu-energy-raw:
unit: kWh
description: Raw energy used by CPU in kWh
aggregation-method:
time: sum
component: sum
"calculate-vcpu-ratio":
method: Divide
path: "builtin"
config:
numerator: vcpus-total
denominator: vcpus-allocated
output: vcpu-ratio
parameter-metadata:
inputs:
vcpus-total:
unit: count
description: total number of vcpus available on a particular resource
aggregation-method:
time: copy
component: copy
vcpus-allocated:
unit: count
description: number of vcpus allocated to particular resource
aggregation-method:
time: copy
component: copy
outputs:
vcpu-ratio:
unit: none
description: Ratio of vCPUs
aggregation-method:
time: copy
component: copy
"correct-cpu-energy-for-vcpu-ratio":
method: Divide
path: "builtin"
config:
numerator: cpu-energy-raw
denominator: vcpu-ratio
output: cpu-energy-kwh
"sci-embodied":
path: "builtin"
method: SciEmbodied
"operational-carbon":
method: Multiply
path: builtin
config:
input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
output-parameter: "carbon-operational"
parameter-metadata:
inputs:
cpu-energy-kwh:
unit: kWh
description: Corrected CPU energy in kWh
aggregation-method:
time: sum
component: sum
grid/carbon-intensity:
unit: gCO2eq/kWh
description: Carbon intensity for the grid
aggregation-method:
time: avg
component: avg
outputs:
carbon-operational:
unit: gCO2eq
description: Operational carbon footprint
aggregation-method:
time: sum
component: sum
"sci":
path: "builtin"
method: Sci
config:
functional-unit: requests # factor to convert per time to per f.unit
parameter-metadata:
inputs:
requests:
unit: none
description: expressed the final SCI value
aggregation-method:
time: sum
component: sum
"sum-carbon":
path: "builtin"
method: Sum
config:
input-parameters:
- carbon-operational
- embodied-carbon
output-parameter: carbon
parameter-metadata:
outputs:
carbon:
unit: gCO2eq
description: product of carbon
aggregation-method:
time: sum
component: sum
"time-sync":
method: TimeSync
path: "builtin"
config:
start-time: "2023-12-12T00:00:00.000Z"
end-time: "2023-12-12T00:01:00.000Z"
interval: 5
allow-padding: true
tree:
children:
child-1:
pipeline:
regroup:
- cloud/region
- cloud/instance-type
compute:
- interpolate
- cpu-factor-to-wattage
- wattage-times-duration
- wattage-to-energy-kwh
- calculate-vcpu-ratio
- correct-cpu-energy-for-vcpu-ratio
- sci-embodied
- operational-carbon
- sum-carbon
- time-sync
- sci
defaults:
cpu/thermal-design-power: 100
grid/carbon-intensity: 800
device/emissions-embodied: 1533.120 # gCO2eq
time-reserved: 3600 # 1hr in seconds
device/expected-lifespan: 94608000 # 3 years in seconds
vcpus-total: 8
vcpus-allocated: 1
inputs:
- timestamp: "2023-12-12T00:00:00.000Z"
cloud/instance-type: A1
cloud/region: uk-west
duration: 1
cpu/utilization: 10
requests: 10
- timestamp: "2023-12-12T00:00:01.000Z"
duration: 5
cpu/utilization: 20
cloud/instance-type: A1
cloud/region: uk-west
requests: 5
- timestamp: "2023-12-12T00:00:06.000Z"
duration: 7
cpu/utilization: 15
cloud/instance-type: A1
cloud/region: uk-west
requests: 15
- timestamp: "2023-12-12T00:00:13.000Z"
duration: 30
cloud/instance-type: A1
cloud/region: uk-west
cpu/utilization: 15
requests: 30
child-2:
pipeline:
regroup:
- cloud/region
- cloud/instance-type
compute:
- interpolate
- cpu-factor-to-wattage
- wattage-times-duration
- wattage-to-energy-kwh
- calculate-vcpu-ratio
- correct-cpu-energy-for-vcpu-ratio
- sci-embodied
- operational-carbon
- sum-carbon
- time-sync
- sci
defaults:
cpu/thermal-design-power: 100
grid/carbon-intensity: 800
device/emissions-embodied: 1533.120 # gCO2eq
time-reserved: 3600 # 1hr in seconds
device/expected-lifespan: 94608000 # 3 years in seconds
vcpus-total: 8
vcpus-allocated: 1
inputs:
- timestamp: "2023-12-12T00:00:00.000Z"
duration: 1
cpu/utilization: 30
cloud/instance-type: A1
cloud/region: uk-west
requests: 100
- timestamp: "2023-12-12T00:00:01.000Z"
duration: 5
cpu/utilization: 28
cloud/instance-type: A1
cloud/region: uk-west
requests: 150
- timestamp: "2023-12-12T00:00:06.000Z"
duration: 7
cpu/utilization: 40
cloud/instance-type: A1
cloud/region: uk-west
requests: 110
- timestamp: "2023-12-12T00:00:13.000Z"
duration: 30
cpu/utilization: 33
cloud/instance-type: A1
cloud/region: uk-west
requests: 180