Skip to content

Benchmark Results

b23r0 edited this page Oct 12, 2026 · 3 revisions

English · 简体中文

Benchmark 结果 — 2026 年 10 月 12 日

以下对比的是 rust-raknet 的具体实现,与 TCP、官方 C KCP 核心和 quic-go 对比。普通发送和批量接口分别测试默认构建与显式启用 send-policy 的配置。这些数据不代表 RakNet 协议本身的通用性能。

测试日期:2026 年 10 月 12 日。 Intel Core i7-9700F(8 核)、Linux x86_64,内核 7.0.11-76070011-generic;Rust 1.98.1、Tokio 1.53.2、Go 1.27.2,优化构建。所有进程都运行在任务专属副本、独立缓存及私有回环网络命名空间中。回环 MTU 为 1500 B,GSO/GRO 限制为单包,netem 队列上限 100000 包,进程使用 nice 10。未修改主机网络设置。

对比实现与接口模式

实现/接口 GitHub 地址 测试版本/配置
TCP TCP 回显驱动、Tokio 驱动 0.1.0;Tokio 1.53.2;上述 Linux TCP 栈
rust-raknet (send) b23r0/rust-raknet 1.4.0;源码提交 1199ac7;默认构建
rust-raknet(批量接口) b23r0/rust-raknet 同一默认库构建;显式调用批量接口
rust-raknet (send + send-policy) b23r0/rust-raknet 同一源码;启用 Cargo feature,客户端与服务端均调用 set_send_options(SendOptions::default())
rust-raknet(批量接口 + send-policy) b23r0/rust-raknet 同一策略构建与配置;显式调用批量接口
C KCP skywind3000/kcp 上游 C 核心原样;提交 b1a7a2101dcbb96017681a500d6b82bbe5a88766
quic-go quic-go/quic-go v0.63.0;Go 1.27.2
  • 普通发送:两端使用 send/recv,不调用批量接口。
  • 批量接口:单连接客户端使用 send_batch,并发客户端使用 send_bytes_batch,回显服务端使用 recv_bytes_batch/send_bytes_batch。每次最多提交 16 条已准备好的消息,不等待凑批。
  • 默认构建:不编译 send-policy。策略列启用该 feature,客户端和服务端均调用 set_send_options(SendOptions::default())。

四列 rust-raknet 均使用 ReliableOrdered 和 64 帧可靠在途窗口。策略列另外使用 64 MiB 编码在途字节上限、256 KiB 可靠队列软预算、64 KiB 不可靠队列预留及 256 KiB 单次 flush 预算。UDP 批量接收与空闲维护关闭;消息合并和 UDP 系统调用批量发送是不同机制。

一个 UDP 数据报最多合并八条非分片消息,且受 MTU 限制。两条 800 B 消息无法合包,4096 B 消息需要分片。收到匹配的 NACK 或发生可靠重传超时后,连接后续合包关闭,包括预热阶段的反馈。调用批量接口不等于每轮都实际合包。

TCP 使用 TCP_NODELAY、四字节小端记录长度、完整记录写入及复用缓冲区。C KCP 使用消息模式、单连接收发窗口 64/64、并发窗口 64/128、nodelay(1, 10, 2, 1),即时写入和 ACK,不启用 FEC 或加密。quic-go 每连接使用一条双向可靠有序流,保留 TLS 加密、拥塞控制与流控;这些实现的功能不完全相同。

吞吐按每方向已验证的有效消息数据计数,越高越好;RTT 越低越好。1 MiB = 1048576 B。吞吐和持续负载延迟各重复 3 轮,稀疏延迟重复 5 轮,七列运行顺序轮换,每次启动新服务端并建立新连接。随机丢包作用于两个方向的数据和 ACK。

表中数值取各轮中位数,括号为最小–最大范围,每项均带单位。C = 客户端,S = 服务端。 范围及峰值 RSS 直接列在对应实测表中。延迟分位数先按每轮计算,再取各轮对应分位数的中位数。

RSS 使用 Linux wait4 记录整进程峰值,覆盖启动、建连、预热、负载和退出,包含运行时、分配器、应用缓冲及延迟样本,不含内核 socket 缓冲。因此它不是完整网络内存或每连接内存;C/S 峰值也不一定同时发生。

单连接吞吐量

应用层最多保持 64 条待回显消息。每轮先做 100 次预热和 300 次顺序 RTT 采样,再开始吞吐计时。Rust/Go 使用 4 个 worker,C KCP 每进程一个事件循环。该组吞吐不绑定 CPU,不代表相同 CPU 使用效率。

