【发布时间】:2021-08-10 04:03:48
【问题描述】:
我来自嵌入式背景,非常重视硬实时。对我来说(快速)实时在 Linux 上很棘手,在 Windows 上很可笑,喷气式视频游戏似乎做得很好。
显然,由于它只是软实时,并且频率(相对)较低(60+ Hz),因此简单的解决方案是尽可能快地渲染并希望获得最好的结果。但是是否有任何先进的技术可以进一步提高 Windows 的响应能力?
一些具体问题:
- 有没有办法在不利的时刻处理 Windows 先发制人?当其中一些内核在做其他事情时,您如何共享多个内核上的工作?
- Windows 中的 IO 延迟是否具有确定性?您能否(应该)向调度程序施压以尽快进行上下文切换?
- 最早截止日期优先/速率单调调度(或其他)等调度技术有多普遍? (当然是在现有的基础上构建)
欢迎任何见解!
编辑:
我浏览了一些资源并添加了我的结论:
1。 问:当时间紧迫的计算被抢占时会发生什么?
A: The thread should have higher priority so pre-emption is rare, and when it happens, the interruption should be brief (short interrupts or IO-operations).
Windows 具有将线程移动到其他内核的能力,建议您将它们锁定(-> 线程关联)。
2。 问:IO 操作是否应该比渲染循环具有更高的优先级?
A: Yes, Naughty Dog's engine gives IO-operation higher priority.
- 问:使用什么样的调度?
A: In the presentation, a job system is used (similar to reactive programming).
它使用三个非抢占的优先级。
【问题讨论】:
标签: real-time game-engine