在Ubuntu 17.04中设置Intel GPU限制不再有效

Ethuil用户界面

我以前使用过Ubuntu MATE 16.04,但是最近切换到了17.04,因为它附带了更新的Thermald,并且我认为它将为我解决类似的错误我在Ubuntu 16.04中遇到了散热问题,类似于那里描述的问题,但是考虑到据说它已在Thermald(1.5.4-3)中修复,而Ubuntu 17.04默认带有更新版本,我认为它对我来说会更好总体而言,可能还会在整个系统中进行修复。因此,我已经安装了17.04,并进行了尝试,一切正常,因此我完全迁移了。
过了一会儿,尽管我遇到了一个非常奇怪的问题,即系统完全忽略了设置的CPU限制。在16.04中,只有在Intel GPU试图以与CPU工作状态相关的频率(高于限制)的频率工作时,我才想到。例如,如果我运行:

sudo cat /sys/kernel/debug/dri/1/i915_ring_freq_table

这是我的输出:

GPU freq (MHz)  Effective CPU freq (MHz)    Effective Ring freq (MHz)
650             800                         0
700             800                         0
750             1400                        0
800             1500                        0
850             1600                        0
900             1600                        0
950             1700                        0
1000            1800                        0
1050            1900                        0
1100            2000                        0

因此,如果我希望我的CPU最高工作频率为1500MHz,并且不要再提高了,那就意味着GPU必须限制在800MHz,并且永远不要再提高,因为GPU是集成在CPU中的,因此它们被捆绑在一起。
在Ubuntu 16.04中,我所做的是通过写入/sys/kernel/debug/dri/1/i915_max_freq要成为GPU可以达到的最大限制的值来手动设置GPU限制当我将CPU限制为1500MHz时,我还将运行:

echo 800 | sudo tee /sys/kernel/debug/dri/1/i915_max_freq  

而且我的GPU将保持在一定范围内,而不会影响CPU的工作频率。
但是,在Ubuntu 17.04中,设置限制后,GPU仍会一直上升到1100MHz,这使任何CPU限制毫无意义,并会使处理器过热。

~$ sudo cat /sys/kernel/debug/dri/1/i915_max_freq
800

如您所见,限制已设置并就位。现在我们检查frequency_info:

~$ sudo cat /sys/kernel/debug/dri/1/i915_frequency_info
PM IER=0x00000070 IMR=0xffffff8f ISR=0x00000000 IIR=0x00000000, MASK=0x0000002a
pm_intr_keep: 0x00000004
GT_PERF_STATUS: 0x000016cb
Render p-state ratio: 22
Render p-state VID: 203
Render p-state limit: 255
RPSTAT1: 0x00041610
RPMODECTL: 0x00000d92
RPINCLIMIT: 0x000019fa
RPDECLIMIT: 0x00003a98
RPNSWREQ: 1100MHz
CAGF: 1100MHz
RP CUR UP EI: 7165 (9171us)
RP CUR UP: 7006 (8967us)
RP PREV UP: 6725 (8608us)
Up threshold: 85%
RP CUR DOWN EI: 1314 (1681us)
RP CUR DOWN: 1315 (1683us)
RP PREV DOWN: 23741 (30388us)
Down threshold: 60%
Lowest (RPN) frequency: 650MHz
Nominal (RP1) frequency: 650MHz
Max non-overclocked (RP0) frequency: 1100MHz
Max overclocked frequency: 1100MHz
Current freq: 1100 MHz
Actual freq: 1100 MHz
Idle freq: 650 MHz
Min freq: 650 MHz
Boost freq: 1100 MHz
Max freq: 1100 MHz
efficient (RPe) frequency: 650 MHz
Current CD clock frequency: 400000 kHz
Max CD clock frequency: 400000 kHz
Max pixel clock frequency: 360000 kHz

我们可以看到电流和实际频率最大为1100MHz。
这还会增加CPU频率忽略的限制,因为如果GPU升高到如此之高,CPU不会降低:

~$ sudo cpufreq-info 
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 2.00 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.00 GHz (asserted by call to hardware).
analyzing CPU 1:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 2.00 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.00 GHz (asserted by call to hardware).

如您所见,策略的范围是1.50 GHz到1.50 GHz,但是由于GPU的缘故,它被提高到了最大值。

关闭图形应用程序后:

sudo cat /sys/kernel/debug/dri/1/i915_frequency_info
PM IER=0x00000070 IMR=0xffffff8f ISR=0x00000000 IIR=0x00000000,
[...]
CAGF: 650MHz
[...]
Lowest (RPN) frequency: 650MHz
Nominal (RP1) frequency: 650MHz
Max non-overclocked (RP0) frequency: 1100MHz
Max overclocked frequency: 1100MHz
Current freq: 650 MHz
Actual freq: 650 MHz
Idle freq: 650 MHz
Min freq: 650 MHz
Boost freq: 1100 MHz
Max freq: 1100 MHz
[...]

