适用于软件无线电分布式环境的CORBA 中间件性能分析*

2022-08-23 01:53然,鲁瀚,郭
通信技术 2022年7期
关键词:中间件单板吞吐量

鄢 然,鲁 瀚,郭 蕾

(武汉中原电子集团有限公司,湖北 武汉 430205)

0 引言

提供一种开放的、可互操作的、有统一标准的软件平台是软件通信体系结构[1](Software Communication Architecture,SCA)设计的目标,从而实现软件无线电通信中对各个软件组件的重用以及移植。由于公用对象请求代理体系(Common Object Request Broker Architecture,CORBA)具有良好的互操作性、异构性,因此被SCA 规范采用,同时受到更多人的关注。随着软件无线电研究的深入,越来越多种类的中间件被开发出来,包括面向消息的中间件(Message Oriented Middleware,MOM)、远程过程调用中间件(Remote Procedure Call,RPC)、远程方法调用中间件(Remote Method Invocation,RMI)、面向数据分发服务中间件(Data Distribution Service,DDS)、面向对象请求代理中间件(Object Request Broker,ORB)[2]等。中间件承载的作用主要是使客户端和服务端互通,其中不可避免地会出现时延以及性能消耗。如何在众多的中间件中选出最适合当前运行环境的中间件成为一道难题。

文献[3]在Ubuntu 14.04 虚拟机中运行RPCexpress、TAO、omniORB、e*ORB 和ORBit 这5 种常用的中间件,从时延、可预测性、吞吐量、静态封装大小、动态内存占用5 个方面分别进行对比分析,实验数据分析合理,对比充分,但实验环境不是传统的嵌入式软件无线电平台。

文献[4]在软件无线电教学平台ZLSDR-1000上,基于omniORB、Binder、ZeroMQ 3 种不同架构的中间件构建测试组件,进行传输时延测试,实验环境的核心芯片为ZYNQ 7030 SoC。然而该实验环境并不是软件无线电分布式环境,并且在单一芯片上进行测试,数据可能因为中间件设计方式和操作系统的支持,而直接通过共享内存进行传输。

文献[5]基于OSSIE 0.8.1 环境的omniORB 4.1.4中间件构建通信组件,研究表明,随着组件数量的增加和数据包长度的增加,中间件时延性能受到的影响越大。

文献[6]在软件无线电分布式环境下,基于嵌入式VxWorks 系统,分析TAO 中间件在不同组件数量下通信数据时延的表现,研究表明组件数量增加到3 个以上时,传输时延显著增加。

国内外目前对于中间件的性能分析的相关研究主要集中在两个方向:一类研究主要在x86 环境的虚拟机中对各种中间件进行时延、吞吐量的性能对比,数据结果具备一定的参考意义,但缺乏在嵌入式环境下的数据对比分析;另一类在嵌入式软件无线电环境下,对基于单一中间件进行组件化开发来测试多组件下中间件的时延,但也缺乏多个中间件之间的性能对比分析。针对目前软件无线电环境下波形对中间件软件的实际需求,结合软件无线电分布式场景的应用方向,本文针对常见的TAO、omniORB、e*ORB 这3 种CORBA 中间件,在平均传输时延、传输时延抖动、吞吐量3 个方面进行深入测试分析,以选出具有更高性能的中间件产品。

1 中间件的介绍

CORBA 是对象管理组(Object Management Group,OMG)提出的一种面向对象、可移植的中间件标准,它不依赖于编程语言、计算平台、网络协议,因此能够实现分布式环境下客户端与服务端之间的通信。CORBA 的主要组成部分如图1 所示。

图1 CORBA 的主要组成部分

如图1 所示,ORB 是CORBA 的核心部分,也是本文性能分析主要讨论的部分。把客户端发出的请求传递给目标对象,并把目标对象的执行结果返回给发出请求的客户端是ORB 的主要任务。因为ORB 屏蔽了对象的位置、状态、通信机制等信息,所以在客户端看来,每个对象都是透明的,并且能够调用它,但是对客户端而言这些对象是不能修改的,因为它并不知道每个对象的内部详情。

1.1 TAO

TAO 是一种在自适应通信环境(Adaptive Communication Environment,ACE)的基础上开发的中间件[7],根据CORBA 2.6 规范进行实现,该中间件是开源的,实现了核心的分布式功能。TAO 支持C、C++两种语言,能够适配多种操作系统。

1.2 omniORB

omniORB 是一种基于对象请求代理的中间件,根据CORBA 2.6 规范进行实现,该中间件开发的目的是能让用户通过简洁和高效的方式提供CORBA规范中最实用、最普遍的功能。omniORB 支持C++和Python 两种语言,并且适配Unix、Windows 等多种操作系统。

1.3 e*ORB

