Skip to content

Graphic Interface

Pau Díaz Cuesta edited this page Sep 21, 2026 · 1 revision

This page covers the installation and basic usage of the Mess graphical user interface (GUI).


The GUI is a desktop application that runs the same Mess benchmark used by the command-line interface. It compiles and starts the mess binary in the background, follows its progress, and presents the resulting bandwidth-latency curves and performance metrics in a graphical interface.

Note: The GUI does not implement a separate benchmark. Measurements produced through the GUI and command-line interface use the same Mess backend and methodology.

Installation

Download the package for your platform from the Mess releases page or Mess website

You can also download a release from a terminal. Replace <VERSION> and <PACKAGE> with the release tag and filename shown on the releases page:

curl -LO https://github.com/bsc-mem/Mess/releases/download/<VERSION>/<PACKAGE>
Platform Package Installation
Linux x86-64 .deb Run sudo apt install ./mess-gui-<version>-linux-x86_64.deb
Linux x86-64 .AppImage Mark the file executable and run it directly
Linux ARM64 .deb or .AppImage Use the corresponding linux-aarch64 package
macOS Universal .dmg Open the disk image and drag Mess to Applications
Windows x86-64 .exe installer Run the installer and follow the setup wizard

On Windows, the installer creates a desktop shortcut that requests administrator privileges automatically. If you launch the application another way, use Run as administrator so Mess can access the memory-controller counters.

First Launch

The GUI needs access to a Mess checkout. On first launch, choose one of the following options:

Choice When to pick it What it does
Locate existing Mess You already cloned Mess Select the checkout or any folder inside it, the GUI locates and remembers the repository root
Install Mess You do not have a checkout Select a destination and let the GUI download and configure the official Mess repository

The selected checkout remains in its original location. The GUI remembers it for future launches and compiles Mess automatically when required.

Dependency Checks

Before displaying the run options, the GUI checks that:

  • The Mess checkout is valid and compiled
  • The system and memory configuration can be detected
  • A supported bandwidth-counter backend is available
  • The process has permission to read the required counters
  • The Python modules used for processed exports are installed

The system panel at the bottom of the main screen shows the detected operating system, processor, core count, memory configuration, bandwidth backend, and any condition that could prevent a reliable measurement. Use Advanced to display the complete detection report.

If a blocking condition is fixed outside the application, select Recheck system to run detection again without restarting the GUI.

Optional Python Packages

The benchmark and the GUI's built-in result charts work without the plotting packages. If they are missing, the GUI displays the Bash or PowerShell commands required to install them. You can copy those commands, install the packages, and select Check again.

You may also select Continue without them. Measurements and built-in charts will still work, but the processed PDF and CSV exports normally generated through the Python plotting tools will be unavailable.


Running Mess

The main screen provides two measurement modes:

Mode Typical duration Coverage Main results
Full run Hours Every read/write ratio from idle through saturation Complete bandwidth-latency curves, aggregate metrics, and Mess Score
Quick evaluation Minutes Three representative read/write mixes Peak bandwidth for 100%, 50%, and 0% reads, plus unloaded latency

Both modes save their raw and processed data inside the selected Mess checkout.

Full Run

A full run generates the complete family of Mess bandwidth-latency curves. Before starting, select the level of detail:

Tier Points per ratio Typical duration Recommended use
Lite 15 About 1 hour; about 6 hours on macOS A fast view of each curve and its saturation knee
Standard 50 About 6 hours; about 48 hours on macOS General characterization and comparisons; recommended default
Detailed 200 About 24 hours; about 192 hours on macOS Publication plots and detailed analysis near saturation

The selected tier is equivalent to the command-line option --tier=lite, --tier=standard, or --tier=detailed. Every tier measures the same read/write ratios, higher tiers sample each curve more densely.

Full runs take longer on macOS because each point uses a longer measurement window to reduce OS scheduler noise.

While the benchmark runs, the GUI reports the current stage, completed points, and estimated time remaining.

Full Run Results

