跳转到内容

缓冲区计算器

一个交互式工具,将 Aeron 接收路径四个缓冲区 —— ENA RX ring、操作系统 socket 缓冲区、 term buffer、流控窗口 —— 的约束链接起来,为你的流量特征生成一组一致的参数值。

输入消息大小、目标 TPS 和网络 RTT,计算器会推导出所有依赖参数,标记约束冲突, 并提供可直接复制的配置属性。

如需了解这些缓冲区为何形成栈结构,以及每个约束是如何推导出来的, 请参阅接收路径上的四个缓冲区

接收路径容量计算器
推算结果
每条消息在线大小(32B 帧头,32B 对齐)
带宽 λ = TPS × 每条消息大小
BDP = λ × RTT
初始窗口 aeron.rcv.initial.window.length2–4 × BDP,且 ≥ 128KB 默认值、≥ MTU
Term buffer aeron.term.buffer.length≥ 2 × 窗口(约束 A)且 ≥ 2 × λ × 停顿余量(发布方最多领先 term/2),2 的幂,64KB–1GB
操作系统 socket 接收缓冲区 SO_RCVBUF(aeron.socket.so_rcvbuf)≥ 窗口(约束 C,否则拒绝启动);建议 2× 留停顿余量
net.core.rmem_max内核允许的 SO_RCVBUF 上限(sysctl)——低于申请值时内核静默封顶
PPS(数据包/秒)
ENA RX ring 可熬过的停顿(按最坏 PPS)
ENA RX 队列(ethtool -L)RSS 按流(5 元组)哈希到一个队列——单条 Aeron 流只会落在一个队列/ring/IRQ vCPU 上
NAK 定时器(杠杆 B——丢包恢复)由 RTT 推导:backoff ≥ 2×RTT(≈ ½ 单次丢包预算);linger ≈ 3×(backoff+RTT);group.size = 真实接收方数。完整推导与实测见下文「杠杆 B」页
MTU 建议
L3 缓存匹配

范围说明:本计算器只覆盖丢包预防(把链路各层配够)。丢包发生后的恢复由 NAK/重传定时器决定——默认约 10ms 的退避意味着每次丢包在尾部付出 10–20ms,小扇出流可考虑调小相应参数(见下文「杠杆 B」一节)。另:输出与输入成正比——RTT 与停顿余量请填实测值。