网络场景 消息大小/突发数量 TCP
吞吐量(范围)
峰值 RSS:C / S
rust-raknet (send)
吞吐量(范围)
峰值 RSS:C / S
rust-raknet(批量接口)
吞吐量(范围)
峰值 RSS:C / S
rust-raknet (send + send-policy)
吞吐量(范围)
峰值 RSS:C / S
rust-raknet(批量接口 + send-policy)
吞吐量(范围)
峰值 RSS:C / S
C KCP
吞吐量(范围)
峰值 RSS:C / S
quic-go
吞吐量(范围)
峰值 RSS:C / S
无注入丢包 800 B / 200,000 条消息 155.70 MiB/s (153.20–158.29 MiB/s)
C: 3.47 MiB (3.20–3.63 MiB)
S: 3.40 MiB (3.32–3.42 MiB)
186.77 MiB/s (185.18–187.22 MiB/s)
C: 3.70 MiB (3.62–3.88 MiB)
S: 3.73 MiB (3.72–4.06 MiB)
188.15 MiB/s (183.18–192.66 MiB/s)
C: 3.86 MiB (3.71–3.92 MiB)
S: 3.93 MiB (3.82–4.03 MiB)
183.84 MiB/s (179.94–184.51 MiB/s)
C: 3.85 MiB (3.82–4.00 MiB)
S: 3.85 MiB (3.81–3.88 MiB)
189.79 MiB/s (188.38–189.79 MiB/s)
C: 3.96 MiB (3.80–4.00 MiB)
S: 3.82 MiB (3.77–3.84 MiB)
151.63 MiB/s (146.52–153.23 MiB/s)
C: 1.75 MiB (1.75–1.88 MiB)
S: 1.88 MiB (1.75–1.88 MiB)
115.12 MiB/s (111.58–116.03 MiB/s)
C: 13.97 MiB (13.93–14.16 MiB)
S: 13.96 MiB (13.72–14.06 MiB)
1% 丢包 800 B / 50,000 条消息 17.81 MiB/s (11.76–25.83 MiB/s)
C: 3.70 MiB (3.61–3.74 MiB)
S: 3.49 MiB (3.45–3.51 MiB)
167.31 MiB/s (153.82–168.05 MiB/s)
C: 3.89 MiB (3.58–4.10 MiB)
S: 3.90 MiB (3.79–3.93 MiB)
158.95 MiB/s (125.90–164.43 MiB/s)
C: 3.80 MiB (3.71–4.02 MiB)
S: 3.68 MiB (3.61–3.73 MiB)
155.70 MiB/s (150.78–158.95 MiB/s)
C: 3.82 MiB (3.78–3.87 MiB)
S: 3.88 MiB (3.66–4.06 MiB)
167.31 MiB/s (159.61–174.19 MiB/s)
C: 3.70 MiB (3.69–4.09 MiB)
S: 3.96 MiB (3.90–4.00 MiB)
131.80 MiB/s (126.00–142.75 MiB/s)
C: 1.75 MiB (1.75–1.75 MiB)
S: 1.88 MiB (1.75–1.88 MiB)
44.67 MiB/s (39.12–75.04 MiB/s)
C: 13.70 MiB (13.20–13.95 MiB)
S: 13.51 MiB (13.38–13.58 MiB)
5% 丢包 800 B / 50,000 条消息 1.03 MiB/s (1.01–1.20 MiB/s)
C: 3.57 MiB (3.54–3.63 MiB)
S: 3.48 MiB (3.36–3.50 MiB)
146.72 MiB/s (146.16–156.98 MiB/s)
C: 3.68 MiB (3.59–3.79 MiB)
S: 4.01 MiB (3.73–4.03 MiB)
106.85 MiB/s (49.10–141.29 MiB/s)
C: 3.92 MiB (3.66–3.92 MiB)
S: 3.76 MiB (3.73–3.86 MiB)
155.70 MiB/s (110.25–160.28 MiB/s)
C: 3.98 MiB (3.92–3.98 MiB)
S: 3.78 MiB (3.64–3.96 MiB)
145.05 MiB/s (143.41–151.38 MiB/s)
C: 3.76 MiB (3.71–3.96 MiB)
S: 3.88 MiB (3.76–4.08 MiB)
102.06 MiB/s (95.89–107.54 MiB/s)
C: 1.88 MiB (1.75–1.88 MiB)
S: 1.75 MiB (1.75–1.75 MiB)
8.07 MiB/s (8.00–8.96 MiB/s)
C: 13.92 MiB (13.90–14.17 MiB)
S: 13.99 MiB (13.45–14.01 MiB)
无注入丢包 64 B / 300,000 条消息 14.36 MiB/s (14.25–14.54 MiB/s)
C: 3.63 MiB (3.52–3.66 MiB)
S: 3.40 MiB (3.29–3.48 MiB)
15.94 MiB/s (15.76–15.95 MiB/s)
C: 3.68 MiB (3.63–3.74 MiB)
S: 3.73 MiB (3.61–3.74 MiB)
47.07 MiB/s (20.95–50.03 MiB/s)
C: 3.66 MiB (3.66–3.79 MiB)
S: 3.79 MiB (3.55–3.85 MiB)
15.10 MiB/s (15.01–15.73 MiB/s)
C: 3.73 MiB (3.71–3.75 MiB)
S: 3.75 MiB (3.69–3.93 MiB)
27.96 MiB/s (17.73–49.49 MiB/s)
C: 3.82 MiB (3.71–3.89 MiB)
S: 3.79 MiB (3.60–3.80 MiB)
12.13 MiB/s (11.66–12.28 MiB/s)
C: 1.75 MiB (1.75–1.75 MiB)
S: 1.88 MiB (1.75–1.88 MiB)
29.02 MiB/s (18.59–30.44 MiB/s)
C: 13.76 MiB (13.70–13.77 MiB)
S: 13.33 MiB (13.13–13.38 MiB)
1% 丢包 64 B / 100,000 条消息 2.62 MiB/s (2.26–2.62 MiB/s)
C: 3.50 MiB (3.42–3.52 MiB)
S: 3.28 MiB (3.16–3.41 MiB)
14.60 MiB/s (14.06–15.65 MiB/s)
C: 3.80 MiB (3.68–3.83 MiB)
S: 3.64 MiB (3.62–3.71 MiB)
15.30 MiB/s (14.40–15.85 MiB/s)
C: 3.67 MiB (3.67–3.67 MiB)
S: 3.76 MiB (3.69–3.78 MiB)
14.85 MiB/s (14.64–15.11 MiB/s)
C: 3.71 MiB (3.70–3.79 MiB)
S: 3.82 MiB (3.62–3.91 MiB)
14.96 MiB/s (10.63–15.03 MiB/s)
C: 3.82 MiB (3.71–3.90 MiB)
S: 3.78 MiB (3.73–3.82 MiB)
11.39 MiB/s (11.16–11.55 MiB/s)
C: 1.88 MiB (1.75–1.88 MiB)
S: 1.75 MiB (1.75–1.75 MiB)
24.55 MiB/s (10.66–24.69 MiB/s)
C: 13.07 MiB (12.07–13.07 MiB)
S: 11.82 MiB (11.63–11.88 MiB)
5% 丢包 64 B / 100,000 条消息 0.13 MiB/s (0.12–0.14 MiB/s)
C: 3.48 MiB (3.46–3.78 MiB)
S: 3.48 MiB (3.32–3.48 MiB)
13.56 MiB/s (12.88–14.00 MiB/s)
C: 3.66 MiB (3.60–3.71 MiB)
S: 3.74 MiB (3.59–3.77 MiB)
13.38 MiB/s (13.13–14.00 MiB/s)
C: 3.66 MiB (3.48–3.69 MiB)
S: 3.78 MiB (3.73–3.91 MiB)
13.62 MiB/s (10.78–13.72 MiB/s)
C: 3.73 MiB (3.54–3.87 MiB)
S: 3.68 MiB (3.66–3.70 MiB)
13.53 MiB/s (12.01–13.56 MiB/s)
C: 3.65 MiB (3.62–3.72 MiB)
S: 3.80 MiB (3.65–3.85 MiB)
9.85 MiB/s (9.84–10.02 MiB/s)
C: 1.88 MiB (1.75–1.88 MiB)
S: 1.75 MiB (1.75–1.88 MiB)
4.91 MiB/s (4.26–5.26 MiB/s)
C: 12.63 MiB (12.45–12.70 MiB)
S: 12.13 MiB (12.07–12.25 MiB)
无注入丢包 4,096 B / 50,000 条消息 350.65 MiB/s (350.02–352.55 MiB/s)
C: 3.60 MiB (3.56–3.67 MiB)
S: 3.50 MiB (3.48–3.53 MiB)
282.24 MiB/s (279.02–285.54 MiB/s)
C: 4.81 MiB (4.37–4.89 MiB)
S: 4.94 MiB (4.93–5.02 MiB)
283.88 MiB/s (105.98–286.38 MiB/s)
C: 4.66 MiB (4.66–4.95 MiB)
S: 5.03 MiB (4.81–5.21 MiB)
282.24 MiB/s (281.03–287.22 MiB/s)
C: 4.90 MiB (4.84–4.94 MiB)
S: 5.07 MiB (4.92–5.14 MiB)
286.38 MiB/s (164.40–290.21 MiB/s)
C: 5.03 MiB (4.88–5.04 MiB)
S: 5.08 MiB (4.87–5.12 MiB)
239.75 MiB/s (223.99–249.66 MiB/s)
C: 1.86 MiB (1.86–1.88 MiB)
S: 1.75 MiB (1.75–1.88 MiB)
212.51 MiB/s (210.72–215.61 MiB/s)
C: 14.21 MiB (13.78–14.42 MiB)
S: 13.75 MiB (13.67–13.98 MiB)
10 ms RTT + 1% 丢包 800 B / 3,000 条消息 1.27 MiB/s (1.06–1.35 MiB/s)
C: 3.69 MiB (3.66–3.77 MiB)
S: 3.52 MiB (3.38–3.55 MiB)
3.21 MiB/s (3.15–3.28 MiB/s)
C: 3.78 MiB (3.61–3.81 MiB)
S: 3.77 MiB (3.71–3.91 MiB)
2.89 MiB/s (2.78–2.90 MiB/s)
C: 3.78 MiB (3.75–3.94 MiB)
S: 3.66 MiB (3.58–3.70 MiB)
3.04 MiB/s (2.76–3.25 MiB/s)
C: 3.82 MiB (3.76–3.87 MiB)
S: 3.81 MiB (3.81–3.93 MiB)
2.95 MiB/s (2.90–3.18 MiB/s)
C: 3.82 MiB (3.69–3.82 MiB)
S: 3.67 MiB (3.49–3.69 MiB)
2.96 MiB/s (2.89–3.15 MiB/s)
C: 1.75 MiB (1.75–1.75 MiB)
S: 1.75 MiB (1.75–1.75 MiB)
1.78 MiB/s (1.66–1.97 MiB/s)
C: 11.70 MiB (11.32–11.70 MiB)
S: 11.38 MiB (11.13–11.88 MiB)