GPU恢复到最小值,CPU现在可以在分配的限制下工作:

sudo cpufreq-info 
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 2.00 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 1.12 GHz (asserted by call to hardware).
analyzing CPU 1:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 2.00 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 1.49 GHz (asserted by call to hardware).

问题:如何使intel GPU遵循Ubuntu 17.04中的设置限制,以使其不再混乱我的CPU限制,为什么它忽略在16.04中可用的限制?

更新:经过一番摸索,我发现了这个东西:

sudo cat /sys/kernel/debug/dri/0/i915_rps_boost_info
RPS enabled? 1
GPU busy? yes [1 requests]
CPU waiting? 0
Frequency requested 650
  min hard:650, soft:650; max soft:700, hard:1100
  idle:650, efficient:650, boost:1100
Xorg [1221]: 591 boosts
Kernel (anonymous) boosts: 8
RPS Autotuning (current "low power" window):
  Avg. up: 0% [above threshold? 95%]
  Avg. down: 0% [below threshold? 85%]  

这是什么“ RPS”,难道是GPU助推器最大程度地忽略设置限制的原因吗?

Ethuil用户界面

找到解决方案并解决了我的问题-正是RPS提升忽略了设置的GPU频率限制。
我没有通过/ sys / kernel / debug / dri / 1 / i915_max_freq设置限制,而是切换到/ sys / class / drm / card1中,通过参数gt_max_freq_mhzgt_boost_freq_mhz进行设置i915_max_freq中设置限制后,它不会限制提升频率,因此当系统请求提升时,它将忽略它的设置将其提升到gt_boost_freq_mhz中指定的极限
通过运行:

echo 800 | sudo tee /sys/class/drm/card1/gt_max_freq_mhz   
echo 800 | sudo tee /sys/class/drm/card1/gt_boost_freq_mhz  

我为正常值和提升值都设置了限制,并且系统不再将GPU超过限制,这意味着在我的情况下,CPU限制也不会受到影响。

sudo cat /sys/kernel/debug/dri/1/i915_rps_boost_info
RPS enabled? 1
GPU busy? yes [32 requests]
CPU waiting? 0
Frequency requested 800
  min hard:650, soft:650; max soft:800, hard:1100
  idle:650, efficient:650, boost:800
[...]

应用此解决方案的步骤:

1)在/ sys / kernel / debug / dri / 0 / i915_ring_freq_table(或/ sys / kernel / debug / dri / 1 / i915_ring_freq_table)中读取表

sudo cat /sys/kernel/debug/dri/0/i915_ring_freq_table  

找到与您想要的CPU限制相匹配的CPU频率,并寻找与之相关的GPU频率,这将是您需要在GPU上设置的限制。

2)通过写入位于/ sys / class / drm / card0的gt_max_freq_mhzgt_boost_freq_mhz来设置GPU频率的限制根据情况可以为cardX,如果需要,请手动检查):

echo [GPU_frequency_limit] | sudo tee /sys/class/drm/cardX/gt_max_freq_mhz /sys/class/drm/cardX/gt_boost_freq_mhz

例如:

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

