系统相关
首页 > 系统相关> > linux – 如何阻止Intel HD4000以最大时钟速度运行?

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

作者:互联网

我试图迫使英特尔HD4000 iGPU以较低的时钟速度运行以节省电力时遇到了一些麻烦.

到目前为止我尝试了什么:

>似乎“坚持”但我的测试没有实际影响:

echo 350 > /sys/kernel/debug/dri/0/i915_max_freq

>使用https://github.com/jmechnich/intel-power-control控制时钟速度.将最大时钟速度设置为350MHz将在iGPU上没有负载的情况下工作,但加载一些图形繁重的工作负载(如浏览器中的WebGL演示版)会立即将当前时钟速度推至1250MHz.不过,最小值和最大值仍然报告为350MHz.
编辑:项目维护者已经解决了这个问题,现在改变时钟工作.
>使用intel-gpu-overlay(软件包intel-gpu-tools的一部分)监控iGPU负载,在空闲工作负载中,时钟速度为350MHz,但任何负载都会导致1250MHz的短脉冲或1250MHz的长负载.

在Arch Linux上测试,内核4.13.11-1-ARCH,Thinkpad T430采用Intel i7-3820QM CPU和Intel HD4000,没有dGPU.

这里有什么我想念的吗?还有什么我可以尝试强制iGPU不高于350MHz的时钟?

解决方法:

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

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

min / clock的cat / sys / class / drm / card0 / gt_RPn_freq_mhz

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

下面是将升压和最大时钟设置为800MHz并在负载下经过一段时间后设置为350MHz的示例.频率和功率使用明显下降到叠加层的左下图:
intel-gpu-overlay results

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

资源:

Reddit post by user qgnox

标签:power-management,linux,intel-graphics,thinkpad,arch-linux
来源: https://codeday.me/bug/20190816/1668344.html