单连接 rust-raknet 使用 1428 B 标称 MTU(含 28 B IPv4/UDP 开销),C KCP 与 quic-go 使用 1400 B UDP 数据报预算。4096 B 消息在 rust-raknet 与 KCP 中触发分片。

稀疏请求的往返延迟

800 B 消息,无注入丢包;每轮 1000 次预热、10000 个顺序回显样本,共 5 轮。客户端和服务端绑定不同 CPU,Rust/Go 每进程 4 个 worker,C KCP 一个事件循环。该组逐条发送并等待回显,批量接口每次只传入一条消息,不合包。

实现/接口 RTT 中位数(范围) 95% RTT(范围) 99% RTT(范围) 峰值 RSS:C / S(范围)
TCP 13.00 µs (12.60–13.30 µs) 26.80 µs (18.40–29.70 µs) 66.10 µs (33.20–150.10 µs) C: 3.91 MiB (3.87–3.93 MiB)
S: 3.56 MiB (3.49–3.67 MiB)
rust-raknet (send) 17.90 µs (17.30–18.10 µs) 33.70 µs (30.20–35.70 µs) 73.10 µs (46.30–264.40 µs) C: 4.24 MiB (4.12–4.31 MiB)
S: 4.02 MiB (3.98–4.29 MiB)
rust-raknet(批量接口) 18.60 µs (17.50–18.80 µs) 33.10 µs (31.40–36.70 µs) 75.50 µs (47.30–111.20 µs) C: 4.31 MiB (4.21–4.34 MiB)
S: 4.10 MiB (3.98–4.21 MiB)
rust-raknet (send + send-policy) 17.40 µs (17.10–17.60 µs) 31.40 µs (30.10–34.70 µs) 48.60 µs (43.60–110.00 µs) C: 4.32 MiB (4.09–4.39 MiB)
S: 4.03 MiB (3.96–4.05 MiB)
rust-raknet(批量接口 + send-policy) 17.50 µs (17.20–18.30 µs) 32.40 µs (21.80–35.50 µs) 50.10 µs (46.30–205.50 µs) C: 4.27 MiB (4.24–4.33 MiB)
S: 4.03 MiB (3.93–4.14 MiB)
C KCP 10.20 µs (10.10–10.30 µs) 24.00 µs (18.10–24.40 µs) 36.20 µs (33.40–66.60 µs) C: 1.87 MiB (1.87–1.88 MiB)
S: 1.87 MiB (1.75–1.99 MiB)
quic-go 62.50 µs (62.30–63.90 µs) 108.30 µs (97.30–141.70 µs) 211.40 µs (126.90–449.30 µs) C: 13.45 MiB (13.20–13.45 MiB)
S: 10.94 MiB (10.88–11.13 MiB)

这些是稀疏接口路径延迟,不是突发交付延迟。并发吞吐输出的预热 RTT 也不作为下方持续负载延迟。

高并发吞吐量

每轮验证 1048576 条有序突发回显,每连接应用窗口 16 条。连接编号、消息编号、完整消息数据和顺序均校验。每连接先做 20 次顺序回显,再通过共同起跑屏障开始突发;建连和预热不计入吞吐时间。连接保留到全部突发完成。

七列均使用 4 个 worker,服务端使用 4 个监听/接收 socket 和 SO_REUSEPORT,服务端绑定 CPU 0–3,客户端绑定 CPU 4–7。CPU 绑定不代表独占 CPU。

