ProxCLMC (Prox CPU Live Migration Checker) is a lightweight tool to determine the maximum CPU compatibility level that is supported across all nodes in a Proxmox VE cluster. It remotely inspects each cluster node via SSH, analyzes CPU capabilities, and calculates the lowest common x86-64 CPU baseline to ensure safe live migration and predictable VM behavior. By default, proxclmc runs on any Proxmox VE node, inspects the local corosync.conf and parses all nodes within a cluster to detect the maximum of supported CPU compatibility level.
In mixed-hardware Proxmox clusters, CPU feature mismatches are a common source of:
- Failed live migrations
- Unstable VM behavior
- Severe performance degradation (especially for Windows VMs when using the
hostCPU type)
ProxCLMC provides a deterministic, cluster-wide answer to the question:
Which CPU type can I safely use for all VMs in this cluster?
- Parses cluster nodes directly from
corosync.conf - Connects to each node via SSH
- Reads
/proc/cpuinforemotely - Extracts CPU flags
- Maps flags to x86-64 CPU baselines
- Calculates the lowest common CPU type across all nodes
- Fully compatible with Proxmox / QEMU CPU models:
x86-64-v1x86-64-v2-AESx86-64-v3x86-64-v4
This brings in the CPU compatibility validation to Proxmox VE based clusters, which might already be known from other virtualiaztion solutions (e.g., VMware EVC).
All available nodes in a Proxmox Cluster will be listed by their supported CPU model. Afterwards, the maximum usable CPU type for the cluster will be printed that can be used for VMs to ensure safe live-migrations:
test-pmx01 | 10.10.10.21 | x86-64-v3
test-pmx02 | 10.10.10.22 | x86-64-v3
Cluster CPU type: x86-64-v3
- Proxmox VE Cluster
- SSH Authentication between all PVE nodes
The packaged version for Debian based systems (including Proxmox) are shipped within @gyptazy's Debian repository (which also serves the ProxLB project). The repository can simply be added by running the following commands and installing the Debian package proxclmc:
echo "deb https://repo.gyptazy.com/stable /" > /etc/apt/sources.list.d/proxlb.list
wget -O /etc/apt/trusted.gpg.d/proxlb.asc https://repo.gyptazy.com/repository.gpg
apt-get update && apt-get -y install proxclmcAs an alternative, you can also simply download the Debian package from @gyptazy's CDN and install it afterwards:
wget https://cdn.gyptazy.com/debian/proxclmc/proxclmc_1.0.0_amd64.deb
dpkg -i proxclmc_1.0.0_amd64.deb
After installing the Debian package via the Debian repository or from the gyptazy CDN, you can simply run the command:
proxclmcThe following cli options are available:
| Short | Long | Argument | Default | Description |
|---|---|---|---|---|
-s |
--ssh-file |
<SSH_FILE> |
/root/.ssh/id_rsa |
SSH private key to use |
--version |
Print version information | |||
-v |
--verbose |
Enable verbose output | ||
-h |
--help |
Print help |
Building ProxCLMC is easy and can be done by installing the following requirements for Rust/Cargo:
apt install -y cargo rustc libssh2-1-dev pkg-configAfterwards, you can build the project from source:
cargo build --releaseThe resulting binary will be located at:
target/release/ProxCLMC
This project is licensed under the GNU General Public License v3.0 or later.
SPDX-License-Identifier: GPL-3.0-or-later
- Florian Paul Azim Hoberg @gyptazy (https://gyptazy.com)
