When installing and setting up experiment-runner, one common issue is running:
pip3 install -r requirments.txtand getting the following error:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz
Some Linux distributions (especially Ubuntu 24+, Debian, and Fedora) protect the system Python installation to avoid breaking system packages.
Run:
pip3 install -r requirments.txt --break-system-packagesUse a Python virtual environment:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtWhen using EnergiBridge or JoularCore on Linux systems (especially AMD CPUs), you may encounter the following error when running the experiment:
thread 'main' (33575) panicked at src/cpu/amd.rs:20:76:
called `Result::unwrap()` on an `Err` value: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
The Rust profiler is trying to access low-level CPU energy counters (MSR / RAPL interfaces), but Linux blocks access for normal users.
Run:
sudo modprobe msrThen verify the device exists:
ls /dev/cpu/0/msrExpected output:
/dev/cpu/0/msr
If the file does not exist, the kernel module did not load correctly.
Run:
ls -l /dev/cpu/0/msrIf you see something similar to:
crw------- 1 root root
then only the root user can access the CPU energy counters.
Run:
sudo chmod o+r /dev/cpu/*/msrThis temporarily allows non-root users to read the MSR registers.
Some Linux systems completely block low-level profiling access.
Run:
cat /proc/sys/kernel/perf_event_paranoidIf the value is:
2
3
4
then Linux is blocking low-level performance counters.
Run:
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoidThis temporarily lowers the kernel restrictions and allows profiling tools to access hardware counters.