Add an optional frequency-normalized GPU utilization mode on Apple Silicon
Is your feature request related to a problem? Please describe.
On Apple Silicon, btop defines GPU utilization as the proportion of the sample spent outside IDLE, OFF, and DOWN. This is a valid active-residency metric, but display composition can keep the GPU active at its minimum DVFS state. The result can look like heavy GPU load despite low clock and power.
For example, an M4 Max showed 67% GPU activity at 338 MHz and 0.27 W. This is useful as an activity measurement but does not answer how much of the GPU's maximum effective capacity is being requested.
Describe the solution you'd like
Add a configurable Apple Silicon GPU utilization mode, preserving active residency as the default:
gpu_utilization_mode = "active"Suggested modes:
active: current behavior,active_residency / total_residency.normalized: residency weighted by each DVFS frequency and normalized by the maximum available GPU frequency.
The normalized ratio is:
sum(active_state_residency * state_frequency)
------------------------------------------------
total_residency * maximum_frequencyThe option could live under Options > GPU. Keeping active as the default avoids silently changing existing semantics.
Describe alternatives you've considered
- Replace the current percentage globally. This is simpler but changes the conventional busy-time meaning and can understate memory-bound or power-limited work.
- Display both activity and normalized load simultaneously. This is clearer but consumes additional space in an already dense GPU panel.
- Infer load from power. This is hardware- and thermal-policy-dependent and is less directly derived from the existing IOReport performance-state data.
Additional context
A local proof of concept using the frequency-weighted formula reported 18-26% at 389-470 MHz in the same desktop workload where active residency was around 67-76%. The value also matched the gpu_usage_ratio semantics reported by the macmon utility. Clock and power remain important companion metrics.
Source: aristocratos/btop