README
Purpose
Deep dive into AMD GPU behavior, specifically investigating memory clock (MCLK) dynamics, power consumption, thermal management, and driver interactions with display configurations.
Contents
- amd-gpu-mclk-behavior.md - Comprehensive investigation of why AMD GPU memory clocks remain constant despite varying workloads, including technical explanations, solutions, and Linux-specific management tools.
Key Findings
- MCLK Behavior: AMD GPU memory clocks (MCLK) stay constant by design to prevent display flickering during frequency switches, contrary to dynamic core clock (SCLK) scaling
- Display Timing Constraints: Insufficient blanking periods at high refresh rates (>120Hz) force drivers to lock MCLK at maximum frequency as a safety measure
- Power Impact: MCLK locking can double idle power consumption (13W → 44W) and increase idle temperatures by ~25°C
- Multi-Monitor Complexity: Multiple displays with mismatched refresh rates, resolutions, or connection types amplify the issue
- Generational Consistency: Issue spans RDNA (5000), RDNA 2 (6000), and RDNA 3 (7000) series - by design, not a bug
Solutions & Approaches
Primary Solution: Custom Display Timings
- Use CVT Reduced Blanking (CVT-RB v2) timings to extend blanking periods
- Increase V-blank values (often just 6 additional lines suffices)
- Custom Resolution Utility (CRU) can create compatible timings
Alternative Approaches
- Refresh Rate Adjustment - Lower to 60Hz/120Hz or reduce by small increments (144Hz → 120Hz)
- Multi-Monitor Optimization - Match all displays (resolution, refresh rate, connection type)
- Manual Clock Control - Linux tools like
amdgpu-clocksfor custom power state profiles - Monitor Selection - Choose monitors with proper CVT timings and higher V-blank EDID values
Linux Tools & Utilities
- rocm-smi - Monitor current clock speeds and power states
- amdgpu-clocks - Manually control GPU power states and MCLK behavior
- Custom Resolution Utility (CRU) - Export timings for Linux from Windows configuration
Observed System Configuration
- Discrete GPU: AMD RX 7000 series (Device ID: 0x747e)
- Integrated GPU: Device ID: 0x13c0
- Behavior: SCLK scales 38MHz-2000+MHz; MCLK locked at ~1218MHz
- Status: Confirmed normal behavior; MCLK locking expected with insufficient blanking periods
Technical Deep Dive
The research reveals that MCLK locking is a deliberate driver protection mechanism:
- GPU hardware requires blanking periods to safely switch memory clock frequencies
- High refresh rates create shorter blanking windows, making switches risky
- Switching during active pixel output causes visible flickering
- When safe switching isn’t possible, driver forces MCLK to maximum to prevent artifacts
This explains the counterintuitive behavior where “performance” stays high but at the cost of power efficiency.
Sources
- GitHub Gist: Fix AMD GPU high idle power MCLK stuck
- GitHub: amdgpu-clocks tool
- AMD Community forums (multiple multi-monitor reports)
Related Research
- automated-reasoning - GPU-related computational analysis
- tesla-model-s - Hardware optimization patterns
- ubuntu-audio-streaming - Linux hardware management
Last updated: November 24, 2025