核心变化
Linux游戏性能正在迎来一次重大提升——ntsync(NT synchronization)模块已被合入Linux内核,将Windows同步原语的模拟从用户空间提升到了内核级别。
简单来说:以前Wine/Proton需要通过一个叫”wineserver”的用户空间进程来模拟Windows的同步操作(互斥锁、信号量、事件),现在这些操作直接在Linux内核中完成,性能开销大幅降低。
技术原理
传统方式:wineserver用户空间模拟
在ntsync之前,Wine/Proton运行Windows游戏时,每次同步操作都需要:
- 游戏进程发出Windows同步API调用
- Wine将请求转发给wineserver进程
- wineserver通过进程间通信(IPC)处理请求
- 结果返回给游戏进程
这个过程涉及多次上下文切换,对多线程游戏的性能影响很大。
新方式:ntsync内核级模拟
ntsync将Windows NT同步对象(互斥锁、信号量、事件)直接在Linux内核中实现:
- 游戏进程发出同步API调用
- Wine直接调用ntsync内核模块
- 内核内部完成同步操作
省去了进程间通信和上下文切换,延迟大幅降低。
谁受益最大
- 多线程游戏——大量使用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内核的持续进化总会以各种方式影响到你的日常工作。
© 版权声明
THE END
















暂无评论内容