Linux游戏性能大提升:Windows同步API成为内核原生功能

核心变化

Linux游戏性能正在迎来一次重大提升——ntsync(NT synchronization)模块已被合入Linux内核,将Windows同步原语的模拟从用户空间提升到了内核级别。

简单来说:以前Wine/Proton需要通过一个叫”wineserver”的用户空间进程来模拟Windows的同步操作(互斥锁、信号量、事件),现在这些操作直接在Linux内核中完成,性能开销大幅降低。

技术原理

传统方式:wineserver用户空间模拟

在ntsync之前,Wine/Proton运行Windows游戏时,每次同步操作都需要:

  1. 游戏进程发出Windows同步API调用
  2. Wine将请求转发给wineserver进程
  3. wineserver通过进程间通信(IPC)处理请求
  4. 结果返回给游戏进程

这个过程涉及多次上下文切换,对多线程游戏的性能影响很大。

新方式:ntsync内核级模拟

ntsync将Windows NT同步对象(互斥锁、信号量、事件)直接在Linux内核中实现:

  1. 游戏进程发出同步API调用
  2. Wine直接调用ntsync内核模块
  3. 内核内部完成同步操作

省去了进程间通信和上下文切换,延迟大幅降低。

谁受益最大

  • 多线程游戏——大量使用Windows同步API的游戏(如DX12/Vulkan游戏)受益最明显
  • CPU密集型场景——在CPU成为瓶颈的情况下,ntsync的优化效果最显著
  • Steam Deck用户——作为运行Proton的主力设备,直接享受到性能提升
  • 所有Wine/Proton用户——无论是游戏还是Windows应用

项目历史

  • ntsync项目由Elizabeth Figura主导开发
  • 经历了多次迭代和修改才被接受进入上游内核
  • 最终在Linux 6.10+版本中合入
  • 这是Wine/Proton性能优化的里程碑事件

对站长的参考

虽然这看起来是一个纯游戏相关的话题,但它实际上反映了Linux内核发展的一个重要趋势:通过将用户空间的功能下沉到内核来提升性能

  • 如果你在用Linux服务器——同样的优化思路也适用于服务器场景,如io_uring对I/O性能的提升
  • 如果你在做容器化——内核级功能的增加会影响容器的运行时行为和性能特征
  • 如果你关注Wine/CrossOver——这是运行Windows应用在Linux上的重大性能改善

简评

ntsync的合入标志着Linux在游戏兼容性方面又迈了一大步。以前”Linux不适合玩游戏”的刻板印象正在被逐步打破——Steam Deck的成功已经证明了这一点,而ntsync这样的内核级优化将进一步缩小差距。对于服务器站长来说,这虽然不是直接相关,但Linux内核的持续进化总会以各种方式影响到你的日常工作。

来源:XDA Developers | Hacker News讨论

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容