2024-09-23 16:01:31 +08:00

16 KiB
Raw Blame History

AimRT 性能测试

序言

AimRT 的通信层由插件实现,官方支持 iceoryx、ROS2、Zenoh、Http、Grpc、Mqtt 等通信插件,覆盖常见的端、云通信场景。这些插件可提供发布-订阅Channel和请求-响应Rpc两种常见的通信模式以实现本机和跨机的进程间通信。

本文档对于 AimRT 官方提供的各个核心组件进行了性能上的测试。请注意,测试结果受测试平台、网络等外部因素影响,仅用于展示相对性能。

测试条目

  • 单机性能测试
    • 日志性能测试
    • Channel 后端性能测试
    • Rpc 后端性能测试
  • 多机性能测试
    • Channel 后端性能测试
    • Rpc后端性能测试

测试环境

架构 操作系统 系统架构 CPU
主机1 GNU/Linux x86_64 13th Gen Intel(R) Core(TM) i5-1350P - CPU(s):16
主机2 GNU/Linux x86_64 13th Gen Intel(R) Core(TM) i5-1350P - CPU(s):16

测试结果

单机性能测试

Logger 性能测试

  • 测试条目:
    • 测试环境主机1·x86
    • 测试目的:日志打印性能测试 (平均时延 VS 日志尺寸)
    • 测试结果:
Log Data Size (bytes) 32 64 128 256 512 1024 2048 4096 8192
Avg Latency(ns) 235 735 393 568 819 839 4352 4407 4362

Channel 后端性能测试

  • 测试条目1

    • 测试环境主机1·x86 (3核)
    • 测试目的:单机跨进程 Channel 后端通信测试(平均时延 VS 包尺寸)
    • 测试配置channel_frequency=1 kHz, topic_number=1
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 测试条目2

    • 测试环境主机1·x86 (3核)
    • 测试目的:单机跨进程 Channel 后端通信测试(平均时延 VS 话题数)
    • 测试配置channel_frequency=1 kHz, pkg_size=1 k bytes
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 汇总:

ID Backend Type Pkg Size
(bytes)
Topic num Avg Latency
(us)
Max Latency
(us)
Loss Rate
(%)
Avg CPU Usage
(%)
1 iceoryx 512 1 33.78 556.791 0 0.8/0.1
2 ros2 512 1 78.294 601.76 0 3.1/1.2
3 zenoh 512 1 86.67 3479.172 0 0.9/0.3
4 iceoryx 2048 1 33.755 368.843 0 0.9/0.3
5 ros2 2048 1 78.294 601.76 0 3.5/3.3
6 zenoh 2048 1 89.812 2265.741 0 1.3/1.4
7 iceoryx 8192 1 35.327 372.595 0 1.0/0.4
8 ros2 8192 1 91.106 898.042 0 3.6/4.2
9 zenoh 8192 1 90.438 1222.726 0 2.0 /1.5
10 iceoryx 1024 1 33.108 325.33 0 0.9 /0.8
11 ros2 1024 1 83.337 1223.164 0 3.4/3.2
12 zenoh 1024 1 88.695 1208.31 0 1.7/1.4
13 iceoryx 1024 4 23.417 458.296 0 1.5/1.5
14 ros2 1024 4 89.216 1965.28 0 4.4/ 11.7
15 zenoh 1024 4 6243.743 12750.598 0 2.5/1.6
16 iceoryx 1024 8 19.884 320.847 0 2.8/2.1
17 ros2 1024 8 70.075 3913.944 0 7.5/13.6
18 zenoh 1024 8 3237.104 6913.596 0 3.0 /1.8

Rpc 后端性能测试

  • 测试条目1

    • 测试环境:主机 1·x86 (3核)
    • 测试目的:单机跨进程 Rpc 后端通信测试(平均时延 VS 数据包尺寸)
    • 测试配置paraller_number=1
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 测试条目2

  • 测试环境主机1·x86 (3核)

  • 测试目的单机跨进程Rpc后端通信测试QPS VS 数据包尺寸)

  • 测试配置: paraller_number=1

  • 测试结果:

X86_Channel_Average_Latency_vs_Package_Size

  • 测试条目3

    • 测试环境主机1·x86 (3核)
    • 测试目的:单机跨进程 Rpc 后端通信测试(平均时延 VS 并行数)
    • 测试配置Rpc_frequency=1 kHz, pkg_size=1 k bytes
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 汇总:

压测模式

ID Backend Type Pkg Size
(bytes)
Topic num Avg Latency
(us)
Max Latency
(us)
QPS Error Rate
(%)
Avg CPU Usage
(%)
1 grpc 512 1 102.385 1015.132 5668.934 0 11.2/6.6
2 http 512 1 137.783 646.192 7032.348 0 33.9/6.9
3 ros2 512 1 710.772 787.366 784.190 0 23.1/4.1
4 mqtt 512 1 227.804 99936.432 4295.532 0 13.4/2.3
5 grpc 2048 1 172.007 846.916 5662.514 0 21.4/4.4
6 http 2048 1 137.435 620.138 7062.146 0 47.5/14.8
7 ros2 2048 1 72.425 687.575 783.330 0 28.4/7.7
8 mqtt 2048 1 243.326 100343.387 4022.526 0 18.6/6.1

固定频率模式

ID Backend Type Pkg Size
(bytes)
Topic num Avg Latency
(us)
Max Latency
(us)
Error Rate
(%)
Avg CPU Usage
(%)
1 grpc 1024 1 274.102 1135.26 0 28.7/7.3
2 http 1024 1 253.347 916.773 0 44.3/16.8
3 ros2 1024 1 93.259 1081.053 0 27.3/6.2
4 mqtt 1024 1 399.444 100581.09 0 17.5/11.1
5 grpc 1024 4 326.857 3131.102 0 19.8/12.6
6 http 1024 4 272.115 1713.79 0 46.3/26.3
7 ros2 1024 4 112.685 2050.94 0 40.6/19.6
8 mqtt 1024 4 681.431 99994.365 0 26.0/14.0
9 grpc 1024 8 830.776 4318.728 0 31.1/16.6
10 http 1024 8 215.188 3961.397 0 51.2/29.9
11 ros2 1024 8 149.772 3380.315 0 41.1/20.2
12 mqtt 1024 8 755.568 98599.196 0 28.8/15.2

多机性能测试

主机1 to 主机2 Channel 后端性能测试

  • 测试条目1

    • 测试环境主机1·x86 (3核), 主机2·x86 (3核)
    • 测试目的:跨机跨进程 Channel 后端通信测试(平均时延 VS 包尺寸)
    • 测试配置channel_frequency=1 kHz, topic_number=1
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 测试条目2

    • 测试环境主机1·x86 (3核), 主机2·x86 (3核)
    • 测试目的:跨机跨进程 Channel 后端通信测试(平均时延 VS 话题数)
    • 测试配置channel_frequency=1 kHz, pkg_size=1 k bytes
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 汇总:

ID Backend Type Pkg Size
(bytes)
Topic num Avg Latency
(us)
Max Latency
(us)
Loss Rate
(%)
1 mqtt 512 1 9436.628 1922348.666 0
2 zenoh 512 1 9749.743 225513.208 0
3 mqtt 2048 1 21715.483 87612.922 0
4 zenoh 2048 1 15313.238 130844.909 0
5 mqtt 8192 1 1728639.372 4060503.312 0
6 zenoh 8192 1 67700.703 84407.91 0
7 mqtt 1024 1 30003.15 143020.411 0
8 zenoh 1024 1 12590.826 78070.239 0
9 mqtt 1024 4 10815.251 109914.215 0
10 zenoh 1024 4 13537.918 98343.269 0
11 mqtt 1024 8 2281671.772 4289304.104 0
12 zenoh 1024 8 262563.641 449324.47 0

主机1 to 主机2 Rpc 后端性能测试

  • 测试条目1

    • 测试环境主机1·x86 (3核), 主机2·x86 (3核)
    • 测试目的x86_to_X86 跨机跨进程 Rpc 后端通信测试(平均时延 VS 数据包尺寸)
    • 测试配置paraller_number=1
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 测试条目2

    • 测试环境主机1·x86 (3核), 主机2·x86 (3核)
    • 测试目的x86_to_X86 跨机跨进程 Rpc 后端通信测试QPS VS 数据包尺寸)
    • 测试配置paraller_number=1
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 测试条目3

    • 测试环境主机1·x86 (3核), 主机2·x86 (3核)
    • 测试目的x86_to_X86 跨机跨进程 Rpc 后端通信测试(平均时延 VS 并行数)
    • 测试配置Rpc_frequency=1 kHz, pkg_size=1 k bytes
    • 测试结果:

    X86_Channel_Average_Latency_vs_Package_Size

  • 汇总:

压测模式

ID Backend Type Pkg Size
(bytes)
Topic num Avg Latency
(us)
Max Latency
(us)
QPS Error Rate
(%)
1 grpc 512 1 4924.824 322766.91 202.741 0
2 http 512 1 6284.018 324016.359 158.825 0
3 mqtt 512 1 4702.392 320198.678 212.116 0
4 grpc 2048 1 5704.31 403065.412 175.082 0
5 http 2048 1 5830.839 222680.914 171.156 0
6 mqtt 2048 1 4726.14 321514.163 211.041 0
7 grpc 8192 1 7120.05 315765.656 140.295 0
8 http 8192 1 8134.13 335106.68 122.756 0
9 mqtt 8192 1 5684.013 165831.057 175.530 0

固定频率模式

ID Backend Type Pkg Size
(bytes)
Topic num Avg Latency
(us)
Max Latency
(us)
Error Rate
(%)
1 grpc 1024 1 3800.001 83298.271 0
2 http 1024 1 4906.788 238306.281 0
3 mqtt 1024 1 3979.662 117279.111 0
4 grpc 1024 4 6329.525 315825.548 0
5 http 1024 4 9002.289 614524.388 0
6 mqtt 1024 4 12371.313 327013.301 0
7 grpc 1024 8 7574.52 881297.081 0
8 http 1024 8 8278.314 904195.888 0
9 mqtt 1024 8 11336.935 324605.52 0