基于TAO的多线程模型及性能分析.pdf
《基于TAO的多线程模型及性能分析.pdf》由会员分享,可在线阅读,更多相关《基于TAO的多线程模型及性能分析.pdf(7页珍藏版)》请在咨信网上搜索。
1、现代计算机Modern Computer第 29 卷 第 12 期2023 年 6 月 25 日基于TAO的多线程模型及性能分析陈博*(同方股份有限公司科技信息部,北京 100083)摘要:在大规模信息系统以及综合化软件系统中,大量的组件间存在着数量可观的接口调用,需要通过中间件完成组件与组件之间的互联互通互操作。面向基于TAO的多线程模型及其原理,提出了面向各种模型的试验及分析,从模型的性能、资源占用量、场景适用性等多个维度,对各种模型的优缺点进行了详细分析。通过对通信中间件开发开展多线程模型的试验测试及结果分析,能够有效支撑应用开发,为底层通信传输的实现提供更精准的选择与匹配。关键词:计算
2、机技术;TAO;多线程模型;性能分析文章编号:10071423(2023)12004407DOI:10.3969/j.issn.10071423.2023.12.008收稿日期:20230104修稿日期:20230123作者简介:*通信作者:陈博(1985),女,河南开封人,高级工程师,博士,研究方向为人工智能、电子信息与技术、信息化规划与信息系统设计、数字化转型,Email:0引言随着数字经济和数字产业的高速发展,数据已经成为了继土地、人员等之外的第五大生产要素,如何更好地处理、分析、应用海量数据已经成为大规模信息系统以及综合化软件系统所必须面对的问题和挑战。同时,柔性重组、快速响应的软件研
3、发需求也对大规模信息系统中的“组件化”“模块化”的要求日益提升。为了能够更好地响应高并发情况下的数据访问,通过中间件更高效、稳定地完成组件之间的消息传输,实现海量数据的互联互通互操作,需要加强对底部通信中间件的分析和研究,面对不同的应用场景,选择合适的模型。公共对象请求代理体系机构(common object request broker architecture,CORBA)中间件被广泛应用在分布式互联互通,具备强大的“三跨”能力,跨语言、跨操作系统、跨异构平台1。TAO(The ACE ORB)是美国华盛顿大学的 Douglas C.Schmidt教授组织开发的一个实时CORBA平台。它支
4、持的平台包括Win32、各种常见的 Unix/Linux 实时操作系统等2。目前TAO支持命名服务、事件服务、通知服务和交易服务等,合理地应用TAO所提供的这些服务,能够为开发减轻不少负担。1多线程概述线程是指同一个进程中的多个具有并发运行的任务实体。通常在进程模式下,每个进程只有一个主线程,多个线程之间是一种竞争和协作的关系。线程的基本结构如图1所示。文本段数据段堆栈段PCB控制块设备资源文件全局变量静态变量TCB栈寄存器组Thread(1)TCB栈寄存器组Thread(n).图 1线程结构从图1可以看出,线程切换的代价较低,因为每次线程切换只需要保存线程栈、线程私有的寄存器组,以及线程专有
5、存储区信息。但是多线程的应用同时也带来很多其他的问题,44陈博:基于TAO的多线程模型及性能分析第12期包括资源竞争和同步,其解决方法通常会极大地影响到应用的性能和响应性,一般采用的解决方案有临界区(Critical Section)、竞争条件(Race Condition)和锁(Lock),其中线程安全函数指的是该函数不会改变应用的状态,因为该函数没有使用全局变量、静态变量和文件等。多线程安全函数指的是该函数是线程安全的,而且考虑到了多线程之间的并发性,即多个线程可以同时执行,彼此互不影响,从而不影响应用的整体性能。在面向对象计算模型中,封装特性可以简化多线程编程的复杂性。2TAO的多线程结
6、构TAO目前主要有三种多线程模式:Reactive线程模式、面向连接的线程模式和线程池模式34。在 TAO ORB 中,应用服务(Servants)采用的线程模式取决于两个因素:ORB底层线程模 式 和 可 移 植 对 象 代 理 策 略(portal objectadapter strategies,POA)线程策略。ORB底层线程模式决定了ORB响应用户请求及给客户请求分派处理线程的方式,这种模式是运行时通过配置相应的启动参数而制定的,即启动服务方式;而POA线程策略是指这些请求线程如何进入POA并激发伺服对象的方法,是在创建POA时通过create_policies()制定的5。2 2.
7、1 1ORBORB底层线程模式底层线程模式2 2.1 1.1 1ReactiveReactive线程模式线程模式Reactive线程模式(TAO的默认模式)的基本思想是,在该模式下,ORB只能有一个线程来处理用户请求。ORB只有一个监听进程负责监听所有的用户请求,这些请求被分派给服务线程处理。一旦客户请求和服务线程绑定,就可能执行,并在处理完此请求之后,再处理其他请求。对于后续的请求,监听线程直接放到请求队列,请求队列满后会拒绝客户请求。该线程模式体系结构如图2所示。根据该模型的特点,其主要应用场景主要包括以下两种:(1)请求处理的时间相对固定;(2)此模型配置和编程简便,通常应用在开发的初始
8、阶段和接口测试阶段。请求处理的方式主要包括以下五种:(1)请求按接收顺序处理;(2)可能导致无限期的延时:后续的请求会被阻塞,直到当前的请求处理完毕;(3)服务可不考虑并发性:由于后续请求不是并发处理的,开发人员可以简化服务中的同步问题,简化了代码的开发;(4)某些锁(Locks)可解除,从而提高系统吞吐量;(5)可扩展性有限:随着并发用户增加,延时必然增加。ServerGIOP/IIOPQueueListener图 2单线程模式2 2.1 1.2 2面向连接的多线程模式面向连接的多线程模式(ThreadperThreadperConnectionConnection ConcurrencyC
9、oncurrency)在该模式中,ORB为每个来自客户的连接创建一个线程,专门负责处理来自该连接的所有请求。对于来自同一连接的所有请求,遵循FIFO的原则进行串行化处理,如果当前线程繁忙,后续的请求放在相应队列。该模型的体系结构如图3所示。ServerGIOP/IIOPQueue图 3面向连接的多线程模型根据该模型的特点,其主要应用场景主要包括以下三种:(1)多个客户同时并发访问,系统并发处理客户请求;(2)请求处理是计算密集的;45现代计算机2023年(3)来自不同的请求相互独立。请求处理的方式主要包括以下六种:(1)如果有n个客户连接,则系统有n+1个由ORB创建和管理的线程;(2)来自不
10、同连接的请求进行并发处理,来自同一个连接的请求串行化处理,而且必须被同一个线程处理;(3)来自不同连接的请求不会被来自其他连接的请求阻塞;(4)由于来自不同的请求要并发执行,因此开发者要引入锁等设置临界区;(5)由 ORB为每个连接创建的线程不是采用激活器(Reactor)来接收和分发请求,只是简单的阻塞和读取,因此这些线程需要周期地唤醒来检查ORB是否已关闭;(6)扩展性不高,随着并发连接数的增加,线程也在增加,从而增加了对资源的占用。2 2.1 1.3 3线程池线程池模型模型(Thread PooThread Pool l)该模型是前两个模型的折中,启动时由服务自己创建相应一组线程,这组线
11、程遵循Leader/Follower的设计模式来响应客户请求。对于每个客户请求,ORB从系统选择Leader的线程来处理,同时一个Follower线程成为新的Leader,如此循环。每次客户发出请求就试图从线程池中选择出合适的线程来处理该请求,如果线程池没有空闲线程,该请求被放到请求队列,等待空闲线程。该模型的体系结构如图4所示。ServerGIOP/IIOPQueue图 4线程池模式此外,客户端也可以采用多线程模式,从而一方面改善客户端的交互性,另一方面使得实现AMI或混合ClientServer系统成为可能。通过配置合适的策略,在面向连接的多线程模型中,单客户端模拟出多个连接。根据该模型的
12、特点,其主要应用场景主要包括以下四种:(1)多个客户的请求可以同时处理,是前两种模型的折中方案;(2)多个线程用来专门处理用户请求;(3)多个请求可能来自同一个连接,这个连接是发起于一个多线程化的客户端,该客户端采用multiplexing技术要求这些请求并发地执行;(4)请求处理是计算集中。请求处理的方式主要包括以下四种:(1)线程数是由应用程序自身控制的;(2)服务开发者必须负责进程的创建,临界资源的保护,并且负责处理应用的消息循环;(3)所有请求都是并发处理,无论来自哪个连接,所有请求部分来源,一律平等;(4)具有较好的扩展性。2 2.2 2POAPOA多线程策略多线程策略(POA St
13、rategiesPOA Strategies)POA多线程策略主要有三种:ORBControlledModel,SinglethreadModel和MainthreadModel6。在ORBControlled Model中,POA对并发控制没有任何限制,完全取决于ORB底层的多线程模式,从而把对线程的控制完全交给了ORB。伺服对象可能被并发访问,为了程序的正确性,开发者必须确保对象的线程安全,对相应的临界资源进行保护。在Singlethread Model中,每个POA每次只允许存在一个活动线程,也就是在一个POA中同一时刻只能有一个伺服对象被访问。如果同时有多个请求,它们必须串行化处理,因
14、此需要一个请求等待队列。在该模式下,一个伺服对象仍然有可能被并发访问,如果一个对象同时在多个POA中注册,虽然不推荐该操作,因此开发者也要保证伺服对象的线程安全。Mainthread Model类似于Singlethread Model,只是所有的线程必须在主线程中执行,而且所有的请求都串行地指派到主线程化的POA,并在ORB层由POA来串行化处理请求。3实验方案影响多线程应用性能的因素主要有以下几个方面:应用类型。应用类型可以从资源利用上分为两大类:IO密集型和计算密集型。IO密集型主要是网络通信和 DBMS操作等,计算密集型主要涉及到图形运算等。应用面向的客户群体及其行为,即并发特性。在高
15、并发度 46陈博:基于TAO的多线程模型及性能分析第12期的应用中,多线程有利于提高系统的整体响应能力,占用较少的系统资源,充分发挥系统硬件的潜能。应用程序的运行环境,即支撑系统。在多处理器系统中,多线程可以有效地分解任务,在多个处理器上并发处理,从而大幅度地提高系统性能。然而在单处理系统上,应用不一定从多线程中获益,例如计算密集的应用;此外大量的互斥锁可能使应用退化到单线程模式,还增加了解/封锁的代价。考虑到具体的实验环境和应用,本文确定如下实验方案。3 3.1 1实验方案及步骤实验方案及步骤ACE/TAO是CORBA标准的实现版本,主要目标是实现异构系统之间的互操作性,因而面向网络通信的应
16、用是IO密集型的。ACE/TAO提供了三种线程模式:单线程模式(Reactive 模式)、面 向 连 接 的 多 线 程 模 式(ThreadPer Connection)和 ThreadPool 模式,每种线程模式适用于不同的应用。为了评估各种线程模式的特点和性能,本文实验方案包括两个部分:模拟实验(模拟应用类型:IO密集型和计算密集型);数据库访问实验。3 3.1 1.1 1模拟实验模拟实验采用模拟实验的原因主要有以下三点:在多线程应用中,小量并发请求无法发挥多线程的优势,达不到测试实验的要求;现实中搭建一个大规模实验平台,无法进行步调一致的操作,只能通过软件技术来模拟并发主体的行为,实际
17、上很多大型的测试工具都是在局域网中通过多线程技术来模拟大规模的用户;实验结果尽管具有一定的偏差,但还是能在很大程度上客观地再现实际应用环境,结果有一定参考性。本实验中,服务程序在一台主机(普通的PC机)上运行,在两台 PC上模拟并发用户群。服务程序模拟两类应用:IO密集型应用,这是通过发送大规模的数据来模拟的,而且服务程序分别实现了以上三种线程模型;计算密集应用,是通过运行 100000次加法来简单的模拟。一个客户程序模拟10个客户行为,一台PC机可以同时运行多个客户程序。具体实验方案如下:(1)通过IDL语言描述服务器提供的服务接口。服务接口是连接客户和应用的代理层,主要负责把请求发送到具体
18、的应用,等待处理结果并返回。采用多线程模式的服务接口要求确保线程安全,要引入并发处理机制,如锁、互斥体等。/IDL接口定义module teststruct MsgStruct/消息结构类型long num;string str;typedef sequence MsgSeq;/sequence消息类型/消息发送/接收接口interface Message boolean sendMsg1(inout MsgStruct msg);/处理结构类型的消息boolean sendMsg2(inout any msg);/处理ANY类型的消息boolean sendMsg3(inout MsgSeq
19、 msg);/处理SEQUENCE类型消息,大规模的批量数据传输boolean sendMsg4(inout long num);/处理简单类型的消息(2)服务器:实现相关服务接口,处理用户请求。ACE/TAO支持三种线程模型,因此本实验基于以上 IDL接口实现了三种线程模型,对于Thread Pool线程模式,服务器在启动时开5个后台服务线程。(3)客户端:通过服务接口调用相应的服务,发出请求。(4)多线程的服务器只有在大规模的分布式应用下,才能发挥出它的性能。因此,考虑到实际实验环境,实验在PC机上通过线程模拟多个并发客户。因为客户规模对系统的性能也有巨大的影响,因此,实验分别模拟了10个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TAO 多线程 模型 性能 分析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。