-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathconfig.yml.example
More file actions
379 lines (348 loc) · 15.5 KB
/
Copy pathconfig.yml.example
File metadata and controls
379 lines (348 loc) · 15.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
postgresql:
host: green-coding-postgres-container
user: postgres
dbname: green-coding
password: PLEASE_CHANGE_THIS
port: 9573
retry_timeout: 300 # Total time to retry database connections on outage/failure (5 minutes)
redis:
host: green-coding-redis-container
port: 6379
security:
# Used to encrypt secrets before storing them in the database. Keep this stable;
# changing it makes previously encrypted DB values unreadable. If these are empty
# no encryption is used.
encryption_public_key_file: null
encryption_private_key_file: null
smtp:
server: SMTP_SERVER
sender: SMTP_SENDER
port: SMTP_PORT
password: SMTP_AUTH_PW
user: SMTP_AUTH_USER
admin:
# This address will get an email, for notifications in the system like an added job through the interface
notification_email: False
# Takes a file path to log all the errors to it. This is disabled if False
error_file: False
# Sends an error notification also via email. This is disabled if False
error_email: False
# 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.
email_bcc: False
cluster:
api_url: __API_URL__
metrics_url: __METRICS_URL__
cors_allowed_origins:
- __API_URL__
- __METRICS_URL__
client:
sleep_time_no_job: 300
jobs_processing: "random"
update_os_packages: True
shutdown_on_job_no: suspend
# Force a reboot after the machine has been running for this many seconds. Only triggers when no
# measurement is active. If the job queue is never empty the reboot will be deferred indefinitely.
# Set to False or 0 to disable. Example: 86400 = 24 hours.
reboot_after_seconds: False
# 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
docker_prune: False
full_docker_prune: True
# define a workload to check cluster noise floor
time_between_control_workload_validations: 21600
send_control_workload_status_mail: False
control_workload:
name: "Measurement control Workload"
uri: "https://github.com/green-coding-solutions/measurement-control-workload"
filename: "usage_scenario.yml"
branch: "event-bound"
comparison_window: 5
phase: "004_[RUNTIME]"
metrics:
psu_energy_ac_mcp_machine:
threshold: 0.01 # 1%
type: stddev_rel
psu_power_ac_mcp_machine:
threshold: 0.01 # 1%
type: stddev_rel
cpu_power_rapl_msr_component:
threshold: 0.01 # 1%
type: stddev_rel
cpu_energy_rapl_msr_component:
threshold: 0.01 # 1%
type: stddev_rel
psu_carbon_ac_mcp_machine:
threshold: 0.01 # 1%
type: stddev_rel
network_total_cgroup_container:
threshold: 10000 # 10 kB
type: stddev
custom_sysbench_events_sci_global:
threshold: 0.01
type: stddev_rel
phase_time_syscall_system:
threshold: 0.01 # 1%
type: stddev_rel
machine:
id: 1
description: "Development machine for testing"
base_temperature_value: False
base_temperature_chip: False
base_temperature_feature: False
# Reservations guarantee that GMT always cpu time to execute metric providers and system does not OOM
# Not recommended to alter this in development, but when running on a cluster it should be set
# host_reserved_cpus must always be >= 1 or GMT will fail
host_reserved_cpus: 1
host_reserved_memory: 0
# Optional: if set, system_checks verifies that the named RAPL domain power limits are
# exactly equal to the configured values (in Watts). Omit any sub-key to skip that domain check.
# Useful to confirm consistent power capping across cluster nodes.
# rapl_power_capping:
# package: null # per-socket package power limit in Watts (name starts with "package-")
# dram: null # DRAM domain power limit in Watts
# psys: null # platform-wide (psys) power limit in Watts
# Optional: if set, system_checks verifies that Docker is configured to use this URL as a
# registry mirror. Useful to confirm a private or local registry mirror is active on the machine.
# docker_registry_url: null
# Optional: if set, system_checks verifies the total logical CPU count (including SMT/HT threads).
# Useful to detect hot-plug events or unexpected HT state changes.
# cpu_cores: null
# Optional: if set, system_checks verifies total installed RAM matches this value (whole GB).
# Useful to detect failed or removed DIMMs.
# dram_gb: null
# Optional: if set, system_checks warns when any connected USB device is not in this allowlist.
# Each entry is matched as a substring against lsusb output lines (ID or name).
# Useful to detect unexpected USB peripherals on cluster nodes.
# usb_devices:
# - "8087:0026" # Intel USB hub (example)
# - "046d:c52b" # Logitech Unifying Receiver (example)
# Optional: if set, system_checks warns when any connected PCI device is not in this allowlist.
# Each entry is matched as a substring against lspci output lines.
# Useful to detect unexpected cards added to the machine.
# pci_devices:
# - "Network controller" # (example substring)
# - "SATA controller" # (example substring)
# Optional: expected CPU scaling governor for all cores (e.g. "performance").
# Warns if any core deviates. Common silent drift after reboots.
# cpu_governor: null
# Optional: expected current CPU frequency in MHz. Warns if any core deviates by more than ±10 MHz.
# Reads scaling_cur_freq; useful to confirm frequency is locked (e.g. via intel_pstate min=max).
# cpu_frequency_mhz: null
# Optional: expected cpufreq scaling driver (e.g. "intel_pstate", "acpi-cpufreq").
# A different driver may apply different power and frequency policies.
# cpu_scaling_driver: null
# Optional: expected SMT/Hyper-Threading state. true = enabled, false = disabled.
# cpu_smt: null
# Optional: expected CPU turbo boost state. true = enabled, false = disabled.
# cpu_turbo_boost: null
measurement:
full_docker_prune_whitelist:
- martizih/kaniko:slim
metric_providers:
# Please select the needed providers according to the working ones on your system
# More info https://docs.green-coding.io/docs/measuring/metric-providers
# Please activate and deactivate any provider in this list by uncommenting it.
# Keep in mind that some reporters need separate installation steps to be found @
# https://docs.green-coding.io/docs/installation/installation-overview/
# You can ignore any line that starts with #---
#--- Architecture - Linux Only
linux:
#--- Always-On - We recommend these providers to be always enabled
cpu_utilization_procfs_system:
sampling_rate: 99
#--- CGroupV2 - Turn these on if you have CGroupsV2 working on your machine
cpu_utilization_cgroup_container:
sampling_rate: 99
memory_used_cgroup_container:
sampling_rate: 99
network_io_cgroup_container:
sampling_rate: 99
disk_io_cgroup_container:
sampling_rate: 99
#--- RAPL - Only enable these if you have RAPL enabled on your machine
# cpu_energy_rapl_msr_component:
# sampling_rate: 99
# memory_energy_rapl_msr_component:
# sampling_rate: 99
#--- Machine Energy - These providers need special hardware / lab equipment to work
# psu_energy_ac_gude_machine:
# sampling_rate: 99
# psu_energy_ac_powerspy2_machine:
# sampling_rate: 250
# psu_energy_ac_mcp_machine:
# sampling_rate: 99
# psu_energy_ac_ipmi_machine:
# sampling_rate: 99
# psu_energy_dc_rapl_msr_machine:
# sampling_rate: 99
#--- GPU - Only enable these if you have GPUs with power measurement enabled in your machine
# gpu_energy_nvidia_nvml_component:
# sampling_rate: 99
#--- Sensors - these providers need the lm-sensors package installed
# lmsensors_temperature_component:
# sampling_rate: 99
# Please change these values according to the names in '$ sensors'
# chips: ['thinkpad-isa-0000', 'coretemp-isa-0000']
# features: ['CPU', 'Package id 0', 'Core 0', 'Core 1', 'Core 2', 'Core 3']
# lmsensors_fan_component:
# sampling_rate: 99
# Please change these values according to the names in '$ sensors'
# chips: ['thinkpad-isa-0000']
# features: ['fan1', 'fan2']
#--- Debug - These providers should only be needed for debugging and introspection purposes
# cpu_throttling_msr_component:
# sampling_rate: 99
# cpu_frequency_msr_core:
# sampling_rate: 99
# base_ghz: 2.4 # Set to the nominal (non-turbo) base clock of your Intel CPU in GHz
# cpu_time_cgroup_container:
# sampling_rate: 99
# cpu_time_cgroup_system:
# sampling_rate: 99
# cpu_time_procfs_system:
# sampling_rate: 99
# disk_io_procfs_system:
# sampling_rate: 99
# network_io_procfs_system:
# sampling_rate: 99
# remove_virtual_interfaces: True
# disk_used_statvfs_system:
# sampling_rate: 99
# memory_used_procfs_system:
# sampling_rate: 99
#--- Cgroup system monitoring - These providers can be used to monitor background processes
# cpu_utilization_cgroup_system:
# sampling_rate: 99
# cgroups:
# "org.gnome.Shell@wayland.service":
# name: "Window Manager incl. X11"
# "session-2.scope":
# name: "GNOME Desktop"
# memory_used_cgroup_system:
# sampling_rate: 99
# cgroups:
# "org.gnome.Shell@wayland.service":
# name: "Window Manager incl. X11"
# "session-2.scope":
# name: "GNOME Desktop"
# disk_io_cgroup_system:
# sampling_rate: 99
# cgroups:
# "org.gnome.Shell@wayland.service":
# name: "Window Manager incl. X11"
# "session-2.scope":
# name: "GNOME Desktop"
# network_io_cgroup_system:
# sampling_rate: 99
# cgroups:
# "org.gnome.Shell@wayland.service":
# name: "Window Manager incl. X11"
# "session-2.scope":
# name: "GNOME Desktop"
#--- Architecture - MacOS
macos:
#--- MacOS: On Mac you only need this provider. Please remove all others!
powermetrics:
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
cpu_utilization_mach_system:
sampling_rate: 99
#--- Architecture - Windows
#--- Windows: Python runs natively, Docker Desktop runs Linux containers.
windows:
#--- RAPL - Requires the ScaphandreDrv kernel driver to be installed and running.
cpu_energy_rapl_scaphandre_component:
sampling_rate: 99
# Optionally disable individual RAPL domains (cpu_package, cpu_cores, cpu_gpu, dram, psys)
# domains:
# cpu_gpu: False
# dram: False
#--- Architecture - Common
common:
# network_connections_proxy_container:
## host_ip: 192.168.1.2 # This only needs to be enabled if automatic detection fails
#--- Model based - These providers estimate rather than measure. Helpful where measuring is not possible, like in VMs
# psu_energy_ac_sdia_machine:
#-- This is a default configuration. Please change this to your system!
# CPUChips: 1
# TDP: 65
# psu_energy_ac_xgboost_machine:
#-- This is a default configuration. Please change this to your system!
# CPUChips: 1
# HW_CPUFreq: 3200
# CPUCores: 4
# CPUThreads: 4
# TDP: 65
######### The value for memory must be in GB not in GiB
# HW_MemAmountGB: 16
# Hardware_Availability_Year: 2011
######### 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.
# VHost_Ratio: 1
#
#--- Carbon intensity
# carbon_intensity_elephant_machine:
# region: 'DE'
# sampling_rate: 99 # Remove if you don't want value padding
# provider: 'bundesnetzagentur'
# elephant:
# host: localhost
# port: 8085
# protocol: http
# carbon_intensity_electricitymaps_machine:
# region: 'DE'
# token: 'XXXX'
# sampling_rate: 99 # Remove if you don't want value padding
carbon_intensity_static_machine:
# Static carbon intensity in gCO2e/kWh. Replaces the former SCI 'I' value.
# The number 445 is global 2024 (https://www.iea.org/reports/electricity-2025/emissions)
value: 445
sampling_rate: 99
# carbon_intensity_level_electricitymaps_machine:
# region: 'DE'
# token: 'XXXX'
# sampling_rate: 99 # Remove if you don't want value padding
###### DEBUG
# network_connections_tcpdump_system:
# split_ports: True
#--- END
sci:
# https://github.com/Green-Software-Foundation/sci/blob/main/Software_Carbon_Intensity/Software_Carbon_Intensity_Specification.md
# The values specific to the machine will be set here. The values that are specific to the
# software, like R (functional unit), will be set in the usage_scenario.yml
# EL Expected Lifespan; the anticipated time that the equipment will be installed. Value is in years
# The number 3.5 comes from a typical developer machine (Pro Laptop - https://dataviz.boavizta.org/terminalimpact)
EL: 4
# RS Resource-share; the share of the total available resources of the hardware reserved for use by the software.
# This ratio is typically 1 with the Green Metrics Tool unless you use a custom distributed orchestrator
RS: 1
# TE Total Embodied Emissions; the sum of Life Cycle Assessment (LCA) emissions for all hardware components.
# Value is in gCO2eq
# The value has to be identified from vendor datasheets. Here are some example sources:
# https://dataviz.boavizta.org/manufacturerdata
# https://tco.exploresurface.com/sustainability/calculator
# https://www.delltechnologies.com/asset/en-us/products/servers/technical-support/Full_LCA_Dell_R740.pdf
# The default is the value for a developer machine (Pro Laptop - https://dataviz.boavizta.org/terminalimpact)
TE: 181000
# Carbon Intensity (SCI 'I') is now provided by a metric provider — see the
# carbon_intensity_*_machine entries under metric_providers above (e.g. carbon_intensity_static_machine).
# N is not technically part of the SCI, but we keep the value here for better clustering.
# N is the network energy intensity per transferred data. It transforms values like GB to kWh
# See https://www.green-coding.io/co2-formulas/ for details
N: 0.04106063
#optimization:
# ignore:
# - example_optimization_test
# In order to get the carbon intensity we use electricity maps which requires a token.
# You can get this under https://api-portal.electricitymaps.com/
# This is a free service please note that you need to pay if you want to use this commercially!
#electricity_maps_token: '123'
# Modules API / Frontend
# GMT can selectively activate some API and frontend components. This is asked in the install process and should NOT
# only be changed here as files in different locations are changed too. Please re-run the install process.
activate_scenario_runner: False
activate_eco_ci: False
activate_power_hog: False
activate_carbon_db: False
activate_ai: False
activate_software_view: False
# GMT can activate additional enterprise only functionality
# If you have a subscription insert your token here
ee_token: False