Reddit:修改 CPU 调度让 2018 i9 版 MacBook Pro 不再肛缩

2018-07-24 17:24:37 +08:00
 CivAx
太长不看:我找到了一个神奇的办法让我的 MBP i9 能在 Cinebench 里跑出 1100 的分数,并且持续测试能稳定在 1000 - 1100 分,而且持续测试的过程中没有肛缩



我在买了新款的 i9 版 MBP 后也一样遇到了降频问题

实际上肛缩的根本原因跟你之前看过的其他帖子里说的一样,不是因为 CPU 过热降频,而是因为 VRM (电压调节模组) 的电压“降频”了,导致无法稳定供电给 i9,所以 CPU 的频率也相应降低了。

当 VRM 芯片过热后(这个“过热” 和 CPU 的 “过热降频” 不同),主板会发送信号令 CPU 把频率压到最低( 800Mhz )来给 VRM 一点降温的时间,VRM 恢复后 CPU 将重新恢复到之前的性能,压榨 VRM 并开启 Turbo 模式,然后 VRM 又因此过热,CPU 又开始降频,构成一个完美的死循环。这是一个十分糟糕的状态,因为你的 CPU 重复地在 Turbo 和 800Mhz 之间切换。

这明显是 Apple 的问题,而且我和其他人的观点一样,认为这种 “配置调教” 根本不应该轮到用户自己来动手,但如果你也有一台 MBP i9 并且在寻找解决问题的办法,你可以参考我的做法。

警告①:在正式开工之前,你需要关掉 macOS 的系统完整性保护( SIP ),这样才能允许安装自定义的 Kext。
// 原文是“将 SIP 设定为自定义模式,这样可以允许安装自定义 Kext,虽然会削弱系统的安全性,但是至少不是彻底关闭 SIP ”,但我没找到可以改成自定义( Custom )的方法…我就按照我的理解翻译了。
警告②:这么干很可能会损伤你的电脑硬件,且这不在 Apple 的保修范围内,风险自担。但是我的看法是,默认的配置实际上比我给出的调教方案对电脑损伤更大(下面会解释这个说法)。

1 )打开 https://github.com/sicreative/VoltageShift //这个 Kext 编译后可以查看和修改 mac 的电压配置文件

2 )重新指定 votageshift 的存放路径,不要直接回车跑,代码本身有个 bug,他指向的路径是./voltageshift,而不是正确的~/voltageshift/voltageshift

sudo chown -R root:wheel VoltageShift.kext
./voltageshift read 0x610 //读取 MSR
RDMSR 610 returns value 0x428 3e8 00 dd 8320
↑我会把重要的参数代表的意思翻译出来,MSR 610 意思是 MSR_TURBO_POWER_LIMIT

Hex 3e8 == 1000
1000 / 8 == 125
↑这代表 PL2 ( Power_Limit_2 )被设成了 125W,Power Limit 2 是 “ Turbo Boost ”的设定


Hex 320 == 800
800/8 = 100
↑这代表 PL1 ( Power_Limit_1 )被设定成了 100W,PL1 是普通模式下的限制,也就是说“最大电池时间”设置下的 CPU 的功率配置

(关于这个 “时间参数” 的转换计算比较复杂,所以就按我说的看吧)但是:Power_Limit_1_Time 却是……
dd = 28 Seconds.

等于说 Apple 所有在售的 i9 版 MacBook Pro 的 CPU 功率调节都是 100W/日常,125W/Turbo (睿频持续 28 秒)。

我花了数小时去测试不同的参数,直到我终于确定了一个最高值,49W,在我的机子上 49W 是在 VRM 被临近射爆的极限。

但是你要注意,这个最大值只是配给 CPU 的,并没算上其他芯片组(比如独显),如果你的其他芯片组经常在高负载下工作,你可能要相应调低这个极值给其他芯片组留空间。

同样我也花了数小时去测试不会导致 VRM 被射爆的 Turbo 模式的最大持续时间,同样是在我的机子上,这个值是 8 秒

那么乘积是
49 * 8 = 392
392 的 hex 值是 188

就像我之前说的一样,“时间参数”的计算转换比较复杂,所以就按我说的看就行了:

D9 = 7 seconds.
1B = 8 seconds.
9B = 10 seconds.
[...]
DD = 28 seconds. (默认)

全部组合起来,在我这台机子上正确的 MSR 参数应为 0x428 3E8 00 1B 8188

3 )然后你可以用这条命令来使这个参数生效:./voltageshift write 0x610 0x4283E8001B8188

注意,每次你重启这个配置就会被回滚,你最好一开机就这么调一次,以后我可能会写个脚本专门用来调这个。

在我看来,Apple 根本就是在瞎逼整,我上面做的那些测试以 Apple 的能力肯定能做得更完美,在设备没完全调试好之前就敢这么上架出售是十分不负责的行为。

据我所知,MSR 的参数实际上是 Intel 配的默认参数……很显然,Intel 寻思着你要用我的默认参数,你的机子供电肯定得能稳定在 100W。而且 Intel 也没指望你的散热一定能兜住 100W,反正 CPU 到宕机临界值会自动降频降温的嘛,而且单纯的 CPU 降频也没 VRM 肛缩这么难受。如果苹果打算按照 Intel 的标准来做,那么他们肯定会发现得给 VRM 加个散热的玩意儿,就算他们不打算这么做,他们也该将 MSR 的值调整到 VRM 的能力范围内(比如我的这档配置)