3)检查限制是否越低(如果使用cardX,请将X值更改为0:

sudo cat /sys/kernel/debug/dri/0/i915_rps_boost_info

最大的软提升价值,现在应该修改为您设置的东西。
请注意,限制GPU频率可能会降低OpenGL性能。


如果您不想使用第一个解决方案,则可以尝试以下替代方法。

还有另一种可能的替代解决方案,由于BIOS限制,该解决方案对我不起作用,但可以对其他人起作用,这是限制软件包功率限制的方法,这是github发行问题线程上intel的@spandruvada所建议的。

首先,您可以通过阅读/ sys / class / powercap / intel-rapl / intel-rapl:0 / constraint_0_power_limit_uw来查看当前值

sudo cat /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw

然后,您尝试通过运行以下命令来更改极限值:

echo [reduced_power_value] | sudo tee /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw

例如,在我的情况下,我有35000000作为初始值,并且想要将其更改为30000000

echo 30000000 | sudo tee /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw

如果你得到“无可用数据”试图写它后,无论是它只是禁用(这可以通过阅读来检查/ SYS /班/功率限额/ Intel的rapL遗传/ Intel的rapL遗传:0 /启用,将是0,如果(已禁用)或被BIOS锁定。如果您无法通过将1写入“ enable”选项来启用它,请检查dmesg以获取错误消息(尝试写入constraint_0_power_limit_uw之后

dmesg | grep powercap
[29580.025164] powercap intel-rapl:0: package locked by BIOS, monitoring only

如果看到“ BIOS锁定”,则需要在BIOS中手动启用它,如果不能执行此操作,则无法控制它,这种方法不适合您。据我了解,如果您启用了它并且可以正常工作,那么Thermald应该会自动为您调整这些值,而无需手动更改它们。

将此问题发布在github上,
如果您想手动使用此方法,请在此处获取有关此方法的更多详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有 Ubuntu 18.04 的 Lenovo P1 上的 Wifi 不再有效

来自分类Dev

升级到 Ubuntu 18.04 后,某些绑定不再有效

来自分类Dev

元素在IE8中不再有效冻结

来自分类Dev

将我的代码中的结果打印到 .txt 不再有效

来自分类Dev

为什么将ng-model设置为undefined会使表单/输入不再有效?

来自分类Dev

如果在Java中循环直到条件不再有效,则继续执行脚本

来自分类Dev

将我的笔记本电脑升级到 Ubuntu 20.04 后,与 Raspbian 文件服务器的统一不再有效

来自分类Dev

基于 ItemClass 的具有 InventoryAttribute 和 PXRestrictor 的自定义字段在 2018R1 中不再有效

来自分类Dev

这是2019年,如何在Windows 10中*禁用*自动重新启动和更新?旧方法不再有效

来自分类Dev

当程序从该函数返回时,指向在函数中声明和定义的某些 c 字符串的指针不再有效。为什么?

来自分类Dev

Android:“ slideEdge”不再有效

来自分类Dev

gpg:在ubuntu中找不到有效的OpenPGP数据

来自分类Dev

Ubuntu 17 Dock文件拖动

来自分类Dev

升级到Ubuntu 17后不再可以访问辅助SATA硬盘驱动器

来自分类Dev

Android Play商店market://链接不再有效?

来自分类Dev

使用Python xarray屏蔽'where'不再有效

来自分类Dev

雅虎财务不再有效吗?

来自分类Dev

获取不再有效的Google Cache for PDF副本

来自分类Dev

可用指针偏移量不再有效?

来自分类Dev

提交密码表格不再有效

来自分类Dev

CSS损坏-自动调整大小不再有效

来自分类Dev

stringByAppendingPathComponent对swift2不再有效

来自分类Dev

使用Python xarray屏蔽'where'不再有效

来自分类Dev

systemctl重装网络不再有效

来自分类Dev

Liberty SSL 证书密钥不再有效

来自分类Dev

Firebase 崩溃 - 批量上传不再有效

来自分类Dev

Arrow 和 canc 确实不再有效

来自分类Dev

Xtext 交叉引用不再有效?

来自分类Dev

Tidyverse 更新和 rlang - 代码不再有效

Related 相关文章

  1. 1

    带有 Ubuntu 18.04 的 Lenovo P1 上的 Wifi 不再有效

  2. 2

    升级到 Ubuntu 18.04 后,某些绑定不再有效

  3. 3

    元素在IE8中不再有效冻结

  4. 4

    将我的代码中的结果打印到 .txt 不再有效

  5. 5

    为什么将ng-model设置为undefined会使表单/输入不再有效?

  6. 6

    如果在Java中循环直到条件不再有效,则继续执行脚本

  7. 7

    将我的笔记本电脑升级到 Ubuntu 20.04 后,与 Raspbian 文件服务器的统一不再有效

  8. 8

    基于 ItemClass 的具有 InventoryAttribute 和 PXRestrictor 的自定义字段在 2018R1 中不再有效

  9. 9

    这是2019年,如何在Windows 10中*禁用*自动重新启动和更新?旧方法不再有效

  10. 10

    当程序从该函数返回时,指向在函数中声明和定义的某些 c 字符串的指针不再有效。为什么?

  11. 11

    Android:“ slideEdge”不再有效

  12. 12

    gpg:在ubuntu中找不到有效的OpenPGP数据

  13. 13

    Ubuntu 17 Dock文件拖动

  14. 14

    升级到Ubuntu 17后不再可以访问辅助SATA硬盘驱动器

  15. 15

    Android Play商店market://链接不再有效?

  16. 16

    使用Python xarray屏蔽'where'不再有效

  17. 17

    雅虎财务不再有效吗?

  18. 18

    获取不再有效的Google Cache for PDF副本

  19. 19

    可用指针偏移量不再有效?

  20. 20

    提交密码表格不再有效

  21. 21

    CSS损坏-自动调整大小不再有效

  22. 22

    stringByAppendingPathComponent对swift2不再有效

  23. 23

    使用Python xarray屏蔽'where'不再有效

  24. 24

    systemctl重装网络不再有效

  25. 25

    Liberty SSL 证书密钥不再有效

  26. 26

    Firebase 崩溃 - 批量上传不再有效

  27. 27

    Arrow 和 canc 确实不再有效

  28. 28

    Xtext 交叉引用不再有效?

  29. 29

    Tidyverse 更新和 rlang - 代码不再有效

热门标签

归档