消息大小 连接数 注入丢包 TCP
吞吐量(范围)
峰值 RSS:C / S
rust-raknet (send)
吞吐量(范围)
峰值 RSS:C / S
rust-raknet(批量接口)
吞吐量(范围)
峰值 RSS:C / S
rust-raknet (send + send-policy)
吞吐量(范围)
峰值 RSS:C / S
rust-raknet(批量接口 + send-policy)
吞吐量(范围)
峰值 RSS:C / S
C KCP
吞吐量(范围)
峰值 RSS:C / S
quic-go
吞吐量(范围)
峰值 RSS:C / S
800 B 64 条连接 0% 556.05 MiB/s (410.64–642.81 MiB/s)
C: 4.07 MiB (4.06–4.29 MiB)
S: 3.42 MiB (3.23–3.54 MiB)
432.99 MiB/s (385.15–515.15 MiB/s)
C: 7.41 MiB (7.39–7.44 MiB)
S: 7.78 MiB (7.75–8.02 MiB)
533.52 MiB/s (405.64–566.27 MiB/s)
C: 7.41 MiB (7.34–7.91 MiB)
S: 7.91 MiB (7.72–8.25 MiB)
548.45 MiB/s (464.52–549.28 MiB/s)
C: 7.06 MiB (6.88–7.13 MiB)
S: 7.81 MiB (7.43–7.86 MiB)
511.69 MiB/s (347.19–540.66 MiB/s)
C: 7.56 MiB (7.39–7.69 MiB)
S: 8.07 MiB (7.77–8.41 MiB)
369.80 MiB/s (363.04–387.54 MiB/s)
C: 3.00 MiB (2.88–3.25 MiB)
S: 3.25 MiB (3.13–3.25 MiB)
213.74 MiB/s (180.33–215.28 MiB/s)
C: 29.08 MiB (28.82–29.53 MiB)
S: 39.49 MiB (34.58–42.39 MiB)
800 B 256 条连接 0% 538.72 MiB/s (537.62–568.30 MiB/s)
C: 5.82 MiB (4.90–5.95 MiB)
S: 3.70 MiB (3.43–3.80 MiB)
437.67 MiB/s (357.31–440.04 MiB/s)
C: 15.65 MiB (15.27–15.83 MiB)
S: 14.26 MiB (14.16–14.64 MiB)
445.78 MiB/s (436.02–468.97 MiB/s)
C: 16.65 MiB (16.59–16.74 MiB)
S: 14.96 MiB (14.85–15.03 MiB)
441.06 MiB/s (439.33–519.85 MiB/s)
C: 15.70 MiB (15.68–15.97 MiB)
S: 14.41 MiB (13.92–14.97 MiB)
455.89 MiB/s (415.13–469.25 MiB/s)
C: 16.51 MiB (16.14–17.27 MiB)
S: 15.01 MiB (14.52–15.35 MiB)
345.96 MiB/s (330.21–358.24 MiB/s)
C: 6.38 MiB (6.38–6.50 MiB)
S: 6.88 MiB (6.75–7.00 MiB)
148.73 MiB/s (147.87–170.36 MiB/s)
C: 77.93 MiB (75.91–82.06 MiB)
S: 109.27 MiB (100.62–116.70 MiB)
800 B 1,024 条连接 0% 467.22 MiB/s (455.60–525.70 MiB/s)
C: 11.78 MiB (9.52–12.20 MiB)
S: 4.89 MiB (4.58–4.89 MiB)
372.54 MiB/s (347.08–487.01 MiB/s)
C: 46.31 MiB (45.80–46.84 MiB)
S: 41.92 MiB (40.86–41.95 MiB)
413.36 MiB/s (394.91–441.03 MiB/s)
C: 48.41 MiB (47.44–48.72 MiB)
S: 42.28 MiB (41.79–42.38 MiB)
395.28 MiB/s (333.46–423.21 MiB/s)
C: 46.93 MiB (46.00–46.96 MiB)
S: 40.87 MiB (39.96–42.48 MiB)
381.62 MiB/s (362.67–429.23 MiB/s)
C: 48.21 MiB (48.11–48.66 MiB)
S: 42.17 MiB (41.21–44.30 MiB)
286.75 MiB/s (268.24–327.30 MiB/s)
C: 20.25 MiB (20.25–20.38 MiB)
S: 21.00 MiB (20.88–21.00 MiB)
141.31 MiB/s (136.13–152.38 MiB/s)
C: 244.89 MiB (243.89–249.58 MiB)
S: 254.45 MiB (250.95–266.39 MiB)
800 B 2,048 条连接 0% 475.75 MiB/s (450.53–536.35 MiB/s)
C: 21.03 MiB (15.96–21.16 MiB)
S: 6.52 MiB (6.32–6.59 MiB)
322.52 MiB/s (260.15–386.99 MiB/s)
C: 85.75 MiB (85.56–86.81 MiB)
S: 71.90 MiB (69.68–73.27 MiB)
298.04 MiB/s (278.00–312.94 MiB/s)
C: 89.44 MiB (87.82–90.04 MiB)
S: 73.47 MiB (71.82–75.50 MiB)
309.85 MiB/s (277.92–354.99 MiB/s)
C: 87.36 MiB (86.17–89.85 MiB)
S: 70.89 MiB (68.00–73.43 MiB)
329.25 MiB/s (248.12–373.05 MiB/s)
C: 89.25 MiB (88.55–89.43 MiB)
S: 71.56 MiB (71.06–76.66 MiB)
249.87 MiB/s (198.62–290.60 MiB/s)
C: 38.88 MiB (38.75–38.88 MiB)
S: 38.88 MiB (38.88–39.13 MiB)
103.79 MiB/s (81.86–112.80 MiB/s)
C: 473.59 MiB (472.48–589.80 MiB)
S: 497.85 MiB (443.79–550.16 MiB)
800 B 64 条连接 1% 413.68 MiB/s (352.94–457.15 MiB/s)
C: 4.04 MiB (3.96–4.18 MiB)
S: 3.27 MiB (3.22–3.46 MiB)
457.08 MiB/s (388.06–521.29 MiB/s)
C: 7.55 MiB (7.32–7.55 MiB)
S: 8.13 MiB (7.62–8.40 MiB)
506.71 MiB/s (433.95–523.45 MiB/s)
C: 7.79 MiB (7.62–7.88 MiB)
S: 8.28 MiB (7.96–8.47 MiB)
500.69 MiB/s (385.72–525.45 MiB/s)
C: 7.26 MiB (7.12–7.65 MiB)
S: 7.98 MiB (7.58–9.02 MiB)
522.91 MiB/s (503.63–558.91 MiB/s)
C: 7.60 MiB (7.32–7.78 MiB)
S: 7.93 MiB (7.64–8.17 MiB)
329.76 MiB/s (291.94–376.96 MiB/s)
C: 3.00 MiB (2.88–3.01 MiB)
S: 3.25 MiB (3.12–3.25 MiB)
176.69 MiB/s (147.34–208.96 MiB/s)
C: 29.22 MiB (28.43–29.27 MiB)
S: 34.60 MiB (31.64–43.68 MiB)
800 B 256 条连接 1% 483.00 MiB/s (436.33–505.26 MiB/s)
C: 5.80 MiB (5.31–5.81 MiB)
S: 3.59 MiB (3.50–3.82 MiB)
506.58 MiB/s (493.75–511.85 MiB/s)
C: 15.97 MiB (15.94–16.43 MiB)
S: 15.40 MiB (15.38–15.59 MiB)
483.16 MiB/s (479.45–497.38 MiB/s)
C: 17.00 MiB (16.40–17.00 MiB)
S: 15.44 MiB (15.05–15.67 MiB)
499.84 MiB/s (480.30–521.71 MiB/s)
C: 16.50 MiB (15.82–16.70 MiB)
S: 15.19 MiB (14.90–15.30 MiB)
483.76 MiB/s (475.20–499.84 MiB/s)
C: 16.84 MiB (16.39–17.03 MiB)
S: 15.81 MiB (15.68–15.90 MiB)
410.95 MiB/s (409.96–411.24 MiB/s)
C: 6.38 MiB (6.38–6.38 MiB)
S: 6.88 MiB (6.75–6.88 MiB)
179.86 MiB/s (161.81–182.35 MiB/s)
C: 76.25 MiB (74.11–77.55 MiB)
S: 69.39 MiB (68.77–89.64 MiB)
800 B 1,024 条连接 1% 497.67 MiB/s (463.11–503.74 MiB/s)
C: 12.43 MiB (10.54–12.52 MiB)
S: 4.92 MiB (4.81–4.95 MiB)
454.63 MiB/s (425.51–459.25 MiB/s)
C: 49.32 MiB (49.00–50.56 MiB)
S: 42.74 MiB (41.58–43.43 MiB)
453.92 MiB/s (445.74–456.33 MiB/s)
C: 50.82 MiB (50.17–51.26 MiB)
S: 43.96 MiB (42.48–43.99 MiB)
424.62 MiB/s (420.96–460.39 MiB/s)
C: 49.23 MiB (49.00–49.65 MiB)
S: 42.14 MiB (41.87–44.68 MiB)
402.12 MiB/s (384.49–461.58 MiB/s)
C: 48.52 MiB (48.13–52.28 MiB)
S: 43.18 MiB (42.58–43.42 MiB)
346.53 MiB/s (316.37–367.14 MiB/s)
C: 20.38 MiB (20.38–20.38 MiB)
S: 19.63 MiB (19.38–20.13 MiB)
77.76 MiB/s (76.97–83.36 MiB/s)
C: 315.55 MiB (314.25–348.80 MiB)
S: 235.21 MiB (208.95–239.70 MiB)
800 B 2,048 条连接 1% 469.70 MiB/s (459.18–493.77 MiB/s)
C: 19.86 MiB (17.70–21.01 MiB)
S: 6.59 MiB (6.56–6.64 MiB)
341.97 MiB/s (296.70–359.13 MiB/s)
C: 88.65 MiB (88.50–90.46 MiB)
S: 74.66 MiB (72.72–76.88 MiB)
369.99 MiB/s (321.91–375.11 MiB/s)
C: 92.95 MiB (92.93–92.96 MiB)
S: 77.58 MiB (75.41–78.39 MiB)
355.38 MiB/s (339.30–367.94 MiB/s)
C: 89.71 MiB (89.45–89.98 MiB)
S: 75.42 MiB (72.52–76.36 MiB)
324.93 MiB/s (294.61–367.55 MiB/s)
C: 93.81 MiB (93.31–94.14 MiB)
S: 78.66 MiB (77.67–80.61 MiB)
325.96 MiB/s (313.13–328.15 MiB/s)
C: 38.75 MiB (38.75–38.88 MiB)
S: 37.63 MiB (37.50–37.63 MiB)
34.58 MiB/s (32.33–40.45 MiB/s)
C: 748.54 MiB (737.20–782.60 MiB)
S: 414.66 MiB (405.23–427.52 MiB)
64 B 64 条连接 0% 72.39 MiB/s (67.29–73.56 MiB/s)
C: 3.91 MiB (3.61–3.99 MiB)
S: 3.27 MiB (3.20–3.35 MiB)
51.88 MiB/s (50.32–51.93 MiB/s)
C: 5.88 MiB (5.63–5.89 MiB)
S: 6.00 MiB (5.84–6.02 MiB)
117.59 MiB/s (104.72–118.28 MiB/s)
C: 5.73 MiB (5.72–5.75 MiB)
S: 6.25 MiB (6.04–6.44 MiB)
47.80 MiB/s (41.30–48.46 MiB/s)
C: 5.73 MiB (5.73–5.83 MiB)
S: 5.97 MiB (5.85–6.14 MiB)
115.16 MiB/s (110.04–118.86 MiB/s)
C: 5.81 MiB (5.81–5.88 MiB)
S: 6.05 MiB (6.05–6.20 MiB)
32.89 MiB/s (30.82–34.91 MiB/s)
C: 2.38 MiB (2.26–2.38 MiB)
S: 2.50 MiB (2.25–2.50 MiB)
138.29 MiB/s (130.37–139.94 MiB/s)
C: 21.77 MiB (21.42–22.12 MiB)
S: 19.87 MiB (19.07–20.01 MiB)
64 B 1,024 条连接 0% 53.63 MiB/s (49.30–54.59 MiB/s)
C: 9.65 MiB (9.07–9.67 MiB)
S: 4.11 MiB (3.95–4.16 MiB)
47.00 MiB/s (44.10–47.15 MiB/s)
C: 32.38 MiB (32.21–32.65 MiB)
S: 27.48 MiB (26.37–27.51 MiB)
142.00 MiB/s (138.96–144.54 MiB/s)
C: 31.88 MiB (31.82–32.49 MiB)
S: 25.93 MiB (25.65–25.95 MiB)
49.86 MiB/s (46.67–50.46 MiB/s)
C: 32.77 MiB (32.59–32.99 MiB)
S: 27.43 MiB (27.02–28.04 MiB)
144.83 MiB/s (144.53–147.80 MiB/s)
C: 32.33 MiB (32.11–32.51 MiB)
S: 26.24 MiB (26.11–26.29 MiB)
42.64 MiB/s (41.42–43.80 MiB/s)
C: 8.88 MiB (8.75–8.88 MiB)
S: 9.38 MiB (9.38–9.50 MiB)
107.73 MiB/s (106.19–109.10 MiB/s)
C: 145.95 MiB (139.64–148.52 MiB)
S: 95.89 MiB (94.64–96.89 MiB)
64 B 64 条连接 1% 41.23 MiB/s (40.04–49.52 MiB/s)
C: 3.72 MiB (3.70–3.93 MiB)
S: 3.30 MiB (3.27–3.32 MiB)
46.41 MiB/s (43.05–47.78 MiB/s)
C: 6.01 MiB (5.88–6.09 MiB)
S: 6.12 MiB (6.00–6.23 MiB)
48.29 MiB/s (42.92–48.35 MiB/s)
C: 5.95 MiB (5.87–6.00 MiB)
S: 6.45 MiB (6.21–6.51 MiB)
45.16 MiB/s (44.55–47.56 MiB/s)
C: 5.84 MiB (5.80–5.98 MiB)
S: 6.12 MiB (6.00–6.14 MiB)
48.95 MiB/s (45.18–49.53 MiB/s)
C: 6.02 MiB (6.01–6.06 MiB)
S: 6.36 MiB (6.24–6.38 MiB)
33.13 MiB/s (31.62–34.48 MiB/s)
C: 2.26 MiB (2.25–2.38 MiB)
S: 2.38 MiB (2.25–2.50 MiB)
64.24 MiB/s (48.30–66.69 MiB/s)
C: 21.68 MiB (21.57–21.98 MiB)
S: 19.05 MiB (18.89–19.82 MiB)
64 B 1,024 条连接 1% 45.25 MiB/s (45.23–49.36 MiB/s)
C: 9.55 MiB (9.08–9.56 MiB)
S: 4.23 MiB (4.04–4.36 MiB)
42.53 MiB/s (42.16–44.21 MiB/s)
C: 34.18 MiB (33.88–35.03 MiB)
S: 28.25 MiB (27.84–28.43 MiB)
47.90 MiB/s (45.21–50.35 MiB/s)
C: 35.03 MiB (34.45–36.13 MiB)
S: 30.71 MiB (29.51–31.03 MiB)
42.91 MiB/s (41.62–43.62 MiB/s)
C: 34.96 MiB (33.21–35.27 MiB)
S: 29.32 MiB (29.29–29.82 MiB)
49.38 MiB/s (42.25–52.09 MiB/s)
C: 36.15 MiB (35.83–36.56 MiB)
S: 30.37 MiB (30.26–30.45 MiB)
39.81 MiB/s (39.51–42.11 MiB/s)
C: 8.75 MiB (8.75–8.88 MiB)
S: 9.25 MiB (9.25–9.38 MiB)
79.28 MiB/s (74.21–85.47 MiB/s)
C: 143.39 MiB (135.39–154.89 MiB)
S: 97.64 MiB (97.27–97.77 MiB)

