Repository navigation
FAQ
-
Which architectures are supported?
Mess currently supports x86-64 (Intel/AMD), ARM64 (AArch64), PowerPC (ppc64le), and RISC-V (rv64gcv). See Architecture Support for full details.
GPU Support: Mess is actively being ported to GPUs. For now, GPU support is available via the original Mess codebase in our GPU Repository.
-
Does Mess support running on Windows or macOS?
Yes! Mess supports Linux, macOS, and Windows.
- Linux: Fully supported, including all benchmark and profiling features.
- macOS: Supported, using native Apple facilities for measurement on Apple Silicon. Some options like memory-node binding are unavailable, but core benchmarking is supported.
- Windows: Supported via a native CMake build. Performance profiling requires administrator privileges and may need additional tools (AMD uProf, Intel VTune, or Intel PCM) depending on your processor. Some options like memory-node binding are unavailable, but core benchmarking is supported.
See the Installation guide for details on platform-specific features and requirements.
-
Why do I get a "Permission denied" error when running?
This usually happens because the system locks access to hardware performance counters for security. You can temporarily allow access by running
echo 0 | sudo tee /proc/sys/kernel/perf_event_paranoidor permanently by addingkernel.perf_event_paranoid = 0to/etc/sysctl.confon Linux. -
Can I run Mess without root privileges?
On Linux, you do not need root as long as
perf_event_paranoidallows user access (<= 2). Changing system-wide settings like CPU frequency scaling or dropping caches still requires sudo. On macOS, Mess accesses IOReport without root privileges. On Windows, you need to run Mess as an administrator. -
Are measurement files saved by default?
Yes. CPU and GPU runs save raw bandwidth and latency measurements under
measuring/(or--folder=DIR) by default, so they can be plotted later. Use--no-profileto discard the temporary measurement files after the run. The benchmark and hardware-counter measurements still run normally. -
Can I use LIKWID instead of perf?
Yes! You can force the use of LIKWID by adding the
--measurer=likwidflag. Make surelikwid-perfctris installed and in your PATH.HBM Systems: On systems with High Bandwidth Memory, the versions of perf we have tested do not correctly map the CAS_COUNT events we use to the HBM registers. Instead, they map them to the MBOX counters, which report 0 when using HBM. LIKWID correctly accesses the HBM counters, which is why it is recommended for these systems. We expect this to be fixed in future perf versions.
-
Can I use Intel VTune as the measurer?
Yes. You can force VTune by adding
--measurer=vtunetomess, or--backend vtunetomess-profiler. Thevtunebinary must be installed and available in yourPATH.VTune has significantly higher interval-sampling overhead than
perforlikwid, because each sample launches a VTune collection. -
How is the "Memory Bandwidth" actually measured?
We use hardware performance counters that directly track memory controller activity. The specific counters depend on your system architecture:
- CAS_COUNT events: On systems with memory controllers that support it (most x86 servers), we use CAS_COUNT_RD and CAS_COUNT_WR to measure DRAM read and write transactions issued by the memory controller
- UPI/QPI FLITS: For cross-socket bandwidth when accessing remote memory, we use UPI FLITS TXL/RXL counters to track inter-socket traffic
-
Platform-specific counters: On systems like NVIDIA Grace, we use the platform-specific counters documented by the vendor (e.g.,
cmem_rd_data,cmem_wr_total_bytes) - DRAM request counters: On some AMD platforms that don't differentiate reads from writes, we use available DRAM request counters to measure total bandwidth
- Apple Memory Controller (AMC) counters: On Apple Silicon devices, we rely on AMC counters to measure memory traffic. The framework that measures these counters is IOReport.
We do not estimate bandwidth from the code; we measure actual hardware activity at the memory controller level.
-
I found a bug or have a feature request, where do I report it?
Please open an issue on our GitHub Repository or send us an email at mess@bsc.es.