Troubleshooting¶
This page covers common issues and their solutions when using Amphimixis.
Table of Contents¶
Installation¶
pip install fails with a Python version error¶
Amphimixis requires Python 3.12 or later. Check your version:
python3 --version
If your system Python is older, install a newer version or use uv to manage Python versions:
uv venv --python 3.12
uv pip install git+https://github.com/ebzych/amphimixis.git@stable
Or you can install Python 3.12 or newer from your distribution or from python.org, then create a virtual environment and install Amphimixis with pip:
python3 -m venv .venv
source .venv/bin/activate
pip install git+https://github.com/ebzych/amphimixis.git@stable
The amixis command is not found after installation¶
The entry point may not be on your PATH. Activate the virtual environment where you installed the package:
source .venv/bin/activate
amixis --help
If you are using uv, you can also run amixis without activating the environment:
uv run amixis --help
If you installed with pip install --user, ensure ~/.local/bin is on your PATH.
System Dependencies¶
Note: The commands in this section require root privileges. Run them with
sudoor as root.
perf command not found¶
perf is part of the Linux kernel tools package. Install it on each machine where profiling will run:
Debian / Ubuntu:
apt install linux-tools-common linux-tools-generic
Arch Linux:
pacman -S perf
Fedora:
dnf install perf
perf archive is not available¶
Some distributions (notably Ubuntu) ship perf without perf archive. This script is required to resolve build IDs after profiling. Fix it by downloading the script from the Linux kernel repository:
mkdir -p /usr/libexec/perf-core
curl -s https://raw.githubusercontent.com/torvalds/linux/master/tools/perf/perf-archive.sh > /usr/libexec/perf-core/perf-archive
chmod +x /usr/libexec/perf-core/perf-archive
See the original discussion.
rsync not found on remote machine¶
rsync must be installed on each machine referenced in your input.yml:
Debian / Ubuntu:
apt install rsync
Arch Linux:
pacman -S rsync
Fedora:
dnf install rsync
sshpass not found¶
sshpass is required only when connecting to remote machines with password authentication. Install it on the machine where you run Amphimixis:
Debian / Ubuntu:
apt install sshpass
Arch Linux:
pacman -S sshpass
Fedora:
dnf install sshpass
If your configuration uses remote machines authenticated with SSH keys instead of passwords, start ssh-agent and add your private key before running Amphimixis:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/<your_private_key_name>
Build Failures¶
CMake configuration fails¶
Common causes:
Missing
CMakeLists.txtin the project rootMissing dependencies (libraries, headers) referenced in
CMakeLists.txtToolchain not available on the build machine
Check the build log in amphimixis.log for the exact error.
Build succeeds but no executable is found¶
In builds, you can optionally specify an executables list for each build. Each path must be relative to that build’s output directory, for example bin/my_app. If executables is omitted, Amphimixis profiles the first executable file it finds in the build directory. To ensure the correct binary is profiled, specify it explicitly:
builds:
- build_machine: 1
run_machine: 1
recipe_id: 1
executables:
- bin/my_app
Configuration Failures¶
input.yml validation fails¶
Run the validator to see the exact error:
amixis validate /path/to/input.yml
Common mistakes:
Missing required fields:
platforms,recipes,buildsmust be non-empty listsbuild_machineorrun_machinereferences aplatform:idthat does not existrecipe_idreferences a recipe that does not existportoutside the valid range (1-65535)
build_system or runner was not specified¶
Amphimixis will auto-detect them from the target project. If the project has a CMakeLists.txt, CMake is selected. Else if a Makefile is found, Make is used. The runner defaults to Ninja if the build system is CMake.
executables list is duplicated across builds¶
Use YAML anchors and aliases to avoid duplication:
executables: &my_executables
- bin/my_app
- tests/my_benchmark
builds:
- build_machine: 1
run_machine: 1
recipe_id: 1
executables: *my_executables
- build_machine: 1
run_machine: 1
recipe_id: 2
executables: *my_executables
Profiling Failures¶
Note: Commands that modify kernel parameters require root privileges. Run them with
sudoor as root.
perf produces no data or reports “Permission denied”¶
This can happen if:
The executable runs too quickly for
perfto collect meaningful samplesThe perf events specified with
--eventsare not supported on the current hardwareperf_event_paranoidis set too high
Check supported events on the run_machine:
perf list
Lower the paranoid level if needed (requires root). This must be done on each run_machine.
Temporary change (until next reboot):
echo '-1' > /proc/sys/kernel/perf_event_paranoid
Persistent change (survives reboots, recommended on modern Linux systems): create a configuration file in /etc/sysctl.d/ and apply it:
echo 'kernel.perf_event_paranoid = -1' > /etc/sysctl.d/99-amphimixis-perf.conf
sysctl --system
Comparing outputs from different machines¶
The amixis compare command works with .scriptout files regardless of which machine they were collected on. Ensure both files use the same perf events for meaningful comparison:
amixis compare build1.scriptout build2.scriptout --max-rows 10