Skip to content

Commit 5b6e11f

Browse files
feat: add Windows EMI RAPL provider and Windows platform support
1 parent 7a3126d commit 5b6e11f

14 files changed

Lines changed: 1520 additions & 12 deletions

File tree

GMT_RAPL_EMI_Kontext_neuer_Chat.md

Lines changed: 329 additions & 0 deletions
Large diffs are not rendered by default.

config.yml.backup

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
postgresql:
2+
host: localhost
3+
user: postgres
4+
dbname: green-coding
5+
password: test1234
6+
port: 9573
7+
retry_timeout: 300 # Total time to retry database connections on outage/failure (5 minutes)
8+
9+
redis:
10+
host: localhost
11+
port: 6379
12+
13+
security:
14+
# Used to encrypt secrets before storing them in the database. Keep this stable;
15+
# changing it makes previously encrypted DB values unreadable. If these are empty
16+
# no encryption is used.
17+
encryption_public_key_file: null
18+
encryption_private_key_file: null
19+
20+
smtp:
21+
server: SMTP_SERVER
22+
sender: SMTP_SENDER
23+
port: SMTP_PORT
24+
password: SMTP_AUTH_PW
25+
user: SMTP_AUTH_USER
26+
27+
admin:
28+
# This address will get an email, for notifications in the system like an added job through the interface
29+
notification_email: False
30+
# Takes a file path to log all the errors to it. This is disabled if False
31+
error_file: False
32+
# Sends an error notification also via email. This is disabled if False
33+
error_email: False
34+
# This email will always get a copy of email sent which is not already the receipient, even for user-only mails like the "Your report is ready" mail.
35+
email_bcc: False
36+
37+
38+
cluster:
39+
api_url: http://api.green-coding.internal:9142
40+
metrics_url: http://metrics.green-coding.internal:9142
41+
cors_allowed_origins:
42+
- http://api.green-coding.internal:9142
43+
- http://metrics.green-coding.internal:9142
44+
client:
45+
sleep_time_no_job: 300
46+
jobs_processing: "random"
47+
update_os_packages: True
48+
shutdown_on_job_no: suspend
49+
# These two parameters have only effect in cluster mode. When using CLI they will be set via flags --docker-prune and --full-docker-prune only
50+
docker_prune: False
51+
full_docker_prune: True
52+
# define a workload to check cluster noise floor
53+
time_between_control_workload_validations: 21600
54+
send_control_workload_status_mail: False
55+
control_workload:
56+
name: "Measurement control Workload"
57+
uri: "https://github.com/green-coding-solutions/measurement-control-workload"
58+
filename: "usage_scenario.yml"
59+
branch: "event-bound"
60+
comparison_window: 5
61+
phase: "004_[RUNTIME]"
62+
metrics:
63+
psu_energy_ac_mcp_machine:
64+
threshold: 0.01 # 1%
65+
type: stddev_rel
66+
psu_power_ac_mcp_machine:
67+
threshold: 0.01 # 1%
68+
type: stddev_rel
69+
cpu_power_rapl_msr_component:
70+
threshold: 0.01 # 1%
71+
type: stddev_rel
72+
cpu_energy_rapl_msr_component:
73+
threshold: 0.01 # 1%
74+
type: stddev_rel
75+
psu_carbon_ac_mcp_machine:
76+
threshold: 0.01 # 1%
77+
type: stddev_rel
78+
network_total_cgroup_container:
79+
threshold: 10000 # 10 kB
80+
type: stddev
81+
phase_time_syscall_system:
82+
threshold: 0.01 # 1%
83+
type: stddev_rel
84+
85+
86+
machine:
87+
id: 1
88+
description: "Development machine for testing"
89+
base_temperature_value: False
90+
base_temperature_chip: False
91+
base_temperature_feature: False
92+
93+
# Reservations guarantee that GMT always cpu time to execute metric providers and system does not OOM
94+
# Not recommended to alter this in development, but when running on a cluster it should be set
95+
# host_reserved_cpus must always be >= 1 or GMT will fail
96+
host_reserved_cpus: 1
97+
host_reserved_memory: 0
98+
99+
measurement:
100+
full_docker_prune_whitelist:
101+
- martizih/kaniko:slim
102+
metric_providers:
103+
# Please select the needed providers according to the working ones on your system
104+
# More info https://docs.green-coding.io/docs/measuring/metric-providers
105+
# Please activate and deactivate any provider in this list by uncommenting it.
106+
# Keep in mind that some reporters need separate installation steps to be found @
107+
# https://docs.green-coding.io/docs/installation/installation-overview/
108+
# You can ignore any line that starts with #---
109+
#--- Architecture - Linux Only
110+
linux:
111+
#--- Always-On - We recommend these providers to be always enabled
112+
cpu_utilization_procfs_system:
113+
sampling_rate: 99
114+
#--- CGroupV2 - Turn these on if you have CGroupsV2 working on your machine
115+
cpu_utilization_cgroup_container:
116+
sampling_rate: 99
117+
memory_used_cgroup_container:
118+
sampling_rate: 99
119+
network_io_cgroup_container:
120+
sampling_rate: 99
121+
disk_io_cgroup_container:
122+
sampling_rate: 99
123+
#--- RAPL - Only enable these if you have RAPL enabled on your machine
124+
# cpu_energy_rapl_msr_component:
125+
# sampling_rate: 99
126+
# memory_energy_rapl_msr_component:
127+
# sampling_rate: 99
128+
#--- Machine Energy - These providers need special hardware / lab equipment to work
129+
# psu_energy_ac_gude_machine:
130+
# sampling_rate: 99
131+
# psu_energy_ac_powerspy2_machine:
132+
# sampling_rate: 250
133+
# psu_energy_ac_mcp_machine:
134+
# sampling_rate: 99
135+
# psu_energy_ac_ipmi_machine:
136+
# sampling_rate: 99
137+
# psu_energy_dc_rapl_msr_machine:
138+
# sampling_rate: 99
139+
#--- GPU - Only enable these if you have GPUs with power measurement enabled in your machine
140+
# gpu_energy_nvidia_nvml_component:
141+
# sampling_rate: 99
142+
#--- Sensors - these providers need the lm-sensors package installed
143+
# lmsensors_temperature_component:
144+
# sampling_rate: 99
145+
# Please change these values according to the names in '$ sensors'
146+
# chips: ['thinkpad-isa-0000', 'coretemp-isa-0000']
147+
# features: ['CPU', 'Package id 0', 'Core 0', 'Core 1', 'Core 2', 'Core 3']
148+
# lmsensors_fan_component:
149+
# sampling_rate: 99
150+
# Please change these values according to the names in '$ sensors'
151+
# chips: ['thinkpad-isa-0000']
152+
# features: ['fan1', 'fan2']
153+
#--- Debug - These providers should only be needed for debugging and introspection purposes
154+
# cpu_throttling_msr_component:
155+
# sampling_rate: 99
156+
# cpu_frequency_msr_core:
157+
# sampling_rate: 99
158+
# base_ghz: 2.4 # Set to the nominal (non-turbo) base clock of your Intel CPU in GHz
159+
# cpu_time_cgroup_container:
160+
# sampling_rate: 99
161+
# cpu_time_cgroup_system:
162+
# sampling_rate: 99
163+
# cpu_time_procfs_system:
164+
# sampling_rate: 99
165+
# disk_io_procfs_system:
166+
# sampling_rate: 99
167+
# network_io_procfs_system:
168+
# sampling_rate: 99
169+
# remove_virtual_interfaces: True
170+
# disk_used_statvfs_system:
171+
# sampling_rate: 99
172+
# memory_used_procfs_system:
173+
# sampling_rate: 99
174+
#--- Cgroup system monitoring - These providers can be used to monitor background processes
175+
# cpu_utilization_cgroup_system:
176+
# sampling_rate: 99
177+
# cgroups:
178+
# "org.gnome.Shell@wayland.service":
179+
# name: "Window Manager incl. X11"
180+
# "session-2.scope":
181+
# name: "GNOME Desktop"
182+
# memory_used_cgroup_system:
183+
# sampling_rate: 99
184+
# cgroups:
185+
# "org.gnome.Shell@wayland.service":
186+
# name: "Window Manager incl. X11"
187+
# "session-2.scope":
188+
# name: "GNOME Desktop"
189+
# disk_io_cgroup_system:
190+
# sampling_rate: 99
191+
# cgroups:
192+
# "org.gnome.Shell@wayland.service":
193+
# name: "Window Manager incl. X11"
194+
# "session-2.scope":
195+
# name: "GNOME Desktop"
196+
# network_io_cgroup_system:
197+
# sampling_rate: 99
198+
# cgroups:
199+
# "org.gnome.Shell@wayland.service":
200+
# name: "Window Manager incl. X11"
201+
# "session-2.scope":
202+
# name: "GNOME Desktop"
203+
204+
#--- Architecture - MacOS
205+
macos:
206+
#--- MacOS: On Mac you only need this provider. Please remove all others!
207+
powermetrics:
208+
sampling_rate: 499 # If you set this value too low powermetrics will not be able to accommodate the timing. We recommend no lower than 199 ms
209+
cpu_utilization_mach_system:
210+
sampling_rate: 99
211+
#--- Architecture - Windows
212+
#--- Windows: Python runs natively, Docker Desktop runs Linux containers.
213+
windows:
214+
#--- RAPL - Requires the ScaphandreDrv kernel driver to be installed and running.
215+
cpu_energy_rapl_scaphandre_component:
216+
sampling_rate: 99
217+
# Optionally disable individual RAPL domains (cpu_package, cpu_cores, cpu_gpu, dram, psys)
218+
# domains:
219+
# cpu_gpu: False
220+
# dram: False
221+
cpu_utilization_windows_system:
222+
sampling_rate: 99
223+
#--- Architecture - Common
224+
common:
225+
# network_connections_proxy_container:
226+
## host_ip: 192.168.1.2 # This only needs to be enabled if automatic detection fails
227+
228+
#--- Model based - These providers estimate rather than measure. Helpful where measuring is not possible, like in VMs
229+
# psu_energy_ac_sdia_machine:
230+
#-- This is a default configuration. Please change this to your system!
231+
# CPUChips: 1
232+
# TDP: 65
233+
# psu_energy_ac_xgboost_machine:
234+
#-- This is a default configuration. Please change this to your system!
235+
# CPUChips: 1
236+
# HW_CPUFreq: 3200
237+
# CPUCores: 4
238+
# CPUThreads: 4
239+
# TDP: 65
240+
######### The value for memory must be in GB not in GiB
241+
# HW_MemAmountGB: 16
242+
# Hardware_Availability_Year: 2011
243+
######### vhost_ratio is the virtualization degree of the machine. For Bare Metal this is 1. For 1 out of 4 VMs this would be 0.25 etc.
244+
# VHost_Ratio: 1
245+
#
246+
###### DEBUG
247+
# network_connections_tcpdump_system:
248+
# split_ports: True
249+
#--- END
250+
251+
252+
sci:
253+
# https://github.com/Green-Software-Foundation/sci/blob/main/Software_Carbon_Intensity/Software_Carbon_Intensity_Specification.md
254+
255+
# The values specific to the machine will be set here. The values that are specific to the
256+
# software, like R (functional unit), will be set in the usage_scenario.yml
257+
258+
# EL Expected Lifespan; the anticipated time that the equipment will be installed. Value is in years
259+
# The number 3.5 comes from a typical developer machine (Pro Laptop - https://dataviz.boavizta.org/terminalimpact)
260+
EL: 4
261+
# RS Resource-share; the share of the total available resources of the hardware reserved for use by the software.
262+
# This ratio is typically 1 with the Green Metrics Tool unless you use a custom distributed orchestrator
263+
RS: 1
264+
# TE Total Embodied Emissions; the sum of Life Cycle Assessment (LCA) emissions for all hardware components.
265+
# Value is in gCO2eq
266+
# The value has to be identified from vendor datasheets. Here are some example sources:
267+
# https://dataviz.boavizta.org/manufacturerdata
268+
# https://tco.exploresurface.com/sustainability/calculator
269+
# https://www.delltechnologies.com/asset/en-us/products/servers/technical-support/Full_LCA_Dell_R740.pdf
270+
# The default is the value for a developer machine (Pro Laptop - https://dataviz.boavizta.org/terminalimpact)
271+
TE: 181000
272+
# I is the Carbon Intensity at the location of this machine
273+
# The value can either be a number in gCO2e/kWh or a carbon intensity provider that fetches this number dynamically
274+
# https://docs.green-coding.io/docs/measuring/carbon-intensity-providers/carbon-intensity-providers-overview/ (TODO)
275+
# For fixed world-wide values get the number from https://ember-climate.org/insights/research/global-electricity-review-2025/
276+
# The number worldwide for 2024 is 473
277+
# The number 334 that comes as default is for Germany from 2024 and comes from https://app.electricitymaps.com/zone/DE/all/yearly
278+
I: 334
279+
# N is not technically part of the SCI, but we keep the value here for better clustering.
280+
# N is the network energy intensity per transferred data. It transforms values like GB to kWh
281+
# See https://www.green-coding.io/co2-formulas/ for details
282+
N: 0.04106063
283+
284+
#optimization:
285+
# ignore:
286+
# - example_optimization_test
287+
288+
# In order to get the carbon intensity we use electricity maps which requires a token.
289+
# You can get this under https://api-portal.electricitymaps.com/
290+
# This is a free service please note that you need to pay if you want to use this commercially!
291+
#electricity_maps_token: '123'
292+
293+
# Modules API / Frontend
294+
# GMT can selectively activate some API and frontend components. This is asked in the install process and should NOT
295+
# only be changed here as files in different locations are changed too. Please re-run the install process.
296+
activate_scenario_runner: True
297+
activate_eco_ci: True
298+
activate_power_hog: True
299+
activate_carbon_db: True
300+
activate_ai: False
301+
302+
# GMT can activate additional enterprise only functionality
303+
# If you have a subscription insert your token here
304+
ee_token: False

