性能调优
调优 Aeron 是一门同时拉动三根杠杆的艺术 —— p50、p99、吞吐 —— 而几乎每一个旋钮 都在用其中一个换取另一个。本节是实战手册。
- 分步调优方法论 — 一套实用的工作流:合理的默认值、消息大小验证、增量负载测试、症状驱动调优,以及 L3 缓存大小法则。
- 传输性能影响因素及其作用 — 影响 Aeron Transport 性能的十大杠杆,以及每个因素如何映射到吞吐量、p50 和 p99/尾延迟。
- 吞吐与延迟模型 — 一个用于预测 Aeron® Cluster 峰值 TPS、厘清 MTU 关系、并说明为何峰值吞吐不等于延迟的模型 —— 根源在于驱动那唯一的 Sender 线程瓶颈,并经基准测试验证。
- 带宽时延积 (BDP) — BDP 如何决定在 CPG、同 AZ、跨 AZ 与跨区域往返时延下维持持续吞吐所需的最小缓冲区大小。
- 参数参考 — 每一个主要的 Aeron 传输参数,以及它如何牵动吞吐、p50 与 p99 —— 附设置建议。
- 接收路径上的四个缓冲区 — 数据包在接收路径上要穿过的四个嵌套缓冲区 —— ENA RX ring、操作系统 socket 缓冲区、Aeron term buffer,以及流控窗口 —— 它们之间的约束,以及如何把它们作为一个一致的栈来设置。
- 缓冲区计算器 — Aeron 接收路径缓冲区交互式计算器 —— 根据流量特征计算 initial window、term buffer、SO_RCVBUF、NAK 定时器等参数。
- NAK 定时器调优(杠杆 B) — 如何由 RTT 与接收方数量推导 aeron.nak.multicast.max.backoff、group.size 与 retransmit linger——附实测结果:种子丢包下尾延迟坍缩 79 倍。
- 发送端排队与突发配速 — 一种零丢包、零背压却依然存在的毫秒级延迟尾部——根源在于发送端把突发流量灌入 term buffer 的速度,远快于它自己的 media driver 能把数据序列化上线的速度。本文给出闭式模型,以及如何按延迟目标配速。
- 智能批处理与空闲策略 — 为什么应用层批处理是一种反模式:C media driver 通过 sendmmsg 合并发送,而空闲策略才是延迟与 CPU 之间真正的调节旋钮。
- 核心隔离与线程绑定 — GRUB isolcpus/nohz_full、taskset 与 numactl——各自控制什么、如何组合成一套隔离方案,以及 Aeron media driver 的完整算例。
- NUMA、内存层级与缓存局部性 — 为什么机械同情心至关重要:双路 NUMA 布局、L1/L2/L3/DRAM 延迟、QPI 开销,以及如何让 term buffer 驻留在 L3 缓存中。
- 主机与操作系统延迟参数 — 位于 Aeron 传输旋钮之下的系统层 —— CPU C-state/P-state、频率锁定、SMT、IRQ 亲和性、透明大页、socket 缓冲区,以及牵动尾部的 JVM 参数。每个参数都标注其对 p50/p99/吞吐 的影响、在哪里设置、是否需要重启、如何回退。含如何检测并压测确认全核同频。
- 无法通过调优突破的 AWS 硬性限制 — EC2 上的 PPS 上限、单流速率上限、带宽、利用率与延迟的余量规则(热路径约 60%),以及由 BDP 决定的最小缓冲区。
- 协议封装:TCP 对比 Aeron®/UDP — 逐层剖析 TCP/IP 协议栈的字节开销,并与 Aeron 更精简的 UDP 加上基于 NAK 的可靠性协议进行对比。
- 什么时候该用 DPDK Media Driver(什么时候不该) — 内核旁路的 DPDK driver 能拆掉让 Java/C driver 饱和的包速率天花板——但它要占用专用核、hugepages、一块绑定的 ENI,还有一个静默的配置错误陷阱。一份选型指南:哪四种情况值得上、哪些情况不值得,以及为什么 driver 很少是你的瓶颈。
- 丢包注入与 CUBIC 拥塞控制 — 来自 driver io.aeron.driver.ext 包的两个生产级杠杆:为混沌测试注入确定性丢包,以及在共享或长肥链路上用 CUBIC 拥塞控制器替换静态接收窗口。
- Aeron® Cluster 快照性能:一个撮合引擎的实战案例 — 快照从挂单超过 16 笔就失败,到 ZGC 下 500 万挂单只需 179 ms;而在 3 节点集群上,决定客户端停顿的是 Archive 按块执行的 fsync,而不是编码。
- 先把 threading mode 与 idle strategy 设对(Sender/Receiver 用
DEDICATED+ busy-spin)。 - 隔离并绑定 CPU 核,让操作系统调度器永不抢占 Aeron 的 agent。
- 按 BDP 调整 缓冲区与窗口。
- 然后度量 —— 见 基准测试 —— 再考虑内核旁路。
本站与 Adaptive Financial Consulting Limited 或 Aeron 项目无任何关联,未获其背书或赞助。 Aeron 是 Adaptive Financial Consulting Limited 的注册商标。
Aeron 是 Adaptive Financial Consulting Limited 在英国及其他国家/地区的商标。