并发 rust-raknet 使用默认 1400 B 标称 MTU,quic-go 使用 1372 B UDP 数据报预算并关闭路径 MTU 探测。C KCP 使用 1400 B UDP MTU,物理预算多 28 B;本组 64 B/800 B 消息在三者中均不分片。

持续负载下的交付延迟

并发客户端使用 --loaded-rtt,发送前打时间戳,在消费已验证回显时计算 RTT,贯穿突发全过程,包含客户端和服务端排队。每轮验证 262144 条突发回显,保持相同的 16 条应用窗口、worker、CPU 绑定和服务端配置,各场景 3 轮。

延迟采样与吞吐表分开运行,不把该组带采样的吞吐混入上方吞吐表。RSS 包括客户端保存、汇总和排序的 RTT 样本。

消息大小 连接数 注入丢包 TCP
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
rust-raknet (send)
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
rust-raknet(批量接口)
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
rust-raknet (send + send-policy)
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
rust-raknet(批量接口 + send-policy)
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
C KCP
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
quic-go
RTT 中位数 / 99%(范围)
峰值 RSS:C / S
64 B 64 条连接 0% 50%: 0.96 ms (0.92–0.97 ms)
99%: 4.59 ms (3.79–8.62 ms)
C: 11.70 MiB (11.48–11.79 MiB)
S: 3.16 MiB (3.10–3.18 MiB)
50%: 1.11 ms (0.96–1.13 ms)
99%: 4.13 ms (3.35–7.12 ms)
C: 13.30 MiB (13.23–13.52 MiB)
S: 5.79 MiB (5.59–5.94 MiB)
50%: 0.46 ms (0.41–0.49 ms)
99%: 4.29 ms (3.63–5.45 ms)
C: 13.21 MiB (13.07–13.47 MiB)
S: 5.93 MiB (5.88–6.04 MiB)
50%: 1.08 ms (1.04–1.28 ms)
99%: 4.23 ms (3.86–8.13 ms)
C: 13.50 MiB (13.45–13.59 MiB)
S: 5.82 MiB (5.66–5.84 MiB)
50%: 0.46 ms (0.45–0.48 ms)
99%: 4.18 ms (1.05–4.20 ms)
C: 13.31 MiB (13.29–13.61 MiB)
S: 5.85 MiB (5.80–6.04 MiB)
50%: 1.31 ms (1.30–1.32 ms)
99%: 10.16 ms (6.87–11.64 ms)
C: 6.26 MiB (6.12–6.36 MiB)
S: 2.50 MiB (2.25–2.50 MiB)
50%: 0.37 ms (0.34–0.41 ms)
99%: 1.89 ms (1.84–3.18 ms)
C: 32.32 MiB (31.20–33.02 MiB)
S: 17.45 MiB (17.25–17.52 MiB)
64 B 1,024 条连接 0% 50%: 18.99 ms (17.77–19.36 ms)
99%: 35.03 ms (32.64–35.43 ms)
C: 16.77 MiB (16.26–16.99 MiB)
S: 4.04 MiB (3.90–4.18 MiB)
50%: 16.90 ms (15.81–18.16 ms)
99%: 94.65 ms (40.14–95.26 ms)
C: 36.48 MiB (36.36–36.76 MiB)
S: 23.37 MiB (22.90–24.15 MiB)
50%: 4.70 ms (4.46–4.85 ms)
99%: 19.61 ms (19.57–20.56 ms)
C: 37.57 MiB (37.43–38.11 MiB)
S: 24.38 MiB (24.24–24.44 MiB)
50%: 15.81 ms (15.25–17.53 ms)
99%: 101.42 ms (35.93–104.92 ms)
C: 36.51 MiB (36.48–36.63 MiB)
S: 24.37 MiB (23.33–24.41 MiB)
50%: 4.86 ms (4.83–5.30 ms)
99%: 19.19 ms (18.10–21.89 ms)
C: 38.03 MiB (37.87–38.07 MiB)
S: 24.65 MiB (24.57–24.85 MiB)
50%: 7.37 ms (6.73–8.61 ms)
99%: 120.25 ms (112.92–160.63 ms)
C: 10.69 MiB (10.69–10.94 MiB)
S: 9.38 MiB (9.38–9.38 MiB)
50%: 9.01 ms (8.97–9.71 ms)
99%: 13.32 ms (12.90–16.47 ms)
C: 140.02 MiB (137.39–140.58 MiB)
S: 88.89 MiB (87.69–90.89 MiB)
64 B 64 条连接 1% 50%: 0.62 ms (0.61–0.72 ms)
99%: 5.88 ms (5.06–6.54 ms)
C: 11.54 MiB (11.50–11.73 MiB)
S: 3.28 MiB (3.22–3.29 MiB)
50%: 0.92 ms (0.88–1.02 ms)
99%: 4.97 ms (4.60–6.16 ms)
C: 13.48 MiB (13.46–13.79 MiB)
S: 5.91 MiB (5.89–6.00 MiB)
50%: 0.92 ms (0.87–0.97 ms)
99%: 4.54 ms (3.68–4.82 ms)
C: 13.62 MiB (13.59–13.90 MiB)
S: 6.17 MiB (6.09–6.35 MiB)
50%: 0.95 ms (0.91–0.96 ms)
99%: 6.20 ms (3.96–6.51 ms)
C: 13.74 MiB (13.62–13.77 MiB)
S: 5.92 MiB (5.86–6.22 MiB)
50%: 0.96 ms (0.91–1.00 ms)
99%: 4.82 ms (4.29–4.84 ms)
C: 13.81 MiB (13.71–14.07 MiB)
S: 6.24 MiB (6.21–6.24 MiB)
50%: 1.25 ms (1.21–1.44 ms)
99%: 7.37 ms (7.33–8.08 ms)
C: 6.34 MiB (6.15–6.36 MiB)
S: 2.38 MiB (2.38–2.38 MiB)
50%: 0.10 ms (0.10–0.12 ms)
99%: 27.24 ms (27.23–27.36 ms)
C: 32.52 MiB (31.79–34.39 MiB)
S: 17.32 MiB (16.83–17.37 MiB)
64 B 1,024 条连接 1% 50%: 16.30 ms (16.20–17.18 ms)
99%: 40.97 ms (38.60–43.32 ms)
C: 16.58 MiB (15.57–17.49 MiB)
S: 3.91 MiB (3.89–3.95 MiB)
50%: 18.21 ms (17.97–18.25 ms)
99%: 61.24 ms (57.43–66.63 ms)
C: 37.43 MiB (37.01–37.52 MiB)
S: 24.75 MiB (24.47–24.75 MiB)
50%: 12.36 ms (12.18–15.99 ms)
99%: 39.28 ms (36.48–96.98 ms)
C: 38.88 MiB (37.86–39.56 MiB)
S: 25.61 MiB (25.61–26.52 MiB)
50%: 16.61 ms (16.42–18.79 ms)
99%: 109.33 ms (65.97–109.70 ms)
C: 36.77 MiB (35.29–39.10 MiB)
S: 26.01 MiB (25.34–26.05 MiB)
50%: 12.45 ms (11.62–15.14 ms)
99%: 43.40 ms (35.63–84.78 ms)
C: 37.48 MiB (36.12–38.46 MiB)
S: 26.17 MiB (25.97–26.54 MiB)
50%: 5.90 ms (5.03–8.88 ms)
99%: 161.43 ms (111.57–165.05 ms)
C: 10.94 MiB (10.82–10.94 MiB)
S: 9.25 MiB (9.25–9.38 MiB)
50%: 8.92 ms (8.38–10.94 ms)
99%: 59.60 ms (47.84–73.50 ms)
C: 134.08 MiB (131.52–138.64 MiB)
S: 89.07 MiB (86.48–90.95 MiB)
800 B 64 条连接 0% 50%: 1.18 ms (1.16–1.22 ms)
99%: 8.77 ms (5.87–9.36 ms)
C: 11.88 MiB (11.76–11.89 MiB)
S: 3.37 MiB (3.14–3.42 MiB)
50%: 1.15 ms (1.15–1.20 ms)
99%: 8.05 ms (3.26–8.41 ms)
C: 14.66 MiB (14.49–14.85 MiB)
S: 7.12 MiB (6.91–7.78 MiB)
50%: 1.16 ms (1.14–1.22 ms)
99%: 8.84 ms (8.39–9.00 ms)
C: 14.82 MiB (14.81–14.83 MiB)
S: 7.30 MiB (7.29–7.34 MiB)
50%: 1.13 ms (1.10–1.16 ms)
99%: 9.05 ms (9.02–9.21 ms)
C: 14.71 MiB (14.60–14.85 MiB)
S: 7.17 MiB (7.17–7.19 MiB)
50%: 1.21 ms (1.18–1.27 ms)
99%: 5.42 ms (3.84–8.76 ms)
C: 15.00 MiB (14.90–15.01 MiB)
S: 7.07 MiB (7.04–7.62 MiB)
50%: 1.17 ms (1.16–1.21 ms)
99%: 16.37 ms (15.58–17.62 ms)
C: 6.96 MiB (6.93–6.97 MiB)
S: 3.13 MiB (3.13–3.25 MiB)
50%: 3.08 ms (3.03–3.12 ms)
99%: 11.50 ms (9.64–12.21 ms)
C: 37.70 MiB (37.45–40.16 MiB)
S: 30.24 MiB (29.33–31.19 MiB)
800 B 1,024 条连接 0% 50%: 22.70 ms (21.95–24.31 ms)
99%: 42.70 ms (41.55–75.24 ms)
C: 19.46 MiB (18.15–20.46 MiB)
S: 5.02 MiB (4.86–5.08 MiB)
50%: 21.35 ms (13.79–21.76 ms)
99%: 114.12 ms (58.20–120.21 ms)
C: 50.53 MiB (50.32–51.90 MiB)
S: 35.95 MiB (34.48–36.38 MiB)
50%: 16.88 ms (10.23–18.16 ms)
99%: 117.16 ms (107.80–190.99 ms)
C: 50.95 MiB (49.53–51.82 MiB)
S: 35.30 MiB (34.23–35.42 MiB)
50%: 20.42 ms (16.57–21.18 ms)
99%: 42.81 ms (40.26–117.52 ms)
C: 50.59 MiB (50.52–50.68 MiB)
S: 36.27 MiB (34.35–36.39 MiB)
50%: 12.39 ms (10.59–18.19 ms)
99%: 169.10 ms (109.53–187.16 ms)
C: 51.48 MiB (51.21–51.66 MiB)
S: 35.09 MiB (34.91–36.32 MiB)
50%: 18.82 ms (18.65–20.18 ms)
99%: 107.54 ms (102.72–118.36 ms)
C: 22.19 MiB (22.07–22.32 MiB)
S: 20.63 MiB (20.12–20.75 MiB)
50%: 71.29 ms (69.26–71.72 ms)
99%: 140.18 ms (109.03–283.41 ms)
C: 244.89 MiB (222.95–249.27 MiB)
S: 150.57 MiB (149.33–175.30 MiB)
800 B 64 条连接 1% 50%: 0.64 ms (0.63–0.66 ms)
99%: 7.02 ms (6.99–7.43 ms)
C: 11.82 MiB (11.67–11.84 MiB)
S: 3.30 MiB (3.23–3.39 MiB)
50%: 1.03 ms (1.02–1.19 ms)
99%: 5.91 ms (5.70–6.11 ms)
C: 15.04 MiB (14.72–15.32 MiB)
S: 7.23 MiB (7.18–7.94 MiB)
50%: 1.05 ms (1.03–1.10 ms)
99%: 6.06 ms (5.42–6.52 ms)
C: 15.16 MiB (14.84–15.44 MiB)
S: 7.55 MiB (7.46–7.62 MiB)
50%: 1.08 ms (0.95–1.16 ms)
99%: 5.85 ms (5.10–6.30 ms)
C: 14.98 MiB (14.89–15.22 MiB)
S: 7.32 MiB (7.31–7.63 MiB)
50%: 1.02 ms (1.02–1.04 ms)
99%: 5.90 ms (5.61–6.11 ms)
C: 14.98 MiB (14.95–15.06 MiB)
S: 7.50 MiB (7.50–7.53 MiB)
50%: 1.24 ms (1.03–1.31 ms)
99%: 11.33 ms (6.75–11.36 ms)
C: 6.79 MiB (6.73–6.89 MiB)
S: 3.13 MiB (3.00–3.25 MiB)
50%: 3.20 ms (3.15–3.29 ms)
99%: 13.52 ms (12.98–23.95 ms)
C: 40.48 MiB (36.59–41.42 MiB)
S: 29.52 MiB (28.62–33.45 MiB)
800 B 1,024 条连接 1% 50%: 25.00 ms (19.25–26.59 ms)
99%: 82.13 ms (53.30–85.70 ms)
C: 20.33 MiB (20.15–20.54 MiB)
S: 4.97 MiB (4.71–5.04 MiB)
50%: 21.11 ms (19.79–22.75 ms)
99%: 122.90 ms (90.12–136.39 ms)
C: 51.90 MiB (50.38–52.18 MiB)
S: 36.71 MiB (36.62–37.41 MiB)
50%: 30.06 ms (22.12–30.13 ms)
99%: 340.38 ms (193.22–355.15 ms)
C: 53.13 MiB (52.59–54.25 MiB)
S: 38.64 MiB (37.71–39.57 MiB)
50%: 19.21 ms (17.43–30.82 ms)
99%: 195.16 ms (105.69–200.33 ms)
C: 51.19 MiB (49.07–53.82 MiB)
S: 36.22 MiB (35.62–37.24 MiB)
50%: 18.11 ms (13.85–21.74 ms)
99%: 212.59 ms (201.87–336.37 ms)
C: 53.09 MiB (52.64–53.35 MiB)
S: 37.80 MiB (37.38–37.97 MiB)
50%: 23.50 ms (13.31–24.95 ms)
99%: 175.31 ms (136.41–264.19 ms)
C: 22.32 MiB (22.07–22.32 MiB)
S: 19.88 MiB (18.75–20.00 MiB)
50%: 78.05 ms (75.61–81.64 ms)
99%: 365.24 ms (338.86–430.47 ms)
C: 245.64 MiB (240.02–252.82 MiB)
S: 191.64 MiB (190.14–205.88 MiB)

如何理解这些结果

  • 64 B、1,024 条连接、无注入丢包时,默认普通发送为 47.00 MiB/s,批量接口为 142.00 MiB/s;TCP、C KCP、quic-go 分别为 53.63 MiB/s、42.64 MiB/s、107.73 MiB/s。
  • 单连接、800 B、5% 丢包时,默认普通发送为 146.72 MiB/s;TCP、C KCP、quic-go 分别为 1.03 MiB/s、102.06 MiB/s、8.07 MiB/s。这些结果对应配置明确的可靠有序回显负载。
  • 800 B、1,024 条连接、无注入丢包时,配置策略让普通吞吐从 372.54 MiB/s 变为 395.28 MiB/s,批量吞吐从 413.36 MiB/s 变为 381.62 MiB/s。
  • 64 B、1,024 条连接、无注入丢包时,配置策略让普通持续负载 RTT 中位数从 16.90 ms 变为 15.81 ms,99% RTT 从 94.65 ms 变为 101.42 ms。吞吐、慢消息延迟和内存应一起比较。

本轮全部使用可靠有序流量,没有测试混合可靠/不可靠调度、带宽骤降或拥塞公平性。send-policy 保持可选启用;本组不能代替混合流量验证,也不是与旧版本严格控制变量的前后对比。

