今天的内容是SCENE6“性能监视器”调整介绍,内容很少但篇幅不短,主要是通过几项测试结果来展现新特性的作用。行文杂乱无章,各位看官多多包涵。
先来回顾下旧版性能监视器界面布局,用过SCENE的小伙伴应该都很熟悉了,这是一个非常有辨识度的布局设计。
在过去,我们一向喜欢用CPU频率和负载(%),来衡量处理器的繁忙程度,或应用的性能需需求,还可以基本了解调度的激进程度和温控限制情况。
以上图展示SCENE的监视器为例:
显示的[频率]是指监视器刷新那一瞬间CPU所处的频率,它绝对不是实时的。出于人眼识别能力和性能考虑,监视器每1秒钟才会刷新一次。
显示的[负载]则是通过读取/proc/stat计算得来,代表上1秒内CPU出于繁忙状态的时间比例。
偷偷透露下,如果需要提高监视器数值采样频率,可以打开[精准监视器]选项,并重新开关悬浮窗。但是,这必然会增加开销,不建议喜欢监视器常驻显示的小伙伴开启此选项。
接下来仔细看一眼新版的性能监视器界面。
发现变化了吗?
左侧CPU[*]被去掉,负载(%)左移,原来的位置被换成了一个***M的数值,这个数值就是本篇的主角。它代表的是该核心前1秒的时钟周期数(Cycles),此处M是Million(百万)的缩写。
简单来说,它体现处理器实际发挥了多少性能或者干了多少活的关键性数值。例如,1颗频率固定2GHz的核心,上1秒使用率为93%的话,这里显示的数值就是2000M*0.93=1860M(Cycles)。
我们有很多朋友,特别喜欢玩游戏的时候把CPU频率锁满,殊不知这么做很可能会会又卡又烫。我说“你这温度,撞温度墙了吧”,他说“我删温控了啊”,这就是令人苦笑不得的误区,删了温控不等于没有温控。
我们所说的删温控,通常都是指去掉系统“根据电池或者接近机身温度的虚拟数值,去控制性能上限”这一策略。说撞温度墙更多是指,CPU/GPU温度达到设定的阈值。
* 先打个预防针,不要指望调高温度墙来提高性能释放(除非温度墙被故意设置的很低)。因为“高温-漏电”是可以形成恶性循环的,适当降频和改善散热,才能从根本上解决问题。如果你不认可我这个观点,先别发表“买了旗舰不拉满频率就是浪费,不如去用xxx”这样的的观点,耐心看完本篇,也许就有新的见解。
从前的频率和负载显示,可能都没法告诉你CPU性能因为温度上升损失了多少,居高不下频率会骗你,让你觉得性能已经得到充分释放,但Cycles会告诉你真相。
下图中是一台骁龙8GEN1的小米12,在电池温度很高的情况下进行的压力测试。
我删温控很成功,电池51.5°C,CPU显示满频满载。
但是你看Cycles,中核1461M,大核不到2000M。通过Cycles换算一下,1461M / 97% ≈ 1506MHz。此时中核没有2496MHz的性能,只有1506MHz的性能。
所以,CPU满载温度爆表的时候,不能上来就骂游戏优化差。很可能并不是游戏性能要求高,而是你核心温度高导致性能严重下降了。
下面是另一组测试。同样是8GEN1的小米12,分别设置两组不同的频率,在GPU GFLOPS下压测。
仔细观察图中的各项数据,
这些是重要的对比信息。
这是一个非常有意思的现象。两组测试设定的大核频率相差整整1GHz,性能得分却相差无几。为什么会这样呢,我们看Cycles就明白了。
第一组 大核86%负载 1860M Cycles,计算1860M / 0.86 ≈ 2116MHz。
第二组 大核97%负载 2232M Cycles,计算2232M / 0.97 ≈ 2300MHz。
从数据来看,无论是哪一组,大核都[偷偷]跑出了高于设定频率的实际频率。
这里顺带阐述下这一怪异现象的细节。
目前我只在8GEN1上发现存在该现象,具体表现为“当中核上升到较高频率时,大核的性能会不完全受频率控制”,同样“在大核上升到较高频率时,中核的性能也会不完全受频率控制”。
在实际使用过程中,给我造成了一种[错觉]:8GEN1大核非常强壮,只需很低的频率就能畅玩游戏。
此处引用 @asto18089 的一些观点来解释这一现象(可能与他原话表达的意思有所出入,各位看看就好)。
目标频率:操作系统本身告诉处理器要跑的频率;
实际频率:处理器真正的运行频率,由处理器的PLL (Phase Lock Loop)决定;
目标频率可以等于或不等于实际频率,目标频率只是实际频率的一个“建议”;实际频率 * 占用率 = 有效频率(Cycles);
Cycles也作为一项新的统计纬度,加入到帧率记录的数据中。最后,分享一张测试截图,作为本篇结尾。一起感受下CPU性能在主板中框持续升温过程中的下降趋势。