地址:
北京市朝阳区广顺北大街33号院1号楼1单元6685号
工作时间
周一至周五: 9AM - 7PM
周末: 10AM - 5PM
地址:
北京市朝阳区广顺北大街33号院1号楼1单元6685号
工作时间
周一至周五: 9AM - 7PM
周末: 10AM - 5PM
.webp)
📉 消除延迟毛刺,决胜稳定之道
在标准 Linux 环境下,系统调度、设备中断、内存回收等都会引入不可预期的长尾延迟。Fixstars 的实测表明,未调优的普通 Linux 内核在网络 ACK‑ACK 测试中出现大量超过 400 µs的回复间隔,而改用实时(RT)内核后,大多数延迟下降到 200 µs 以下。Rigtorp 使用 hiccups 工具测量各核心的最大抖动时发现,未隔离核心的最大抖动达 17 ms,而通过隔离核心后,专用核心的最大抖动仅 约 17 µs。这些数量级上的差异说明了系统噪声对时延分布尾部的巨大影响。对于需要在几个微秒内做出决策的 HFT 来说,抖动会直接导致策略错过盘口报价或执行顺序错乱。
| 优化措施 | 实施要点 | 效果 |
|---|---|---|
| 隔离 CPU 核心 | 使用 isolcpus、nohz_full、rcu_nocbs 等内核参数将关键线程绑定到专用核心;利用 irqaffinity、irqbalance 将设备中断绑到其他核心;用 tuna 等工具将内核线程和 workqueue 移走。 | 未隔离核心最大抖动 17 ms,隔离后仅 17.9 µs。隔离后 RT 内核高延迟事件从 200 µs 降至 <100 µs,吞吐率仍保持 92 Gbps。 |
| 使用实时内核 (RT kernel) | 编译或安装 PREEMPT_RT 补丁的 Linux,减少抢占延迟;结合 CPU 隔离可以进一步降低中断延迟。 | 普通内核有大量 >400 µs 的 ACK 延迟,RT 内核多数延迟 <200 µs;禁用 workqueue 后,高延迟事件基本消失。 |
| 关闭超线程并启用性能模式 | 在 BIOS 中关闭 SMT/HT,避免两个线程争用同一物理核心的资源;设置 CPU 在最大性能模式下运行,关闭省电 C‑states、SpeedStep 等。 | 关闭 SMT 可减少资源争用并翻倍 L1/L2 缓存给单个线程;性能模式和风扇全速使时钟频率更稳定,有助于降低抖动。 |
| 移除不必要的进程与服务 | 停止 kubelet、containerd、docker 等后台服务;使用精简版发行版或裸机安装;将不相关的用户进程迁移到其他核心。 | ACK 延迟尾部显著缩短:默认环境 >400 µs 的响应变为 RT 内核下 <200 µs,再通过禁用 workqueue 降至 <100 µs。 |
| 中断与工作队列隔离 | 利用 rcu_nocbs、nohz_full 和 irqaffinity 将软中断和定时器移出应用核心;将 workqueue 绑定到非关键核心。 | RT 内核禁用 workqueue 后,高延迟事件大幅下降,<100 µs 延迟成为主流。隔离中断后显著减少 >250 µs 的 ACK 延迟概率。 |
| 管理温度和供电 | 使用液冷或高转速风扇保持 CPU/NIC 温度在 40 ℃–50 ℃;避免热升高导致的频率抖动。 | 温度 >70 ℃ 时频繁出现高延迟事件,而 <40 ℃ 时几乎没有抖动。 |
| 优先级与调度 | 使用 real‑time 调度策略(SCHED_FIFO、SCHED_RR)为关键线程设置高优先级,防止被抢占;配合 busy_poll 等忙轮询技术减少系统调用。 | 高优先级线程配合核心隔离可以进一步抑制抖动,但应避免完全抢占系统导致其他服务失效。 |
综上所述,HFT 系统中的抖动并不是单一组件造成的,而是硬件、操作系统和应用协同作用的结果。只有通过全栈调优并持续监测,才能在微秒乃至纳秒级别内获取稳定的延迟,为交易策略赢得先机。