无注入丢包也可能发生 UDP 接收缓冲溢出。每轮记录私有网络的 UDP 错误计数与 qdisc;短负载、随机丢包和 CPU 调度会造成波动,小差距不能据此认定为统计显著或普适排名。

单次吞吐测试的最大命名空间 UDP 接收缓冲溢出计数:rust-raknet (send):175,509 个数据报;rust-raknet(批量接口):407,363 个数据报;rust-raknet (send + send-policy):287,825 个数据报;rust-raknet(批量接口 + send-policy):295,212 个数据报;C KCP:417,267 个数据报;quic-go:7,000 个数据报。

全部 623 次测量通过回显校验:单连接吞吐 168 次、稀疏延迟 35 次、并发吞吐 252 次、持续负载延迟 168 次。

默认驱动、接口选项与工作负载说明见 benchmark README、C KCP 驱动和 quic-go 驱动。策略列在独立验证副本中构建,新增的调用只用于在每个已连接或接受的 socket 上应用 SendOptions::default()。

原始 send 的专项 RTT 复测

README 只把原始 send 稀疏请求的 99% RTT 中位数替换为 73.10 µs。周围范围、其他百分位和 RSS 仍来自原五轮横向测量。新值来自额外十轮,每轮预热 1,000 次、测量 10,000 次 RTT;各轮 99% RTT 范围为 56.70–106.70 µs。原中位数为 174.10 µs(46.30–264.40 µs)。使用相同二进制,因此是测量更新,不是代码优化或新的横向排名。

专项复测另完成 56 次持续负载测量(八种条件各七轮),没有替换 README 的持续负载表。全部 66 次复测通过。

10 月 3 日历史结果

Clone this wiki locally