/---- [修正附注] ----\
从其他人给我的反馈来看,看来这个 MSR 的数值并不是 Intel 给的,但至少好几年以来,Apple 所有使用的 Intel 芯片的 MacBook Pro 和 MacBook Air 一直是沿用这套配置……
等于说这个事情只是凑巧遇到了:以前从来没有过的能榨取这么多功率的 CPU,所以也从未摸到 VRM 的天花板,结果这次有了,然后就 GG 了
\---- [修正附注] ----/


好消息是,这么捣鼓一通下来,性能[至少]提升了 20%(而且很可能不止,主要视负载而定),而且 Apple 本身就可以修改这些设置(或者用其他的电源管理设定来处理 VRM 过载的问题)。哪怕 Apple 摸了,作为消费者的你们也能自己捯饬。

坏消息是,这台机器上的 i9 芯片如果配套更优良的 VRM (和更得当的散热),明显性能可以更强,没准能比我给出的这套配置再强 20% 到 25% 。不过在这套模具下肯定是做不到的了,苹果没给自己留下什么施展的空间,能做到的也就只有召回,重新换套可以照顾到 VRM 的散热、散热硅脂换成液金这类小改进。

更糟糕的消息是:如果 Apple 摸了,你也摸了,每次肛缩你的系统就会从 800Mhz 到 满载切来切去,实际上会给 VRM 造成更大的负担,几乎可以肯定 VRM 的寿命会急剧减少,会更容易造成主板损坏。 \\ 这个我持保留意见

如果谁有 2018 15 寸版 i7 2.6G 的 MacBook Pro,我比较感兴趣看看这个配置档位的机子上的 MSR 是怎么写的,也好奇如果同样按照我的调教参数设定一次,CineBench 跑分能有多少。我的这套调教参数[应该]适用于所有的 2018 15 寸 MBP

我重申一次,我的这套配置并没有留给 GPU 足够的喘息空间,如果你的 GPU 经常工作在高负载下,你最好根据你的使用负载情况重新修改调教参数。我估计这套参数适用于跟我一样使用环境的机器:几乎不用 GPU,电脑放在桌子上,室内开着空调。
如果你在户外 37.8 度(原文 100 华氏度)的环境里使用,我估计你按这档配置调出来该缩还是缩。
如果你在冰箱,里或者在冬天的室外…你可以试试调到 49W 以上的功率。

[修正] :

这个是调整了配置后,连续跑 Cinebench 三次的 Intel Power Gadge 监控截图,Note the nice symmetrical spikes of turbo just after the dip for ~1-2 seconds between when one run stops and I click to run it again. This is what Turbo is supposed to do, using up the power budget from the previous seconds where little/no work was done. (这两段我的译文有点词不达意,直接放原文了)
https://imgur.com/a/M6mzJFV

This is a screenshot of Intel Power Gadget while running Prime95 with In-Place Large FFT Torture Test for approximately 2 minutes: https://imgur.com/a/GfT59rw


[ PS ]
这里是其他时间对应的参数:

6 Seconds: 99

5 Seconds: 59

4 Seconds: 19

3.5 Seconds: D7

2.5 Seconds: 57

2 Seconds: 17

1.5 Seconds: 95

1 Second: 15


原帖地址: https://www.reddit.com/r/macbookpro/comments/91256u/optimal_cpu_tuning_settings_for_i9_mbp_to_stop/
7255 次点击
所在节点    MacBook Pro
14 条回复
ynyounuo
2018-07-24 17:32:46 +08:00
不错,可以买了。
bookit
2018-07-24 17:44:56 +08:00
按 Apple 的性格,会看不见这帖吧
hugo2lee
2018-07-24 17:48:04 +08:00
期待 i9 版出现官方延保
Cavolo
2018-07-24 19:19:55 +08:00
真的搞笑了,苹果需要别人给它调校电源管理😅
shutongxinq
2018-07-24 19:26:14 +08:00
苹果重新定义物理规则: 我的 i9 能跑 100w, 台式机是个渣渣。
windfarer
2018-07-24 19:27:32 +08:00
哈哈哈,这个翻译神了
HarveyJ
2018-07-24 19:29:20 +08:00
本来就是图稳定图省心买 mac,结果变得更加折腾了,打扰了打扰了。。。
zhaidoudou123
2018-07-24 19:41:52 +08:00
我不信烧了苹果不保修(
randyzhao
2018-07-24 23:57:41 +08:00
太费心了,要么还是买 i7 吧
randyzhao
2018-07-25 00:04:22 +08:00
不过。。。不知道 Mojave 正式版能不能修复这个问题呢。
20015jjw
2018-07-25 00:06:08 +08:00
真难受 等 rwddit 大佬弄个成熟的东西出来吧 反正公司要下个月才发 18 款..
lguan
2018-07-25 02:30:36 +08:00
官方的修正更新已经出了

https://support.apple.com/kb/DL1973?locale=en_US
KevZhi
2018-07-25 02:52:33 +08:00
本质上就是一个变频空调和定频空调的问题
PerFectTime
2018-07-25 14:48:28 +08:00
肛缩牛逼 233

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473751

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX