性能测试报告
rtp2httpd、msd_lite、udpxy 和 tvgate 四款组播转单播程序性能对比。
测试环境
- 平台: Ubuntu 24.04 on Apple M3 Max (Parallels Desktop 虚拟机)
- 架构: aarch64 (所有程序均为本机编译的原生 arm64 二进制文件)
- 内核: Linux 6.8.0-90-generic
- 单项测试时长: 10 秒
- 测量方法:
- CPU: 使用
top -b -n 2进行采样 - 内存: 从
/proc/[pid]/smaps_rollup读取 USS (Unique Set Size) - 如果存在 fork 后的子进程,所有父子进程的 CPU、内存分别求和作为总结果
- CPU: 使用
- 测试版本:
- rtp2httpd: v3.8.3
- msd_lite: commit 79a6c62 (2025-05-02)
- udpxy: commit 56fc563 (2026-01-26)
- tvgate: v2.1.8
测试场景
| 测试 | 描述 |
|---|---|
| 多流测试 | 8 个客户端,每个请求不同的组播地址,单流约 40 Mbps(模拟 4K IPTV 码率) |
| 单流测试 | 8 个客户端,全部请求相同的组播地址,单流约 40 Mbps |
| 高带宽测试 | 1 个客户端,单流约 400 Mbps |
测试结果汇总
CPU 使用率 (%)
| 测试场景 | rtp2httpd | msd_lite | udpxy | tvgate |
|---|---|---|---|---|
| 多流 (8个不同地址) | 🏆 17.00% | 25.80% | 106.00% | 331.00% |
| 单流 (8个相同地址) | 🏆 14.00% | 14.20% | 85.00% | 51.45% |
| 高带宽 (400 Mbps) | 🏆 26.73% | 39.50% | 30.85% | 89.53% |
内存使用 (MB)
| 测试场景 | rtp2httpd | msd_lite | udpxy | tvgate |
|---|---|---|---|---|
| 多流 (8个不同地址) | 🏆 4.50 | 10.25 | 12.53 | 182.00 |
| 单流 (8个相同地址) | 4.88 | 🏆 2.62 | 12.53 | 33.25 |
| 高带宽 (400 Mbps) | 3.88 | 🏆 2.62 | 3.21 | 47.38 |
详细测试结果
测试一:多流场景 (8个客户端,不同地址,约 40 Mbps)
每个客户端请求不同的组播地址 (239.81.0.1-8),测试服务器处理多个独立流的能力。
| 指标 | rtp2httpd | msd_lite | udpxy | tvgate |
|---|---|---|---|---|
| CPU 平均 | 🏆 17.00% | 25.80% | 106.00% | 331.00% |
| CPU 峰值 | 🏆 18.00% | 30.00% | 116.00% | 332.00% |
| 内存平均 | 🏆 4.50 MB | 10.25 MB | 12.53 MB | 182.00 MB |
测试二:单流场景 (8个客户端,相同地址,约 40 Mbps)
8个客户端全部请求相同的组播地址,测试服务器的组播复用效率。
| 指标 | rtp2httpd | msd_lite | udpxy | tvgate |
|---|---|---|---|---|
| CPU 平均 | 🏆 14.00% | 14.20% | 85.00% | 51.45% |
| CPU 峰值 | 18.00% | 🏆 15.00% | 108.00% | 52.90% |
| 内存平均 | 4.88 MB | 🏆 2.62 MB | 12.53 MB | 33.25 MB |
测试三:高带宽场景 (1个客户端,约 400 Mbps)
单客户端接收高带宽流 (50倍速回放 ≈ 400 Mbps)。
| 指标 | rtp2httpd | msd_lite | udpxy | tvgate |
|---|---|---|---|---|
| CPU 平均 | 🏆 26.73% | 39.50% | 30.85% | 89.53% |
| CPU 峰值 | 🏆 29.40% | 40.00% | 46.00% | 96.00% |
| 内存平均 | 3.88 MB | 🏆 2.62 MB | 3.21 MB | 47.38 MB |
测试结论
rtp2httpd 在基准测试中展现出优异的综合性能:
- CPU 效率最高:在所有三个测试场景中均取得最低 CPU 使用率,多流场景下仅为 msd_lite 的 66%、udpxy 的 16%、tvgate 的 5%
- 多流处理能力突出:同时处理 8 个独立 4K 组播流时,CPU 和内存占用均为最低,适合多频道 IPTV 网关场景
- 高带宽场景表现稳定:400 Mbps 高码率下 CPU 占用仅 27%,留有充足的性能余量
- 内存占用合理:约 4 MB 的内存占用(全默认参数下),在各场景下保持稳定,适合资源受限的嵌入式设备
相比 udpxy 的 fork-per-client 模型,rtp2httpd 采用更高效的事件驱动架构,在高并发场景下优势明显。相比 msd_lite,rtp2httpd 在 CPU 效率上更胜一筹,尤其在多流并发场景下差距显著。
运行基准测试
详见 tools/README.md 了解测试工具和方法。
快速运行:
bash
cd tools
./benchmark.sh测试结果保存至 benchmark_results_YYYYMMDD_HHMMSS.txt。