您可能不需要该设置,并且可能值得详细了解“低延迟”的含义,以了解它如何调整以适应您需要测试的内容:
当内核构建为低延迟时,它的滴答频率为 1000hz
这意味着内核每秒将抢占进程 1000 次,而不是 100-200 次(或者调用timeBeginPeriod(1)时 Windows 的最大抢占次数为 1000hz)
详细信息在另一篇文章中进行了解释,但基本上可以归结为更频繁地发生上下文切换,这意味着睡眠线程可以更快地唤醒,并且需要尽快处理的事物(例如音频服务器)会更早唤醒。
它基本上使内核检查每个进程“你完成了吗?” 更频繁。
代价是频繁唤醒带来的更高的 CPU 开销,以及可怕的能源效率(顺便说一句,您应该保持 CPU 调速器的性能以获得稳定的读数)
图形中的低延迟被定义为“输入(如键盘敲击)出现在屏幕上所需的时间”。
当垂直同步关闭时,您已经获得了最低的延迟;因为如果图形在 60hz 显示器上以 300 fps 渲染;即使显示器仍在显示前一帧,它也会以 300hz 的频率显示并立即显示,这会在两个或多个帧重叠时导致明显的撕裂。
即使垂直同步关闭,它在屏幕上显示的速度也有限制,这将受到显示器的像素响应(通常为 5 毫秒)和其他硬件限制的限制。
NVIDIA 设置在这里并不重要,因为您已经获得了尽可能低的延迟。
VSync 等待 VBlank 间隔以交换图像。这意味着您可以在显示器上获得完美的图像。
然而,大多数显示器的显示频率为 60hz(除非您购买了 240hz 显示器)。
如果当 VBlank 间隔到来时 GPU 仍在处理一帧,则需要再等待 16.666ms(为了简洁起见,我将截断为 16ms),以便可以显示它。这被称为“丢失”VBlank 间隔,因此会增加延迟。
另一个问题是,如果您的应用程序需要 2 毫秒来处理并在 VBlank 之后立即启动,那么现在您需要空闲 14 毫秒才能在屏幕上显示。
当它显示在屏幕上时,显示的输入至少在 16 毫秒或更早之前收集(假设您的应用程序在 VBlank 之后立即启动,如果它在 VBlank 之后 8 毫秒启动,那么您需要 2 毫秒来处理,6 毫秒空闲,并且输入至少有 8 毫秒或更长时间)。
三重缓冲会加剧这种情况,这可能会导致整个帧的延迟(16 毫秒!)
NVIDIA 的低延迟选项是技术和技巧的结合(通常针对流行游戏进行调整,这意味着它可能并不总是适用于您的特定应用程序),启用后:
sleep()进行测量并测试在给定机器上需要多长时间。一旦找到最佳点,这可能就“足够好了”。将 CPU 调节器设置为性能以获得稳定的读数。出于同样的原因禁用 GPU 的省电功能(具体操作方法因供应商/驱动程序而异)。
推荐阅读《使命召唤:黑色行动 III》中的对抗延迟问题,了解他们如何设置 GoPro 相机来识别延迟来源并修复它;尽管大部分讨论都是针对多人游戏网络延迟(大约 30-200 毫秒)
最终,低延迟是一个深入的话题,恐怕单个切换可能会也可能不会达到您想要的效果;取决于你的需要。
| 归档时间: |
|
| 查看次数: |
3537 次 |
| 最近记录: |