跳转到内容

参数参考

一份参考:为何 每个传输参数会影响吞吐、p50 与 p99 —— 以及如何取值。 请配合调优概览一起阅读。

参数吞吐p50(中位数)p99(尾部)如何取值
初始窗口大小更大的窗口让更多数据在途 → 在高 BDP 链路上更好过大略有负面(排队/抖动增加);大小合适时影响极小窗口过大在拥塞时恶化尾部;接近 BDP 最佳BDP 附近取值;既不要饿死管道(过小),也不要造成深队列(过大)
Term Buffer 大小更大的 term 每轮容纳更多数据 → 更适合突发流量过大的 term 因缓存未命中损害 p50放不进缓存的超大 term 增加方差选择能覆盖最大消息 + 预期突发、且能放进缓存的最小 term
操作系统 Socket 缓冲区SO_SNDBUF/SO_RCVBUF几 MB 即可匹配 BDP 并防止丢包缓冲区过大增加排队;2–4 MB 可保持 p50 可接受过大 = 深队列;过小 = 丢包 + 重传从 2–4 MB 起步,根据观测到的丢包/排队调整
网卡环形缓冲(如 AWS ENA)环大小匹配带宽即可实现高吞吐设置正确可保持 p50 低;过深则增加 µs–ms 级排队大队列在突发时放大尾部;过小则丢包与操作系统 socket 缓冲区一起调,避免双重缓冲的队列膨胀
参数吞吐p50(中位数)p99(尾部)如何取值
NAK 延迟延迟越长越能减少重传流量,在丢包网络上略有帮助除非常见丢包,否则影响很小直接影响尾部:延迟越大间隙存在越久;越短恢复越快但重复更多在带宽开销与间隙恢复速度之间权衡

这些对尾部的影响最大 —— 它们从源头上消除抖动。

参数吞吐p50(中位数)p99(尾部)如何取值
NUMA 局部性(CPU 靠近网卡)消除跨 socket 流量 → 提升可达吞吐减少内存访问与 PCIe 穿越成本数微秒避免远端 NUMA 流量 → 显著稳定尾部让 IRQ、driver 线程与应用线程都运行在网卡所在 NUMA 节点的本地核上
Term Buffer 放进 L3 缓存工作集驻留缓存可减少停顿降低平均访问延迟显著减少来自缓存未命中与 DRAM 争用的方差评估活跃 term 占用 vs 有效 L3;调整 term 长度或对 stream 分片
内核旁路消除系统调用开销 + 内核排队消除上下文切换 → 中位数压到低个位数微秒抖动减少使延迟更确定最适合专用、隔离的核;需要更多运维投入
线程绑定 / 核隔离防止 run-queue 争用 → 提升最大可持续吞吐减少上下文切换 + 缓存抖动最强杠杆之一 —— 避免邻噪效应与调度器抖动隔离核并绑定 Aeron 的 agent 线程——操作指南
JVM 预热(JIT Warmup)稳态影响极小,只有冷启动爬坡更慢中等 —— 预热后的 JIT 让中位数走在已编译的快路径上最强尾部杠杆之一 —— 冷代码 + 首次触碰分配会造成严重尖峰上线前用代表性流量跑遍所有热路径