e*ORB 是一种基于对象请求代理的中间件,根据CORBA 2.3 规范进行实现,该中间件开发的目的是适配minimum CORBA,保留经常使用的接口,删减不常用的接口,高度组件化的架构使其成为目前为止最小且最快的ORB 中间件。e*ORB 支持C++、C 和Java 3 种语言,并且适配Unix、Windows操作系统。

2 测试环境

测试环境采用典型的软件无线电波形开发环境,具体包含了主控模块、信号处理模块、信道模块和天线。主控模块主要运行操作系统,进行业务处理、音频收发处理等,实现系统资源控制,对外提供网口、串口、音频接口等功能型接口,用于提供整个平台对外的外围接口和业务处理功能,采用SoC 芯片zynq XC7Z015 实现。信号处理模块主要用于进行波形功能的开发,以及整个软件无线电波形网络路由与信号处理的开发,实现信号不同速率的抽取、插值滤波、增益控制等功能,采用SoC芯片zynq XC7Z035 实现,主控模块与信号处理模块通过SGMII 接口直接相连实现千兆以太网功能,组成分布式处理环境。信道模块则采用一个射频SoC 芯片和射频前端功放共同实现。具体硬件结构如图2 所示。

图2 软件无线电分布式硬件平台

软件无线电分布式环境中,SoC 芯片zynq XC7Z015 和SoC 芯片zynq XC7Z035 均运行Linux 系统,内核版本4.6.0,SoC 芯片内PS 端ARM 工作频段为667 MHz,将中间件软件TAO、omniORB、e*ORB 在主控模块和信号处理模块上运行测试。

3 中间件的性能测试

为了测试TAO、omniORB、e*ORB 这3 种中间件之间的性能差异,本文选取了平均传输时延、传输时延抖动、吞吐量这3 个传输性能指标进行实测分析。

实验测试方法是通过客户端向服务端发送数据,依靠中间件进行传输,并依次在zynq XC7Z035单板内,以及zynq XC7Z015 和zynq XC7Z035 双板间两种硬件环境下进行测试,其中,zynq XC7Z015和zynq XC7Z035 双板间中,服务端运行在zynq XC7Z035 上,客户端运行在zynq XC7Z015 上。客户端中的参数包括数据包内容tempstr_ptr、数据包大小pkt_len、循环次数pkt_num。其中数据包大小包括256 B、1 024 B、4 KB、8 KB、64 KB、128 KB、192 KB。循环次数为1 000 次。

本文中使用到的接口函数包括test_delay()、test_jitter()、test_throughout(),由交互式数据语言(Interactive Data Language,IDL)来实现框架代码的生成,其IDL 定义如下:

3.1 平均传输时延

平均传输时延的测试方法具体为,先获取数据包发送前的时间t1,然后客户端通过中间件将数据传输给服务端,获取数据包发送结束的时间t2,两者相减的数据记为Tt=t2-t1,单位为μs,此时获取到传输一次的传输时延,循环该过程1 000 次,再根据计算公式得出平均传输时延,其中Tr为平均传输时延,单位为μs,pkt_num为循环次数,Tt为单次传输时延,单位为μs。

表1、表2、表3 分别为TAO、omniORB、e*ORB 3 种中间件的平均传输时延测试结果。

表1 TAO 平均传输时延

表2 omniORB 平均传输时延

根据表1、表2 和表3 可以看出,使用TAO、omniORB、e*ORB 这3 种中间件进行测试,双板的平均传输时延均比单板平均传输时延大,且数据包大小越大,平均传输时延越长。

表3 e*ORB 平均传输时延

图3、图4 分别为TAO、omniORB、e*ORB 3种中间件在单板和双板条件下的平均传输时延测试结果。

从图3 和图4 可以看出,在单板的情况下,数据包比较小的时候,使用omniORB 中间件和使用e*ORB 中间件的平均传输时延大小相差不大,使用TAO 中间件的平均传输时延要稍长于另外两种中间件。然而,数据包越大时,使用e*ORB 中间件的平均传输时延会比其他两种中间件的小,而TAO 中间件的平均传输时延要远大于另外两种中间件。在双板的情况下,数据包比较小的时候,使用omniORB 和e*ORB 中间件的平均传输时延大小相差不大,使用TAO 中间件的平均传输时延要稍长于另外两种中间件。然而,数据包越大,使用e*ORB 中间件的平均传输时延会比其他两种中间件的小,使用e*ORB 和omniORB 中间件之间的差距双板比单板更大,使用TAO 中间件的平均传输时延要远大于另外两种中间件。

图3 zynq XC7Z035 单板3 种中间件平均传输时延对比

图4 zynq XC7Z015 和zynq XC7Z035 双板3 种中间件平均传输时延对比

3.2 传输时延抖动

传输时延抖动的测试方法先是获取数据包发送前的时间t1,然后客户端通过中间件将数据传输给服务端,获取数据包发送结束的时间t2,两者相减的数据记为Tt=t2-t1,并存入curTime 数组中,循环该过程1 000 次,将curTime 数组中最大的数据记为Tmax,最小的数据记为Tmin,传输时延抖动T=Tmax-Tmin,单位为μs。

