PC处理器十年前进入双核心时代,至今桌面上主流还是四核心,六核、八核并不多,而手机处理器在无限军备竞赛的刺激下,短短几年就已经迎来了十核(联发科MT6797)!
与此同时,争论也始终不断:Android系统真的能充分利用这么多核心吗?
Android Authority近日就此进行了一次细致的测试。原理很简单,Android系统内的/proc/stat文件里就有CPU每个核心利用情况的记录,编写一个简单的小工具即可提取出来,而为了减少监视对性能的影响,在测试进行期间仅提取数据,事后再分析。
测试处理器是四核的骁龙801、八核的骁龙615。
每个核心的利用率都很高,大部分时间都在40-70%的范围,甚至能突破90%。注意:这是个平均后的图表,因为原始数据跳跃性太大,事实上根据原始数据,有好多次都接近100%的。
骁龙615的八个核心也都很活跃,4个以下很少。
尽管每个核心的利用率不同,有2-3个明显偏高,但都没闲着。注意骁龙615是基于big.LITTLE架构的,这里多个核心运行并不是为了提高性能,而是为了能效。
Chrome做了很好的多线程优化,会高效地将工作负载分配给多个核心。其他应用又是如何呢?我们挨个来看。
作为参考,这是八核待机时(屏幕开启但无任何操作)的状态。CPU也并没有闲着,最多会开6个。
YouTube跑四核:只用了2个核心,平均利用率低于50%。
YouTube跑八核:主要用4个,偶尔6个,偶尔3个,平均利用率30%。有趣的是,big核心用的很多,LITTLE核心却很少。
《神庙逃亡2》跑四核:2个很平均地分配工作,另外2个没啥用。
《神庙逃亡2》跑八核:大部分时间4-5个,少数时候7个,但基本只有一个在干几乎全部工作。
《神庙逃亡2》跑联发科四核:全部4个分享工作。
Gmail跑四核:2-4个分工合作,但里偶遇你顾虑从未超过50%。
Gmail跑八核:4-8个,但利用率不到35%。
《激流快艇2》跑四核:基本用2个,另外2个很清闲。
《激流快艇2》跑八核:一直用6-7个,但大部分工作都是其中3个完成的。
接下来是一个很有趣的测试程序:安兔兔。
注意最后阶段,八个核心全部都在全速运行,这是普通应用里绝对看不到的。
你可能会问了,Gmail这样的轻量级应用,怎么会用到8个核心呢?其实这都是big.LITTLE混合架构的结果。工作负载升高了,就会开始调用big核心,LITTLE核心逐渐休息,反之亦然,中间还有一些交叉时刻。
当然,切换的速度是非常快的,每秒钟都会几千次。
再以《Epic Ciadel》为例看看:
刚开始是big核心在忙活,LITTLE核心几乎休眠,然后大约12秒的时候,big核心轻松下来,LITTLE核心开始活跃,20秒前后再次切换,然后30秒、45秒、52秒反复切换。
期间,核心使用数量就在不停变化,比如前10秒只有3-4个(big核心),12秒前后最多6个,然后降到4个。
本次测试的目的十分单纯,就是看看不同场合下,CPU有几个核心能够得到发挥。尽管测试不是很深入全面,比如缺乏A57/A53、A72/A53这样的组合,比如监测数据间隔比较长(330毫秒),但仍能在很大程度上说明一个问题:
现如今,多核心在手机上并不是完全没用的浪费,特别是在big.LITTLE混合架构下,异构多处理技术(HMP)已经相当纯熟,可以有效地根据负载情况,调动合适的不同核心去工作,而且不仅仅是大型游戏,谷歌自己的Chrome和Gmail等应用就做得很好。
当然绝大多数情况下,四核处理器都是够用了,八核多出来的四颗核心,主要作用还是节能省电,节能核心与性能核心交替使用,big.LITTLE架构也不是尽善尽美,但我们很欣喜地看到,Android应用开发已经快速跟上了多核心的脚步,单纯说“多核无用”是不对的,但单纯夸大多核心的作用、唯核心数量论也是不对的。