#1832·btop

Apple Silicon VRAM utilization duplicates GPU activity

Author: rod-americoCreated Sep 14, 2026Updated Sep 14, 2026
Labelsbug

Describe the bug

On Apple Silicon, the GPU collector advertises memory utilization support but feeds mem_utilization_percent with the GPU active-residency percentage:

cpp
gpus_slice[0].mem_utilization_percent.push_back(gpu_utilization);

As a result, the VRAM section displays a Utilization graph that exactly duplicates GPU activity. This is not memory-controller or memory-bandwidth utilization. Unified-memory capacity usage is already reported independently by mem_used and mem_total.

To Reproduce

  1. Build current main with GPU support on an Apple Silicon Mac.
  2. Enable the GPU box.
  3. Observe the GPU percentage and the VRAM Utilization percentage over several samples.
  4. Both series have identical values because the collector writes the same value to both.

Expected behavior

Do not advertise mem_utilization when no memory-utilization counter is being collected. Keep unified-memory total and used capacity visible. A future real IOReport memory-bandwidth metric could enable the series again.

Screenshots

Observed on an M4 Max: GPU activity and VRAM Utilization both showed 67%, while unified-memory capacity usage independently showed 40/51 GB (80%).

Info (please complete the following information):

  • btop++ version: 1.4.7+ccdf285
  • Binary: self compiled from current main
  • Architecture: arm64
  • Platform: macOS
  • OS release version: macOS 26.6.2 (25G83)
  • Terminal used: Terminal.app
  • Font used: terminal profile font; not relevant to the metric

Additional context

The Apple Silicon backend currently enables .mem_utilization = true in src/osx/btop_collect.cpp, but its IOReport subscription only collects GPU performance-state residency and GPU energy for this area. The proposed fix is to set .mem_utilization = false and stop appending GPU utilization to the memory-utilization series.