图 1. TAO构架构件 | TAO功能 |
|
图 1中每个构件的摘要如下:有关TAO ORB系统构架的完整信息请看在线的RT-ORB.pdf文档
面对这些挑战,我们为华盛顿大学的TAO开发了一个运行在G比特ATM网络之上的高性能的I/O子系统 TAO I/O子系统包括以下构件 (1) 一个高速的ATM端接口控制器(APIC),(2) 一个实时的I/O子系统, (3) 一个实时的调度器, 和(4) 一个 输入控制器, 显示在图 2.
|
图 2. TAO的G比特I/O子系统 |
为了确保应用程序的QoS,TAO从底层的I/O子系统获得保证。为了完成这个任务,我们正在开发一个高新能的网络I/O子系统。 其系统构件描述如下.
1.1. 高速网络适配器
我们的I/O子系统的心脏是一个由一个或多个ATM接口控制器芯片(APIC)互相连接而组成的菊花链 .APIC能作为一个系统/网络接口使用,也能作为I/O接口芯片组使用.它支持一个双向2.4Gbps速率的聚集 .另外, TAO分层结构的设计使它能运行在通常的连接到通过使能QoS的的网络(如支持RSVP的IPv6)和实时互连(如VME底板和多处理器 的共享内存环境)的网络嵌入式平台.
1.2. 实时I/O系统
TAO通过Solaris和实时操作系统VxWorks等提供了增强的流模式.TAO的实时I/O系统最优化反演和隐藏的调度问题源 于协议的处理中.我们的策略是避免优先反演,用一个核心线程池专用处理协议并且用应用程序的线程关联这些线程. 这些核心线程运行在与应用程序线程同样的优先级别, 这样能防止多种实时调度事故的发生如优先反演和隐藏调度.
1.3. 实时调度
TAO通过支持周期性实时应用程序的实时I/O调度类来确保支持QoS. 一旦实时I/O类的一个线程被操作系统接纳, 调度程序将负责(1) 计算在类中相关的其它线程的优先级并且(2)周期性地分发这些线程以使它们在最后期限是满足的.
TAO实时I/O调度类允许应用程序指定它们在一个高级, 直觉方式下的需求.例如, TAO实时调度类的一个实现是基于比率单调调度(rate monotonic scheduling)的, 这些应用程序能在它们的计算时间里指定它们的处理需求C 和周期P. 操作系统为实时I/O线程赋于优先级以确保可调度.
1.4. 输入控制器
为确保应用程序的QoS需求,TAO为实时I/O调度类执行输入控制 .输入控制允许操作系统要么确保指定的计算时间,要么拒绝接收线程. 输入控制对于实时系统在确定和统计QoS需求方面很有 用处.
|
图 3. TAO的ORB核心构件 |
TAO's ORB 核心是基于高性能,跨平台的ACE构件之上,如接收器和连接器, 感应器,和任务. 图 3 说明了TAO ORB核心的客户端是如何使用ACE的
策略连接器
去缓冲到服务器的连接的,
这样就保存在调用和执行之间的连接设置时间和最小化时间(minimizing latencies). 服务器端使用ACE的
策略连接器
, 在与感应器的连接中,
获得连接.感应器 代表着一种连接处理器激活ACE激活策略的方式
(e.g., 一个线程激活策略在图中显示),
将每个线程句柄转到相应的活动对象. 连接处理器从请求中解析出Inter-ORB Protocol(IOP)并把它们
传递到TAO的对象适配器,并由对象适配器将这些请求分发到伺服程序进行处理.
|
图 4. 分层和DE分层的多路分解 |
通过所有层的多路分解客户请求的代价是非常昂贵的, 尤其是当在一个IDL接口中存在大量的操作或者是一个ORB管理着大量的对象更表现的如此.为了减少开销, TAO使用de-分层多路分解 (Figure 4(B)).这种近似使用多路分解键(demultiplexing keys)的方式把ORB指派给客户端. 这些键映射客户请求到对象/操作在O(1)时间里不需要任何的哈西运算或搜索.
为了将来减少多路分解层的数目,APIC能通过编程和使用ATM虚拟环路的方式直接分发客户请求. 这种策略减少了多路分解的执行时间和支持在每请求或每对象基础上的端对端QoS.
|
图 5. TAO的QoS规范模型 |
RT_Operation是一个调度操作, i.e.,它通过TAO使用RT_Info struct表示成一种被调度的资源需求 .RT_Info属性包含了worst-case执行时间周期, 重要的和数据依赖的.使用与RMS和RMA分析方法类似的调度技术,TAO实时调度服务判断在一个应用中是否有一个基于所有RT_Info数据的知识为所有的RT_Operations的可行度量.
这些属性对于通过使用TAO来 (1) 验证调度的可行性和 (2) 定位ORB系统和网络资源是足够的. 目前,开发者必须通过CORBA接口手工来确定这些参数并将它们提供给TAO的实时调度服务.我们应计划通过创建一个监视examples脚本执行的工具来自动取出这些必要的实时参数.同样,作为真实执行的替代,仿真结果能被 用来为每个操作定义RT_Info属性.
|
图 6. TAO的调度服务 |
Work_Task
是一个工作单元它概括了应用级的处理和通信活动.在一些MDA项目中,一个工作任务也被称为一个
模型 或者 过程, 但是我们避免这些术语因为它们过多使用.
RT_Task
是一个具有时间约束的工作任务. 每个 RT_Task
被认为
是一种在它们运行时信息 (RT_Info
)描述的属性条目中拥有自己特殊的QoS信息的``方法'' (函数). 因此,
一个具有多个方法的应用级对象可能需要多个RT_Task
实例.
RT_Task
s中; 一个
RT_Task
能包含零个或多个线程. 一个
RT_Task
却不能包含任何只能在另一个RT_Task
上下文中运行的线程, i.e., 它必须``借用'' 另一个
控制运行的任务线程(e.g., 对象适配器的) .
在我们基于RMA的分析中,假设固定的优先级(fixed priority), i.e., 操作系统不能改变线程的优先级别. 对比这些以时间共享的操作系统调度,典型的是通过降低它们在时间上的优先级而进行age长时间的处理. 因此,从那时的操作系统分发器的视图来看, 每个线程的优先级是不变的.
RT_Info
结构明确讲是一个RT_Task
的调度特性集(比如计算时间和运行周期).
RT_Task
管理一个RT_Info
结构. 在使用RT_Info
中的一个RT_Task
时
, 实时调度器能为RT_Task
的调度特性提供查询 (e.g., 一个任务的优先级) . 当前,在RT_Info
结构中的数据代表是离线计算的, i.e.,
优先级是静止赋予更早的运行时间.
6.1. 表现层的优化
这种在IDL定义和目标编程语言之间的转换是通过TAO的IDL编译器自动完成的. 此外减少了客户桩和服务器框架之间潜在的不一致性, 编译器支持自动更新优化. TAO IDL编译器被设计成可为IDL类型的编码、解码生成和配置多种策略. 举例, 基于一种运行时应用类型的测量, TAO 既能连接编译,也能解释IDL桩和骨架. 这样一种灵活性能在解释模式(运行速度慢一些,但尺寸会更小一些)和编译模式(速度会更快,但尺寸会大一些) 之前获得一种最佳的平衡点.
同样, TAO 能缓冲那些要反复使用的预编组的应用数据单元(ADUs) . 当ADUs在``请求链''被顺序传递时和and 每个ADU在从一处传递到另一处时的细微改变 能提高性能. 在下面的案例中, 在每一次的 整个过程中,ADUs是不必编组的. 最优化要求实时ORB执行应用程序代码的流分析以确定请求字段能否被缓冲.
虽然这些技术在一般情况能相当程度减少编组过载 , 有严格实时服务要求的应用程序经常要考虑只有最坏情况的执行. 这样的结果是, 流分析的最优化描述只能使用在确定环境上, e.g., 目的是让应用程序能接收、统计实时服务的或当最坏情况for applications that can accept statistical real-time service or when the worst-case scenarios are still 足够to meet deadlines.
通常CORBA工具经常忍受过多的动态存储管理和数据拷贝. 因为 堆栈的分段存储能为不同的消息大小和不同的工作量表现出不均匀的性能的原因动态存储管理会是硬盘实时系统的问题. 同样, 在整个ORB端系统中过多的数据拷贝会很大程度上降低端到端的性能.
现存的ORBs为多处理器使用动态存储管理. ORB核心通常为每个接收到的客户请求分配存储空间. IIOP解组引擎 通常为保持的解码请求参数分配存储空间. 最终, IDL 分别在上调之前和上调之后动态分配和删除客户端请求时参数的拷贝.
这些存储管理策略在一些环境中非常重要(e.g., 当上调生成用于修改它们输入的线程应用时为了防止破坏内部CORBA缓冲区). 然而, 这种策略不需要为实时应用增加内存和总线负载, 和流媒体应用一样(比如 卫星监视和电视会议) 在消耗它们输入而不用立即修改它.
TAO 被设计为小型化和清除在多点的数据拷贝. 举个例子, TAO的 ``零拷贝'' 缓冲区管理系统 被描述在允许客户请求被发送和接收和从不会导致任何数据拷贝开销的网络来. 此外, 这些缓冲区能在ORB的不同传输阶段被重新分配和传递. 另外, 集成层处理(ILP) 能用户减少数据的移动. 因为 ILP 需要维护顺序的约束, 我们提供的编译器技术(比如 控制和数据流分析) 用于检测ILP能被有效用于哪些方面.
将编译器技术用于表现层和存储管理功能允许我们在不修改标准OMG IDL和CORBA应用程序的情况下优化性能.
Back to the TAO intro page.
Last modified 09:10:05 CDT 23 June 2002