NT Synchronization Primitive Driver
Linux内核
Wine
Windows API
驱动开发
性能优化
摘要
Linux内核新驱动 /dev/ntsync 实现 Windows NT 同步原语,大幅提升 Wine 性能,部分游戏帧率提升 50-150%。
背景
Wine 项目在用户空间模拟 Windows API。NT 同步原语传统上通过 RPC 到专用"内核"进程实现,但更现代的应用程序使用这些 API 更频繁,RPC 开销已成为瓶颈。
性能提升
| 游戏 | 原始帧率 | ntsync后 | 提升 |
|---|---|---|---|
| Dirt 3 | 110.6 | 860.7 | 678% |
| Resident Evil 2 | 26 | 77 | 196% |
| Tiny Tina's Wonderlands | 130 | 360 | 177% |
技术亮点
- 实现对象: semaphore、mutex、event 等同步原语
- 等待模式: 支持 wait-for-any 和 wait-for-all
- 性能优化: 每个对象只有单个 spinlock;wait-for-all 使用设备级锁
- 线程管理: 用户空间模拟器管理线程 ID 和废弃 mutex 检测
- 设计决策: 使用 misc 设备,便于创建多个自包含的"上下文"
核心价值: NT 同步 API 太复杂,无法在现有原语上实现而不牺牲正确性。新驱动直接在 Linux 内核实现这些问题接口。