关于降低延迟
本文最后更新于 90 天前,其中的信息可能已经有所发展或是发生改变。

打游戏,我需要降低延迟,特别是音游/FPS,涉及到准星是否跟手、感官反馈、更低的帧间时间

中断(Interrupt)延迟

CPU 很快,在处理 IO ( I/O, Input/Output ) 的过程中通常使用中断(Interrupt)技术来避免 CPU 处理时间的浪费。

写过程序的应该知道异步(Async),它的底层原理上就是通过中断来实现的。

一个简单而抽象的例子:例如 CPU 需要读取硬盘数据,CPU 只需要告诉硬盘“我需要读取地址为x的数据n个字节长度,放到y内存地址上”,然后 CPU 就可以干别的了。等硬盘完成读取之后,通过 IRQ(Interrupt Request)信号告诉 CPU “我读取完成了,你可以直接从内存取数据了”。
另外提一句,这里硬盘可以直接操作内存,是通过 DMA(直接内存访问,Direct Memory Access)技术来实现的。游戏 DMA 硬件外挂也是通过类似的方式,绕过 CPU 来读取内存,使得软件层面上无法察觉。
再另外提一句,现代 PC 的内存控制器集成在 CPU 封装内部,从物理上来说 DMA 还是要经过 CPU 的,但是不经过 CPU 的计算核心。

IRQ 通常来自于外界 IO 事件,例如鼠标产生了新的动作,网卡收到了新的数据帧,声卡/显卡表示已经处理完成并希望收到新的任务。

内存延迟

内存延迟影响的是游戏帧率、运行能效。有人说帧率提升不了多少,但是能效很重要,因为 CPU 在大量等待内存操作,而无法进行下一步计算,这对串行计算来说问题更严重。

只要不是太烂的内存,都可以简单超频和降低一下延迟,有 XMP 可以无脑直接开 XMP。

不要使用洋垃圾和 ECC/RECC 内存。ECC 内存带校验机制 适用于长时间开机和注重稳定的场景,ECC会带来性能损耗。而 RECC 增加了用于寻址的寄存器,更慢了。

通常来说 Intel 比 AMD 的内存控制器(IMC)延迟更低(大概 Intel 11th 或更早,不考虑大小核、IO Die、异构、HEDT 等)

上下文切换延迟

上下文切换延迟,CPU 核心是多个线程共享的。当 CPU 运行的线程切换的时候,CPU 需要保存当前线程的栈(Stack)信息,然后恢复另外一个线程的栈信息,该过程是有代价和延迟的。所以尽可能减少其他正在运行的程序。

一般来说 L1、L2 缓存为核心独享,L3 缓存为共享。当核心间上下文切换时,L1、L2 缓存会失效。

大小核技术

大小核技术(Intel),小核延迟高,不要让延迟敏感的进程运行在小核上。

IO Die

// TODO

NUMA

// TODO

节能状态延迟

// TODO C-State、ASPM

帧渲染延迟

输入设备延迟

// TODO 鼠标键盘回报率、外设硬件内部延迟

音频延迟

有条件的话使用 ASIO/WASAPI 进行设备独占输出。

使用低采样率和位深度,例如 44100hz 和 16bit ,这样可以减小音频缓冲区大小,来降低延迟。

我认为输出音频样本格式尽可能和音源一致,避免重采样过程带来的延迟。一般游戏为 44100 或 48000 的音频资源。所以我不会选择比 44100hz 更低的采样率,这样可能会带来重采样延迟。

诊断与调试工具

// TODO 绑核工具

AIDA64 诊断内存延迟

// TODO link

Microsoft Interrupt Affinity Tool 修改 IRQ 亲和性

https://www.techpowerup.com/download/microsoft-interrupt-affinity-tool

LatencyMon 检查 DPC 延迟

https://www.resplendence.com/latencymon

安全软件

不要安装任何杀毒软件。强调,不要安装,禁用是无效的。

可以适当使用 RootKit(火绒剑?)工具来检查内核。

包括内核驱动、钩子、LSP

显卡驱动设置

// TODO

尝试使用魔改驱动

// TODO

游戏内设置

// TODO

注册表

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mouclass\MouseDataQueueSize
    • 默认值 100 十进制
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdclass\KeyboardDataQueueSize
    • 默认值 100 十进制

其他

  • 训练更好的脑子和神经反射
  • 保持良好的电脑使用习惯
  • 感谢好友 DarkSakura0127
  • // TODO review 补充如何降低延迟
  • // TODO 禁用幽灵和熔断补丁
  • // TODO 关闭 Exploit Protection
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