技术论文
Klepsydra Otroid XU4性能基准技术报告
发表于11/10/2020.
摘要
边缘设备越来越大,专门在机器人/物联网/ UAV扇区中处理边缘上的大量数据,而不是在云中。原因主要是成本,需要实时回应数据事件。
目前的Edge数据处理解决方案低于应对应用的要求,并最终落入数据丢失,长期延迟和软件的整体不可靠性。
在本报告中,我们提出了一种高性能数据处理解决方案,可以大大加速数据处理,同时降低CPU使用率(即能量消耗)。全部包含云或硬件更新。
概要
此技术报告包含对计算机ODROID XU4执行的基准测试结果。该基准测试包括在使用和不涉及的ROS的不同方法的情况下测试增加的板载数据处理方案。
结果表明,Klepsydra优于50%的传统并行数据处理技术。
基准框架
基准申请包括序列化到500×100双倍的JSON矩阵。该矩阵由100个通过生产者 - 消费者模式到达的100个双向矢量之内。消费者不断聆听填补要序列化的下一个矩阵的消息。矩阵群体和序列化过程在相同的单线中顺序发生。
该软件用C ++ 11写入,并具有以下配置参数:
- 线程计数。生产者线程数量。
- 发布频率。每秒发送多少条消息。
并行数据处理方法。
这份报告有四种不同的方法是基准测试:
单线程安全队列。在这种情况下,所有发布者以并发方式填充单个队列。一个消费者处于接收端填充矩阵的矩阵。
多个线程安全队列。与以前的方法相反,在这种情况下,每个发布者都填写它拥有关联的队列,并具有相关的消费者。每个消费者将竞争矩阵和序列化服务。
事件循环。Klepsydra的主要数据处理方法。在这种情况下,发布者同时填写事件循环内存,而单个消费者接收所有数据并安全地填充矩阵。
图1。线程安全队列和事件循环图。
其中一些方法需要访问矩阵的线程安全,其中一些没有,下表总结了这一点:
ROS基准
表1。需要线程安全代码的数据处理方法。
上述方法仅在内存中运行,也在ROS两种不同的数据交付方法中:
- ROS SpinOnce方法。这是ROS Core C ++ API提供的单线机制
- ROS异步方法。其中可配置的线程数正在侦听ROS主题以接收消息传递数据。
图2。ROS发布绩效基准的订阅设置。
图3.。ROS向ROS订阅者提供数据的两种主要方法。
基准标准
三个标准用于解决测试数据处理方法的性能:
- 数据处理量。以两种方式测量:生产者线程数量和Hz的出版率。
- CPU消费。这是针对数据处理速率来衡量的。即,给出某些处理数据卷所需的CPU需要多少。
- 确定主义。测量作为处理每个数据实例所需的处理时间的标准偏差。
基准技术规范
该测试在Otroid XU4计算机上运行,用Ubuntu 18.04和ROS Melodic自然运行。
测试执行在以下配置设置下:
表2.基准配置参数
绩效结果
性能结果显示在本报告的最后一页中。他们表明,对于三个评估的标准,Klepsydra SDK优于所有其他方法。下表总结如下:
表3.基准测试结果摘要
绩效结果
左手图表仅用于内存基准,右手,是ROS。
传奇是:
Klepsydra,多安全队列,单一安全队列