在Core i7的Mac上禁用Turbo Boost?

10

有没有办法在运行 Mac OS X 的 Core i7 mac 上以编程方式禁用Turbo Boost?我需要能够在代码优化等基准测试期间执行此操作。如果无法实现,任何可以禁用/启用Turbo Boost的实用程序,即使需要重新启动,也将非常有用。

在 Stack Overflow 上有一个相关问题(不是针对Mac的):How to turn off Turbo Boost temporarily? 但是即使对于PC,似乎也没有办法通过编程或即时实现这一点?


我猜你已经在开发者工具中查找选项了吧?我相信你可以在那里关闭HyperThreading,但我不知道是否有类似Turbo Boost的选项。在Mac上没有开放的EFI会使这样的事情变得困难。你可能可以通过像这样的项目来解决这个问题,但不能保证成功。 - Cody Gray
@Cody Gray:是的,已经尝试了通常的方法——开发人员工具、广泛的谷歌搜索等等。rEFIt 可能是一个可以探索的可能性,但我希望有一些更少劳动密集型的东西,比如在CPU控制寄存器中翻转一个位,或者使用现有的实用程序。 - Paul R
我相信易于实时修改的不安全性,因为这些选项仅供用户修改系统参数。否则,每个人都可以将某人的高端处理器变成一只乌龟,只能处理计算器相关的问题。 - Nocturnal
在苹果的情况下,他们喜欢宣传这个耐力特性的能力。所以禁用是他们不喜欢的事情... - Nocturnal
@Nocturnal:是的,我曾经和一位苹果工程师交谈过,他负责性能/优化方面的工作,显然他的团队也在内部遇到了同样类型的问题,所以看起来这是一个普遍存在且没有简单/明显解决方案的问题。 - Paul R
显示剩余2条评论
5个回答

19

这个内核扩展帮助我仍然能够使用我的MacBook,尽管电池快没电了。非常感谢! - toabi

6

当然,确实是这个原因我才创建它的。我刚买了一台新的i7 MacBook Air,它运行时非常热,所以我开始寻找解决方案。我找到了这个,并制作了这个小应用程序,使事情变得更容易:)。 - rugarciap
很酷 - 谢谢。顺便问一下,你有没有注意到Turbo通常可以在最大频率(例如3.3 GHz)下保持多长时间,直到温度过高并且时钟速度降低?这是几秒钟还是几分钟之类的? - Paul R
欢迎!根据我的最新观察,在启用Turbo Boost并执行一些高要求的进程(例如游戏 :))时,我的电脑在几分钟内达到了98摄氏度,并且风扇速度已经达到最大值(6500转/分)。如果禁用Turbo Boost并将风扇速度调整为安静的4000转/分,则温度永远不会超过85度。 - rugarciap
是否可能采用类似的方法来禁用超线程,降低最大频率甚至降低CPU电压以实现更低的温度和更安静的风扇? - xpereta

4

CPUID.com的Tmonitor实用程序可以在Windows内部实时禁用/启用Turbo Boost,而不是在启动时!必须有一种方法可以在OSX内部执行相同的操作。


非常好 - 谢谢 - 我看到这里有一个屏幕截图:http://www.cpuid.com/softwares/tmonitor.html,显示了Turbo Boost启用/禁用的菜单选项 - 假设它实际上可以工作,那么就像你所说的,在Mac OS X和/或Linux上肯定有一种方法可以做到这一点。 - Paul R

4
你无法这样做。某些内容需要从BIOS中配置,例如TurboBoost或Vt。
具体而言,这是通过IA32_FEATURE_CONTROL MSR完成的。在PC上,启动时MSR被解锁,并且BIOS设置正确的位以启用或禁用功能。配置完成后,BIOS会锁定MSR以使更改生效并防止未来的修改。
我不知道是否有可能在将PC带入保护模式之前再次解锁MSR,也不知道在使用EFI而不是BIOS的MacBook上如何工作。你可能可以通过某种EFI扩展来实现它。

很容易,你只需要设置正确的IA32_FEATURE_CONTROL MSR位,但是,我认为你自己无法完成,因为BIOS在配置完成后会锁定MSR。至少,在带有BIOS的PC上,可能需要在Mac上使用EFI扩展来实现。已更新帖子。 - Mahmoud Al-Qudsi
谢谢 - 额外的信息很有用 - 听起来我需要看看 rEFIt,看看它是否可以提供在启动时执行此类操作的方法。 - Paul R

2

最终似乎有一个好的解决方案,我今天在一台搭载Core i7的MacBook Pro上测试了这个方案,并且它似乎工作得很好。亚历克斯·斯特泽莱茨基(Adam Strzelecki)是波兰克拉科夫雅盖隆大学并行计算研究员,他编写了DisableTurboBoost.kext - 这是一个小型kext,可以通过命令行加载和卸载,以禁用/启用TurboBoost。


这并不是什么惊人的发现。请注意,该工具的同一作者在你自己再次找到它两天之前已经回答了你的问题。 - biocyberman
好的,我已经注意到了 - 我现在已经将@Adaś的答案设为被接受的答案。 - Paul R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接