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

  1. Refresh Rate Adjustment - Lower to 60Hz/120Hz or reduce by small increments (144Hz → 120Hz)
  2. Multi-Monitor Optimization - Match all displays (resolution, refresh rate, connection type)
  3. Manual Clock Control - Linux tools like amdgpu-clocks for custom power state profiles
  4. 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:

  1. GPU hardware requires blanking periods to safely switch memory clock frequencies
  2. High refresh rates create shorter blanking windows, making switches risky
  3. Switching during active pixel output causes visible flickering
  4. 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


Last updated: November 24, 2025