Valve提议对linux内核进行修改,使其对游戏的支持更加友好。具体来说,它希望扩展FUTEX(fast user-space locking快速用户空间锁定)功能,并对glibc和lbpthread进行修改以提高多线程操作性。
Valve一直坚定不移地支持改进linux系统的游戏性能。尽管在steam os中对Linux的游戏性能进行了深度优化并改进了Wine的兼容性能,甚至和众多硬件厂商合作推出了搭载steam os系统的steam machine设备,但Linux在游戏性能上的瓶颈不是这么简单就能突破的。
Wine的问题在于,当面临着更高硬件要求的程序时,显得力不从心。Valve通过在Linux发布的beta版steam play中加入Proton一类对游戏更加友好的定制版Wine来保证游戏体验,虽然对于某些玩家来说这却有成效,但在Linux的游戏性能方面仍然存在许多问题。
在Linux最近一次build的patch notes中,Valve建议对Linux内核进行修改,以克服它在尝试运行一些游戏时发现的问题。
首先,它为esync提供了一个名为fsync的实验性替代品,后者提供了“对基于Futex的进程原生支持”,并且比esync有着更少的CPU资源占用。但是,它需要使用Linux内核的eventfd()函数,因此需要对Linux内核进行修改才能确保其正常工作。
“我们建议对Linux内核[lkml.org]进行修改,以扩展Futex()系统调用以公开我们认为支持最佳线程池同步所需的额外核心功能。”
这些更改将主要扩展Futex()功能,以建立最佳线程池同步。Proton 4.11将得到fsync补丁以在新内核可用时提供支持。
开发人员还提议对glibc(GNU发布的libc库)和libp线程进行修改。
“我们还建议对glibc和libp线程进行修改,以使linux本机多线程应用程序可以使用libp线程,这可以从等待一组futexes的行为中受益,”协合的软件工程师Gabriel Krisman Bertazi在LKML(Linux内核邮件列表)讨论中说。
Bertazi接着说,在早期测试中,在Proton中运行Beat Saber的性能提高了4%,影子盗墓者的性能则提高了1.5%。
Linux社区欢迎该修补程序,尽管需要对其进行一些清理,以满足当前的编码标准。
Valve贴上了“概念证明”Glibc贴片以供审查。它相信这些改变将大大改善Linux上的游戏功能。
Valve表示“我们将通过在本机大规模线程应用程序(如Steam和源2引擎)中采用它来提高效率”
(L)
小狮子最喜欢的鸡腿 分割线
领取专属 10元无门槛券
私享最新 技术干货