Intel Turbo Boost在18.04版本中无法正常工作。

我有一台搭载着i7-8750H处理器的电脑,目前在我的机器上使用着Win10和Ubuntu 18.04双系统,并且使用了4.18.8内核。
当我在Windows中对所有核心进行压力测试时,它可以正常达到3.9 GHz的频率,但是当我在Ubuntu中进行同样的压力测试时,核心只能到达2.5 GHz的频率。
我已经尝试更改了频率调度器,但结果并没有改变。
i7z显示:
Socket [0] - [physical cores=6, logical cores=12, max online cores ever=6]
TURBO ENABLED on 6 Cores, Hyper Threading ON
Max Frequency without considering Turbo 2307.32 MHz (100.32 x [23])
Max TURBO Multiplier (if Enabled) with 1/2/3/4/5/6 Cores is  41x/41x/40x/40x/39x/39x

建议尝试以下测试:禁用硬件pstate控制,使用intel_pstate=no_hwp进行引导;仅对一个CPU进行压力测试能否提升频率至接近4.1 GHz?使用acpi-cpufreq驱动器intel_pstate=disable进行引导;尝试使用内核4.19-rc5。请问您的压力测试方法是什么? - Doug Smythies
我正在使用压力命令;使用1和2个核心时,它可以达到4.1 GHz,使用3个核心时为4.0 GHz,使用4个核心时为3.7 GHz,使用5个核心时为3.2 GHz,使用6个核心时为3 GHz,使用7个核心时为2.9 GHz...等等;你所提到的引导操作该如何进行? - Jamidd
哦,你需要修改 /etc/default/grub 文件,并将(例如)这一行:GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 consoleblank=300" 修改为 GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 consoleblank=300 intel_pstate=disable",然后运行 sudo update-grub 命令并重启系统。在此之前,请务必备份原始的 /etc/default/grub 文件。不过,看起来修改后的设置已经正常工作了。建议进行自己的压力测试,以便确切地知道它的工作情况。例如:对于所有 CPU 运行 taskset -c 7 yes > /dev/null & 命令,然后使用 killall yes 命令终止它们。这样你就可以确定它是 CPU 绑定而不是 IO/磁盘限制了。 - Doug Smythies
我在C语言中创建了一个无限循环,并同时运行了12个实例(12个线程,占用100%的资源)。结果发现压力命令受到IO/磁盘限制,时钟速度达到了3.2 GHz,但仍未达到应有的3.9 GHz。 - Jamidd
尝试了 intel_pstate=no_hwp 和 intel_pstate=disable,第一个完全没有任何差别,而第二个通常保持在2.9 GHz,有时会升至3.2 GHz。 - Jamidd
在C语言中,无限循环也是我的拿手好戏。我每隔N次循环打印一些内容,这可以作为CPU频率的健全性检查。我还建议通过为每个CPU专门分配一个无限循环来排除调度程序的影响。或者,您可以同时运行大约18个实例,确保系统严重超负荷运行。同时,我还建议您使用turbostat工具,以确保处理器的功耗和温度没有限制(尽管您的Windows测试结果表明并没有)。 - Doug Smythies
通过观察turbostat中的功耗情况,我相信我知道发生了什么,CPU达到了其最大TDP 45瓦特,因此出现了功耗限制。有没有办法更改最大TDP以使其达到完全的Turbo速度? - Jamidd
我认为TDP是不能改变的。 - Doug Smythies
在Windows系统中,可以通过XTU进行更改。但我猜那是另一个完全不同的话题。 - Jamidd
更正:我的旧款i7-2600K处理器无法更改TDP,但您的处理器可能是可更改的。请参考Intel® 64和IA-32体系结构软件开发人员手册 - Doug Smythies
1个回答

完整答案请参见:Turbo Boost是否正常工作?

Intel Turbo Boost是否已启用?

您可以使用终端检查Turbo Boost功能是否已启用:

$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0

这是一个双重否定;当“no turbo”关闭(=0)时,Turbo Boost就会开启。
要禁用Turbo Boost,请使用sudo权限,并将开关no_turbo设置为1:
$ echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
1

返回的1表示涡轮现在已关闭。
我写了cpuf,让你可以在允许的范围内更改最小和最大频率:

cpuf-demo.gif

请访问链接以复制脚本或获取更多详情。

1启用了Turbo Boost,否则它将最高运行在2.2GHz。当我运行cat /sys/devices/system/cpu/intel_pstate/no_turbo时返回的是0。问题不是我没有获得完整的Turbo速度,而是它没有被激活。 - Jamidd
1我回家后会添加下一步“频率缩放”。 - WinEunuuchs2Unix
2@WinEunuuchs2Unix 你已经回家了吗? :D - Lucas Bustamante
2@LucasBustamante 这是一段漫长的回家之旅 :D - WinEunuuchs2Unix