表4、表5、表6 分别为TAO、omniORB、e*ORB 3 种中间件的传输时延抖动测试结果。

表4 TAO 传输时延抖动

表5 omniORB 传输时延抖动

根据表4、表5、表6 可以看出,单板的传输时延抖动基本小于双板的传输时延抖动,使用TAO中间件在单板与双板两种硬件测试条件下进行测试时,传输时延随着数据包的增大而增大,且增长幅度大;使用omniORB 中间件在单板与双板两种硬件测试条件下进行测试时,传输时延抖动基本随着数据包的增大而增长;使用e*ORB 中间件在单板与双板两种硬件测试的条件下进行测试时,传输时延抖动基本在一定范围内浮动。

表6 e*ORB 传输时延抖动

图5、图6 分别为TAO、omniORB、e*ORB 3种中间件在单板和双板条件下的传输时延抖动测试结果。

图5 zynq XC7Z035 单板3 种中间件传输时延抖动对比

图6 zynq XC7Z015 和zynq XC7Z035 双板3 种中间件传输时延抖动对比

根据图5、图6 可以看出,在单板硬件测试环境下,使用e*ORB 中间件的传输时延抖动都较小,且维持在一定的范围内;使用omniORB 中间件时,传输时延抖动随着数据包的增大而偏大,且浮动范围较大;使用TAO 中间件时,当数据包大小不大于64 KB 时,抖动时长在一定的范围内波动,当数据包大小大于64 KB 时,抖动时长明显增长且浮动范围大。在双板硬件测试环境下,使用e*ORB 中间件的传输时延抖动都较小,且抖动的幅度比单板要更小一些;使用omniORB 中间件的传输时延抖动基本随着数据包的增大而增大,且随着数据包大小的增大,抖动幅度也随之增大;使用TAO 中间件时,当数据包大小不大于128 KB 时,传输时延抖动时长在一定的范围内波动,当数据包大小大于128 KB 时,抖动时长明显增长且浮动范围大。

3.3 吞吐量

吞吐量的测试方法先是获取数据包发送前的时间t1,然后客户端通过中间件将数据传输给服务端,每次传输的数据包大小为pkt_num,次数为c,再获取数据包发送结束的时间t2,两者相减的数据记为Tt=t2-t1,根据公式T=(c×pkt_num)/Tt计算出吞吐量的值,其中,T为吞吐量,单位为Mbit/s,pkt_num为数据包大小,单位为MB,Tt为数据发送时间,单位为μs。

表7、表8、表9 分别为TAO、omniORB、e*ORB 3 种中间件的吞吐量测试结果。

从表7、表8、表9 可以看出,使用3 种中间件进行测试双板的吞吐量均明显小于单板的吞吐量。一般情况下,数据包越大吞吐量越大,当数据包足够大的时候,吞吐量是在一定的范围内浮动的。

表7 TAO 吞吐量

表8 omniORB 吞吐量

表9 e*ORB 吞吐量

图7、图8 分别为TAO、omniORB、e*ORB 3种中间件在单板和双板条件下的吞吐量测试结果。

图7 zynq XC7Z035 单板3 种中间件吞吐量对比

图8 zynq XC7Z015 和zynq XC7Z035 双板3 种中间件吞吐量对比

从图7 和图8 可以看出,不论是单板还是双板,使用TAO 中间件的吞吐量都是最小的并且差距大,使用e*ORB 中间件的吞吐量都要大于使用omniORB 中间件的吞吐量,但是差距不太大。当数据包的大小大于64 KB 时,吞吐量的数据变化幅度不大,在一定的范围内波动。

4 结语

如今,运用于数据通信中的中间件种类日益丰富,能够解决更多数据通信中出现的问题,但是如何选择性能最合适的中间件是十分重要的问题。中间件作为一个能够允许组件独立开发并能彼此交互的中间层,它起着承上启下的作用。而数据在通过中间件传输的时候必然会带来一定的时延和性能消耗。本文在zynq XC7Z035 单板以及zynq XC7Z015和zynq XC7Z035 双板两种硬件环境下,分别测试了TAO、omniORB、e*ORB 这3 种中间件的平均传输时延、传输时延抖动、吞吐量这3 个性能指标,并通过数据之间的对比,为后续在不同环境中选用合适的中间件提供可靠的数据支持。

猜你喜欢
中间件单板吞吐量
单板U型场地滑雪关键技术动作及训练方法
刘佳宇——2018年平昌冬奥会单板滑雪女子U型场地亚军
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
2017年3月长三角地区主要港口吞吐量
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
封面人物 单板滑雪凌空飞燕蔡雪桐
云计算环境下中间件的负载均衡机制研究
2014年1月长三角地区主要港口吞吐量