几天前我刷到一条消息,脑子里冒出的第一反应是“这合理吗”——有人给Linux内核写了个补丁,在《文明6》的基准测试里,Steam Deck的1%低帧率直接拉高了将近32%。一台已经发布好几年的掌机,靠一次内核级的骚操作,能把最影响体验的卡顿指标做到这个程度,说句不夸张的,有点逆天。
事情其实是一条线串下来的。Meta的Linux内核开发者David Vernet搞了一个叫“epp_boost”的新特性,塞进了AMD P-State驱动里。简单说,就是给AMD CPU做了个按核心独立调节能效偏好(Energy Performance Preference, EPP)的机制,专门盯着游戏那类“干一会儿活又频繁短睡”的工作负载。这个补丁已经被提交到Linux内核邮件列表里了,目前还没经过AMD那边的工程师正式审核,但Vernet自己在邮件里的解释很有针对性——他说这套设计就是为了游戏场景做的。
为什么这么改?原文里Vernet的说明我尽量用人话还原一下。在现在默认的EPP主动模式下,平台自己根据min到max之间的性能区间选一个运行点,内核只在策略或者功耗限制改变的时候才重新写请求。一个典型的多线程游戏中,主线程或者渲染线程经常每帧都会在futex或者GPU栅栏上短暂阻塞一下,睡眠时间很短,但每次睡眠都会让硬件的性能信号衰减,导致醒来那一刻的爆发是从一个很低的运行点开始,尾巴延迟被放大。哪怕CPU本质上在任务可用时是满负荷的,这种频率塌腰直接体现在画面上,就是掉帧和帧时间百分位的膨胀。
最直接的修法是把EPP全局强行设成“性能模式”,但是那样功率直接拉满,对于Steam Deck这种电池驱动的掌机来说,续航差不多等于白给。Vernet的方式是搞了一个“opt-in”的按核心EPP提升机制,你可以理解为只在需要的核心上打开这个加速开关。更细节的技术讨论和测试方法他也在邮件里列了一大串,我自己看到半截就已经跟不上趟了,感兴趣的老哥可以直接去LKML的存档里翻,我就不在这硬装内行了。
真正让我觉得这补丁有搞头的,是Phoronix已经跑了一轮实测。他们在《文明6》的基准里,把补丁打上之后,1%低帧率提升了31.8%,帧时间改善了4.1%。这数儿要是放在一台刚出半年的新机子上,大家可能也就说一句“优化到位”,可Steam Deck出的年头长了,能在一项对玩家体感影响特别直接的指标上啃下这么大一块肉,真的有点“老兵不死”的意思。更妙的是,稍新一些的AMD锐龙系统理论上也能沾光,等于这波不光是给掌机续了一波,整个锐龙这边的Linux游戏生态都跟着蹭了饭。
不过有一点得先说清楚:这个提升不是官方推送,也不是在SteamOS里点个更新就能白拿的。你得自己愿意折腾,得愿意去翻内核源码,然后手动把补丁加上。补丁打完之后,如果想最大化收益,需要在启动参数里加上“amd_pstate.epp_boost=1”,之后可以通过检查“/sys/module/amd_pstate/parameters/epp_boost”来确认功能是否已经激活。我知道这种操作对于一直用图形界面的兄弟来说有点劝退,但对于愿意折腾Steam Deck底层的玩家群,这套动作基本算是日常热身。
说说我自己的看法。Steam Deck从发布到现在,其实一直处在一个“官方在更,社区也在更”的双线节奏里。很多时候真正能把体验往前推一把的,反而是社区内核开发者闷头肝出来的那些小东西。这次epp_boost补丁的价值不在于它改变了一个跑分里的峰值帧数,而是它直怼了游戏里偶尔卡一下的那种难受感——就是帧时间一到某个场景突然变宽的那一下。能把1%低帧往上硬拽三成,对打回合策略还能忍,但对《哈迪斯》《死亡细胞》这类依赖稳定响应的ACT和肉鸽来说,这提升可能有翻页级别的意义。
最让人期待的是,这事儿还远远没到收尾。补丁刚上邮件列表,AMD那边还没正式评估,如果后续有官方的人接过去再打磨一下,甚至最终被主线内核合并,那Steam Deck的潜力就真的不是今天这个数了。我个人是打算等这补丁状态再稳一点,找个周末刷上试试,至少在《文明6》里体验一下“不卡了”的感觉。毕竟一台跟我跑了大半个游戏库的老设备,能靠一行行代码再支棱起来半档,说没点兴奋那是骗人的。
最后提醒一句:如果你真想动手,记得备份当前内核配置,别一上头把系统搞崩了。这种补丁带来的快乐,是建立在Linux折腾文化基础上的,稳妥操作,别让“提升31%”变成“开机黑屏”就行。
热门跟贴