config.yml.example

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,18 @@ measurement:
270270
#--- Architecture - Windows
271271
#--- Windows: Python runs natively, Docker Desktop runs Linux containers.
272272
windows:
273-
#--- RAPL - Requires the ScaphandreDrv kernel driver to be installed and running.
274-
cpu_energy_rapl_scaphandre_component:
273+
#--- RAPL via EMI - No kernel driver required. Works on Windows 11 with Intel/AMD CPUs.
274+
#--- Uses the Windows Energy Meter Interface (inbox PPM driver bridges RAPL MSRs).
275+
#--- Both EMI and Scaphandre can run simultaneously for cross-validation.
276+
cpu_energy_rapl_emi_component:
275277
sampling_rate: 99
276-
# Optionally disable individual RAPL domains (cpu_package, cpu_cores, cpu_gpu, dram, psys)
277-
# domains:
278-
# cpu_gpu: False
279-
# dram: False
278+
#--- RAPL via Scaphandre - Requires the ScaphandreDrv kernel driver (test-mode or signed).
279+
# cpu_energy_rapl_scaphandre_component:
280+
# sampling_rate: 99
281+
# # Optionally disable individual RAPL domains (cpu_package, cpu_cores, cpu_gpu, dram, psys)
282+
# # domains:
283+
# # cpu_gpu: False
284+
# # dram: False
280285
#--- Architecture - Common
281286
common:
282287
# network_connections_proxy_container:

0 commit comments

Comments
 (0)