在PC游戏方面,Valve一直支持提高Linux功能的想法。它最近的努力始于命运多舛的蒸汽机,它运行在基于Linux的SteamOS上。它还努力改进开源Windows兼容性层Wine。
Wine的问题在于,它在硬件要求更高的程序上挣扎。阀门通过推出一个测试版的SteamPlay来应对这一挑战,其中包括Proton-一个游戏友好的葡萄酒构建。虽然这确实对一些人有帮助,但在绩效方面仍然存在许多问题。
在Proton补丁笔记的最新构建中,Valve提出了对Linux内核的更改,以克服它在尝试运行一些游戏时看到的问题。
首先,它有一个名为fsync的实验替代品,它提供了“基于futex的进程同步原语的支持”,并且比esync更多地减少了CPU的使用。但是,由于它需要使用内核的Eventfd()函数,因此需要修改Linux内核才能正确工作。
我们建议对Linux内核(lkml.org)进行修改,以扩展futex()系统调用,以公开我们认为支持最佳线程池同步所需的额外核心功能。
这些更改将主要扩展futex()功能,以建立最佳线程池同步。质子4.11将有fsync补丁,以利用新的内核时,支持。
开发人员还提出了对glibc和libp线程的修改。
Collabora的软件工程师Gabriel Krisman Bertazi在一个关于LKML的讨论线程中说:“我们还建议修改glibc和libp线程,以便使用libp线程为Linux本机多线程应用程序提供这一功能。
贝塔齐接着说,在早期的测试中,futexs在运行Proton时,游戏“击败Saber”的性能提高了4%,“古墓丽影”的性能提高了1.5%。
Linux社区欢迎这个补丁,尽管它需要清理一下才能满足当前的编码标准。
阀门已经发布了“概念证明”glibc补丁供审查。它相信这些变化将显著改善Linux上的游戏功能。
Valve表示:“我们将通过在诸如Steam和Source2引擎等本地大规模线程应用程序中采用它来实现效率提升。