iPhone 17e性能飞跃,深度优化秘籍曝光
|
亲历现场。那个大版本封版前四十八小时,我蹲在B3-7号测试间里盯最后一轮长时老化——空调出风声跟电流杂音混在一起,像有人拿指甲刮黑板底下那层铁皮。工位隔板上贴的便利贴还没撕,蓝笔写着“查17e功耗突变点”,字被咖啡渍晕开半边。桌上三杯没喝的咖啡,最左那杯冷透了,杯底一圈浅褐色环;中间那杯盖子歪着;右边那杯还在冒热气,我压根没碰过。
外观展示图,仅供参考 组长冲进来的时候鞋带散着,手里捏着一张A4纸,背面朝外,边角卷得厉害。他说开发刚交了个patch,说能“优胜劣汰”——就这四个字,没上下文,没日志,没diff,连分支名都没提。我原以为是资源调度策略调了阈值,结果打开trace一看,是把idle态下两个冗余sensor driver直接干掉了,不是休眠,是卸载。这个我敢打包票:它没走sysfs interface,是用__force_unload硬捅的。但这个我说不准,它到底算不算“淘汰”,还是单纯偷懒省了两行cleanup code。 那个大版本里17e的跑分曲线,乍看是爬坡,细看全是断点。比如多核渲染压测到三百七十二秒,帧率突然稳住不掉了,不像上一版那样软着陆。我们当时全盯着GPU频率图,没人低头看温度传感器——直到凌晨三点十七分,B3-7间顶灯管开始闪,频次跟thermal throttling节奏完全一致:亮-暗-亮-暗-亮(停顿)-亮-暗。三秒一循环。我抬头看了七次,第七次闪完我就去拔了温控箱的网线。没报错,就是不上传。开发来查说是“云同步抖动”,我当着他面把同一台设备换内网再跑一次,灯不闪了,数据也回传了。他摸后脑勺,没说话,转身去修另一台烧掉的基带模块校准盒。盒子上面贴着张泛黄便利贴:“别动跳线,动了重烧bootrom”。 我跟产品经理吵过一架,在茶水间微波炉旁边。他拿着iPad给我放对比视频:左边是上一版,右边是那个大版本,说“你看,滑动顺多了”。我打断他:“你切到后台看看通知栏刷新延迟”。他切了,通知栏卡住两秒,然后弹三条——不是依次,是一起爆出来。我说这叫“伪顺滑”,是把render thread的work queue塞太满,把丢帧藏进input lag里了。他点头点头,掏出手机发钉钉,语音转文字转出“建议优胜劣汰底层队列模型”,发完还问我:“这个词儿你们测试也认吧?”我没回,端起第三杯咖啡,吹了两口气,没喝,放回桌上。窗外雨早停了,但空气里一股水泥味,像B3车库排水沟堵了一周没通。 其实最要命不是丢帧,是那个“淘汰”动作没留回滚钩子。某天晚上我们模拟OTA中断,强制断电重启,有两台17e的APU固件没起来,log里只有“failed to bind: e801”,再无下文。开发连夜改,补了个fallback loader,但没走标准签名链——用的是临时key,打了个内部tag,叫“v2-temp-bypass”。这个我见过三次:一次在build日志里,一次在devicetree blob注释里,还有一次,是我在司机车载广播声里听出来的。那天凌晨打车回家,司机在听评书,《大明英烈传》,正说到徐达火烧元大都粮仓,“一把火,劣的烧尽,优的存种”,我差点笑出声,结果笑一半噎住了,因为后视镜里他右耳挂着的AirPods,闪的是绿色呼吸灯——跟我们实验室那批测试机固件刷写中状态灯一模一样。 我不信什么“飞跃”,也不信“秘籍”。我就信trace里那一行一行的sched_switch,信dmesg里每条WARN_ON_ONCE()后面跟着的函数调用栈,信工位上那三杯咖啡冷热不一的液面弧度。优胜劣汰?行啊,可你得让“劣”的死透,别让它卡在probe halfway,等着半夜三点自动复活。上一版起码还会报err,那个大版本,它连error都不抛,就静静躺在那里,像块没通电的PCB板。 我现在先把B3-7间所有灯管换掉。明天一早我要去把那两台APU起不来的机器,用JTAG挂上去扒一下ramdump。不管是不是v2-temp-bypass的事——反正先看一眼,再决定要不要重新跑一遍thermal soak test。反正空调声又开始了,这次夹着新灯管的滋滋声,比上回还难听。 (编辑:171手机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