After the measurements finish, the GUI processes the data and displays:

  • The complete bandwidth-latency curves for every read/write ratio
  • Peak measured bandwidth and the ratio that achieved it
  • Peak sustained bandwidth, calculated across the measured ratios
  • Unloaded memory latency
  • The Mess Score on a scale from 0 to 100
  • Comparisons with theoretical bandwidth when the memory configuration is known

The Mess Score summarizes bandwidth and latency quality across the complete curve family. Higher values indicate that the measured curves remain closer to the theoretical capability of the system. It is calculated only for a complete full run and may show n/a when the theoretical peak is unavailable.


Quick Evaluation

Quick evaluation provides a short overview of the platform without measuring the entire curve family. It measures three representative requested read ratios:

  • 100% reads
  • 50% reads
  • 0% reads

For each mix, the GUI discovers and reports its peak bandwidth and the loaded latency at that point. It also performs a separate low-traffic probe to measure unloaded latency.

The results screen displays:

  • Unloaded latency on an idle memory system
  • Peak bandwidth for each of the three mixes
  • Loaded latency at each peak
  • The percentage of theoretical bandwidth achieved, when available
  • A backpressure warning when full-load bandwidth drops meaningfully below the measured peak

Quick evaluation does not produce a Mess Score because three ratios do not represent the complete curve family.


Saving Results

Every run is saved automatically under the selected Mess checkout. Folder names include the mode and local date and time:

measuring_gui_full_YYYY-MM-DDTHH-MM-SS
measuring_gui_quick_YYYY-MM-DDTHH-MM-SS

The run folder contains the raw measurements and processed data used by the result screen. When the plotting dependencies are available, Mess also produces processed curve data and plotting exports.

Select Save as PNG and PDF on a result screen to export the complete screen. The GUI creates a results/ directory inside that run's folder and saves both formats there.

Previous Results

Select Previous results in the upper-right corner of the main screen to review saved measurements. Full runs and quick evaluations are listed separately, newest first.

Each entry provides the available headline metrics and the following actions:

  • View results reopens the original result screen
  • Open folder reveals the raw and processed files in the system file manager
  • Delete permanently removes that run's raw measurements and processed results

The GUI reads this history directly from the run folders each time the page opens. Moving or deleting a folder outside the application therefore changes what appears in the history.

Warning: Deleting a run from Previous results cannot be undone. Long full runs may represent many hours of measurement.


Troubleshooting

The system panel explains the closest known cause when the GUI cannot access a bandwidth backend. Fix the reported condition and select Recheck system. See Installation and FAQ for broader build and measurement guidance.

Linux

The most common issue is restricted access to hardware performance counters. If kernel.perf_event_paranoid blocks Mess, the GUI offers two options:

  • Select Grant access and approve the desktop authentication prompt
  • Copy and run the displayed sysctl command in a terminal

The temporary change lasts until reboot. If Grant access is unavailable, install pkexec through your distribution or use the terminal command. Missing perf or memory-controller events must be resolved through the distribution's Linux tools packages and kernel PMU support.

For manual configuration details, see Performance Counter Access.

macOS

Bandwidth measurement requires an Apple Silicon Mac. Mess reads the Apple memory controller through IOReport, so no driver, root access, or Linux counter configuration is required.

Intel Macs do not provide a supported bandwidth backend. If IOReport cannot expose the memory-controller channels on Apple Silicon, use the diagnostic text shown by the GUI when reporting the problem.

Windows

Run the GUI as an administrator. Memory-controller access uses a privileged driver, and the benchmark cannot run when the application is not elevated.

The required backend depends on the processor:

Processor Recommended backend
AMD AMD uProf
Intel Ice Lake / 10th generation or newer Intel VTune Profiler
Older Intel processors Intel PCM with the msr.sys driver

The GUI reports specific conditions such as a stopped or outdated msr.sys service, missing VTune drivers, missing AMD uProf, unsupported processors, or counters hidden by Windows virtualization-based security. Follow the message shown in the system panel, then select Recheck system.

See Windows installation for toolchain and backend setup.


Related Pages

Clone this wiki locally