Quarch Plugin
This plugin measures disk power consumption using a Quarch Power Analysis Module. It provides real-time power monitoring in watts and is designed to work with Grid'5000 nodes (e.g., yeti-4 in Grenoble) or any other devices connected to a Quarch Module.
Requirements
Hardware
- A Quarch Power Analysis Module.
- If you want to use it on Grid'5000:
- Have an account on Grid'5000.
- Use a Grenoble node (Quarch module is physically installed on
yeti-4node).
Software
- A working
quarchpyinstallation (Python package) - A Java runtime (configured in
java_bin, provided byquarchpy).
Metrics
The plugin exposes the following metric:
| Name | Type | Unit | Description | Resource | ResourceConsumer | Attributes | More Information |
|---|---|---|---|---|---|---|---|
disk_power_W | F64 | W | Disk power consumption in Watts | local_machine | local_machine | - | Sample is controlled via poll_interval |
Sampling rate is controlled via the plugin configuration (sample, poll_interval).
Configuration
Here is a configuration example of the plugin. It's part of the Alumet configuration file (e.g., alumet-config.toml).
[plugins.quarch]
# --- Quarch connection configuration ---
quarch_ip = "1.2.3.4" # IP address of the module, e.g., "172.17.30.102" for Grenoble Grid'5000
quarch_port = 9760 # Default if unchanged on your module
qis_port = 9780 # Default if unchanged on your module
java_bin = "path_to_java" # Installed with quarchpy: ".../lib/python3.11/site-packages/quarchpy/connection_specific/jdk_jres/lin_amd64_jdk_jre/bin/java"
qis_jar_path = "path_to_qis" # Installed with quarchpy: ".../lib/python3.11/site-packages/quarchpy/connection_specific/QPS/win-amd64/qis/qis.jar"
# --- Measurement configuration ---
poll_interval = "150ms" # Interval between two reported measurements
flush_interval = "1500ms" # Interval between flushing buffered data
Notes:
poll_intervalcontrols how often Alumet queries the Quarch module.flush_intervalcontrols how often buffered measurements are sent downstream.- Ensure
java_binandqis_jar_pathare correct (installed with quarchpy).
Recommended poll_interval and flush_interval
| Sample | ~Hardware Window | poll_interval (recommended) | flush_interval (recommended) |
|---|---|---|---|
| 32 | 0.13 ms | 200 µs | 2 ms |
| 64 | 0.25 ms | 300 µs | 3 ms |
| 128 | 0.5 ms | 500 µs | 5 ms |
| 256 | 1 ms | 1 ms | 10 ms |
| 512 | 2 ms | 2 ms | 20 ms |
| 1K (1024) | 4.1 ms | 5 ms | 50 ms |
| 2K (2048) | 8.2 ms | 10 ms | 100 ms |
| 4K (4096) | 16.4 ms | 20 ms | 200 ms |
| 8K (8192) | 32.8 ms | 50 ms | 500 ms |
| 16K (16384) | 65.5 ms | 100 ms | 1 s |
| 32K (32768) | 131 ms | 150 ms | 1500 ms |
Notes:
- Choosing
poll_interval<hardware window(min 0.13 ms) may result in repeated identical readings. - Choosing
poll_interval>hardware window(max 131 ms) may skip some module measurements, which is acceptable depending on your experiment duration. For example, if you want 1 poll per second,poll_interval= 1s will work.
Usage
Virtual environment (recommended)
To isolate quarchpy, create a Python virtual environment:
$ python3 -m venv /root/<Name_Virtual_Environnement> && \
/root/<Name_Virtual_Environnement>/bin/pip install --upgrade pip && \
/root/<Name_Virtual_Environnement>/bin/pip install --upgrade quarchpy
$ source /root/<Name_Virtual_Environnement>/bin/activate
Commands
# Run a command while measuring disk power
$ alumet-agent --plugins quarch exec <COMMAND_TO_EXEC>
# Run alumet with continuous measurements
$ alumet-agent --plugins quarch run
# Save results to CSV (with another plugin)
$ alumet-agent --output-file "measurements-quarch.csv" --plugins quarch,csv run
Usage on Grid'5000
- The Quarch Module is physically installed on yeti-4 (Grenoble).
- You can access it from any Grenoble node.
- Example configuration for G5K:
quarch_ip = "172.17.30.102"
quarch_port = 9760
qis_port = 9780
Outputs examples
Alumet:
...
[2025-09-01T10:45:40Z INFO alumet::agent::builder] Plugin startup complete.
🧩 1 plugins started:
- quarch v0.1.0
⭕ 24 plugins disabled: ...
📏 1 metric registered:
- disk_power: F64 (W)
📥 1 source, 🔀 0 transform and 📝 0 output registered.
...
With csv plugin:
| metric | timestamp | value | resource_kind | resource_id | consumer_kind | consumer_id | __late_attributes |
|---|---|---|---|---|---|---|---|
| disk_power_W | 2025-09-01T10:45:41.757250914Z | 9.526866534 | local_machine | local_machine | |||
| disk_power_W | 2025-09-01T10:45:42.723658463Z | 9.526885365 | local_machine | local_machine | |||
| disk_power_W | 2025-09-01T10:45:43.723659913Z | 9.528410676 | local_machine | local_machine | |||
| disk_power_W | 2025-09-01T10:45:44.723650353Z | 9.528114186 | local_machine | local_machine |
Troubleshooting
- No metrics appear: check
quarch_ip / ports, and ensure module is powered on. - Java errors: verify
java_binpath from your quarchpy install. - QIS not found: update
qis_jar_pathto the correct installed JAR.
License
Copyright 2025 Marie-Line DA COSTA BENTO.
Alumet project is licensed under the European Union Public Licence (EUPL). See the LICENSE file for more details.
More information
Quarch module commands are based on the SCPI specification.
Commands formats come from the technical manual of the power analysis module. Here is an excerpt:
RECord:AVEraging [rate]
RECord:AVEraging?
RECord:AVEraging:GROup [#number] [rate]
RECord:AVEraging:[#number]?
By default, the module collects samples at a rate of 250,000 samples per second. This can be reduced by averaging across multiple measurements to give a longer recorded period.
For further details, please check the Quarch Github.