-
Notifications
You must be signed in to change notification settings - Fork 1
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 2.0 is actively being ported to GPUs. For now, GPU support is available via the Mess 1.0 codebase in our GPU Repository.
-
Does Mess support running on Windows or macOS?
Mess is designed for Linux environments due to its reliance on hardware performance counters (
perf) and specific memory allocation APIs. macOS support is limited to compilation for development but cannot run the actual benchmark. Windows is not supported. -
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.conf. -
Can I run Mess without root privileges?
Yes, as long as
perf_event_paranoidis set to allow user access (<= 2), you do not need root. However, changing system-wide settings like CPU frequency scaling or dropping caches will still require sudo. -
What does the "Profiling" mode do?
Running with
--profilegenerates CSV files in themeasuring/folder containing detailed bandwidth and latency measurements for every test point. This is required if you want to plot the bandwidth-latency curves later. The default "plain" run only outputs a summary to the console. -
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 is currently an explicit backend only; it is not the default automatic choice for any architecture. It also 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
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.