如何阻止 Intel HD4000 以最大时钟速度运行?

如何阻止 Intel HD4000 以最大时钟速度运行?

我在尝试强制 Intel HD4000 iGPU 以较低的时钟速度运行以节省电量时遇到了一些麻烦。

到目前为止我已经尝试过:

  • 似乎“坚持”,但从我的测试来看没有实际效果:

    echo 350 > /sys/kernel/debug/dri/0/i915_max_freq
    
  • 使用https://github.com/jmechnich/intel-power-control来控制时钟速度。当 iGPU 上没有负载时,将最大时钟速度设置为 350MHz 是可行的,但加载一些图形密集型工作负载(如浏览器中的 WebGL 演示)会立即将当前时钟速度推至 1250MHz。不过,最小值和最大值仍报告为 350MHz。 编辑:项目维护者已对此问题进行了修复,现在可以更改时钟。

  • 使用 intel-gpu-overlay(软件包的一部分intel-gpu-tools)监控 iGPU 负载,在空闲工作负载中,时钟速度为 350MHz,但任何负载都会导致短突发到 1250MHz,或者在较长的重负载中导致恒定的 1250MHz 负载。

在 Arch Linux、内核 4.13.11-1-ARCH、配备 Intel i7-3820QM CPU 和 Intel HD4000 的 Thinkpad T430 上进行测试,无 dGPU。

我在这里缺少什么吗?我还能尝试什么来强制 iGPU 时钟频率不高于 350MHz?

答案1

正确的方法是使用以下两个命令:

echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz

350是iGPU支持的最低频率。

gt_boost_freq_mhz控制升压时钟(默认1250MHz)

gt_max_freq_mhz控制标称最大时钟速度(默认 650MHz)

注意:最大时钟和升压时钟可能因型号而异。使用以下内容找出支持的升压、最大和最小时钟速度:

cat /sys/class/drm/card0/gt_RP0_freq_mhz用于升压时钟

cat /sys/class/drm/card0/gt_RP1_freq_mhz对于最大时钟

cat /sys/class/drm/card0/gt_RPn_freq_mhz对于分钟时钟

如果升压时钟高于最大时钟速度,则 GPU 很可能会以升压时钟速度(默认 1250MHz)运行。

以下是将升压和最大时钟设置为 800MHz 并在负载一段时间后设置为 350MHz 的示例。叠加层左下角的频率和功耗明显下降: 英特尔 GPU 叠加结果

这可能适用于其他 GPU(Intel HD 3000 及更新版本),但这需要进行测试。

来源:

用户 qgnox 的 Reddit 帖子

相关内容