一个通用移动agent仿真平台的设计与实现.doc

上传人:吴起龙 文档编号:1591626 上传时间:2018-12-26 格式:DOC 页数:15 大小:21.85KB
返回 下载 相关 举报
一个通用移动agent仿真平台的设计与实现.doc_第1页
第1页 / 共15页
一个通用移动agent仿真平台的设计与实现.doc_第2页
第2页 / 共15页
一个通用移动agent仿真平台的设计与实现.doc_第3页
第3页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《一个通用移动agent仿真平台的设计与实现.doc》由会员分享,可在线阅读,更多相关《一个通用移动agent仿真平台的设计与实现.doc(15页珍藏版)》请在三一文库上搜索。

1、一个通用移动仿真平台的设计与实现 (1. 襄樊职业技术学院信息技术系,湖北 襄樊 441050; 2.武汉大学a.软件工程国家重点实验室; b.计算机学院, 武汉 430072) 对移动agent在广域网中的运行情况进行仿真从而评价其算法的性能是优化移动agent应用设计的关键问题之一。在前期工作基础上,采用直接执行仿真方法,设计并实现的通用移动agent仿真平台SimulAglets。实验结果表明,该平台可对复杂的移动agent算法进行有效的模拟,仿真结果与理论建模和专用仿真程序得到的结果完全相符。 ?丶?词:移动代理; 仿真平台; 直接执行仿真 Design and implementat

2、ion of generic mobile agent simulation platform ZENG Hong1, LI Xuhui2a, HE Yanxiang2b (1.Dept. of Information Technology, Xiangfan Vocational & Technical College, Xiangfan Hubei 441050, China; 2.a. State Key Laboratory of Software Engineering, b. School of Computer, Wuhan University, Wuhan 430072, C

3、hina) Abstract:Simulating the execution of MA program in WAN and thus evaluating its performance is a key problem in optimizing the MAapplication. This paper introduced the work on designing and implementing a generic mobile agent simulation platform using a direct execution simulation approach, bas

4、ed on the previous research. The test results show that the platform can simulate the execution of complicated MA algorithms efficiently, and the results of simulation platform accord with the results from theoretical modeling and specific simulation program. Key words:mobile agent; simulation platf

5、orm; direct execution simulation ? 移动agent是一种在网络中主动迁移并根据环境确定反应行为的软件实体,近年来被广泛运用于并行处理、信息检索、网络信息监控以及分布协作等分布式计算领域的各个方面,提供了解决分布式计算问题的新思路。研究人员利用agent的迁移特性将传统的基于消息传递的分布式算法转换为利用agent迁移完成信息交换和任务计算的移动agent算法,或者使用移动agent解决移动计算中出现的各种新问题。相应地,对于这些基于移动agent的分布式算法进行性能评价成为发现和改变算法的性能瓶颈、优化移动agent应用设计的关键问题之一。由于移动agent所

6、具有的迁移性、反应性以及自主性等特性,其性能评价比传统的分布式算法更加复杂。已有的分布式算法性能评价方法包括运用数学工具分析建模、实际执行算法获取性能数据和对算法作仿真测试获取性能数据三种。前两种方法并不适合对移动agent的移动性和反应性建模。传统的仿真方法仅能部分解决此问题,已有相关研究通常是针对具体的移动agent算法或环境设计仿真程序得到性能参数,每个算法均需要设计新的仿真程序。其中存在大量重复性劳动1,2。 为有效解决该问题,笔者在前期研究中提出了一种基于直接执行仿真方法设计移动agent仿真系统的思路3,并对移动agent的描述模型和仿真环境的架构4,5进行深入探讨。本文设计Sim

7、ulAglets平台以当前最流行的移动agent系统IBM Aglets为基本环境,应用直接执行仿真技术对Aglets平台进行了修改,实现了在单机或局域网内的少数机器中模拟广域网计算环境的功能,可以对按照规范编写的任何移动agent算法程序进行广域网内的运行情况模拟和控制。 1 相关工作 如前所述,仿真方法已经成为当前对于移动agent进行性能评价的主要方法,移动agent的仿真多是对算法和运行环境分别设计仿真程序1,2,尽管这些仿真程序中通常雷同。为此笔者在前期研究中针对移动agent的通用仿真方法进行了较深入的探讨,并发现直接执行仿真是解决该问题的有效方法。直接执行仿真是一种进程仿真,其基

8、本思路是将应用程序的代码放在一个虚拟的计算机环境中直接执行,并从中获取程序的各项性能指标的数据。其主要优点在于:a)无须实际的系统环境就能获得程序在相应的系统中的性能数据,对于那些运行难以监控的系统(如广域网)中的程序而言,这是最佳的仿真方法;b)由于程序的代码是直接执行的,使仿真工作得以简化,仿真过程方便快捷。 在最初的研究中3,笔者基于直接执行仿真方法设计了移动agent仿真模型MADES,并实现了一个简单的移动agent仿真系统原型Simulagent,通过对移动agent各种基本动作进行控制,以达到模拟移动agent在广域网内行为的效果。该模型和原型系统对于简单环境中的简单算法能够很好

9、地模拟其运行,但当算法复杂程度和agent个数增加时,模拟情况与实际情况出现了较大差别。本文对原型系统和算法进行了深入剖析,发现这种差别源于对移动agent本身内部执行机制不透明,因而使算法设计者对移动agent的执行过程与其实际执行过程并不相符。例如,一些移动agent系统如IBM Aglets利用多线程处理消息实现反应性,而另外一些则采用单线程方式。 移动agent执行机制不透明会直接导致其性能评价工作无法进行,甚至会使移动agent算法难以正确实现。为此笔者参考常见的移动agent系统,提出了一个移动agent的执行规范模型SMA4。基于SMA模型,笔者利用离散事件系统对移动agent的

10、行为进行了详细的刻画6,以此作为对符合SMA模型的移动agent进行仿真和性能评价的理论依据。在此基础上,笔者重新设计了移动agent的通用仿真环境MADESE5。本文所介绍的SimulAglets平台就是在新的模型与方法基础上,通过对IBM Aglets进行深入剖析和相应修改后形成的通用移动agent仿真平台。 2 SimulAglets的设计 2. 1 SimulAglets的逻辑结构 SimulAglets平台采用了主/从式结构,整个平台由主仿真控制环境和各仿真节点环境两部分组成。其基本组成结构如图1所示。 在主控制环境中完成仿真任务的设置、仿真结果的获取、分析,以及各仿真节点的管理工作

11、。仿真任务的设置由用户接口和配置管理两个组件完成。其中,配置管理包括网络拓扑环境的配置、网络仿真器和宿主仿真器的指定以及仿真任务的设置。仿真任务的配置内容包括网络拓扑环境、各移动agent宿主平台的拓扑分布、仿真中使用的网络仿真器和宿主仿真器的具体实现程序以及仿真中的实时事件接收器程序与仿真结果的分析器程序等。 仿真结果的来源是仿真过程中产生的外部事件,本文定义了一套完整的外部事件机制。在仿真器执行过程中,各种内部事件被各级控制器和协调器进行同步处理后,会产生相应的外部事件,并直接发送到主控制部分的外部事件管理器中。管理器负责接收事件并管理仿真工作指定的事件接收器,接收到的事件被分类转发给各实

12、时的事件接收器,以满足用户了解仿真情况的实时信息的要求。在仿真结束后,整个过程中的外部事件被收集起来并由用户指定的仿真结果分析器加以分析,进行移动agent的性能评价。 主控制环境对于各仿真节点环境的管理工作比较简单,主要是根据仿真任务的配置向当前参与仿真的各节点发送仿真控制命令,仿真命令包括要求仿真节点设置移动agent宿主平台、要求仿真节点设置某agent平台的初始agent、要求仿真节点设置相应的仿真平台中的宿主仿真器、要求启动/停止仿真任务等。 各仿真节点执行具体的仿真工作,每一个仿真节点对应于一组移动agent平台,这样就可以在一个局域网中的几台主机上甚至一台主机上模拟出多个移动ag

13、ent平台在Internet中的运行情况。仿真节点维护其内运行的一组平台对象,每一个平台对象包括一个实际的移动agent执行平台、一个用来确定代码段的逻辑执行时间的宿主仿真器、一个控制器和一个宿主级的同步协调器,宿主节点并提供一个网络仿真器对象用于模拟网络的延迟。在进行仿真时,仿真节点根据主控制器传来的命令进行仿真任务的初始设置,然后在接收到启动命令后启动各agent宿主平台中的初始agent和宿主仿真器,此后控制权转交给各移动agent的工作线程,仅当接收到停止仿真的命令时关闭各agent平台和其中运行的agent。 2. 2 SimulAglets的程序结构 SimulAglets是以Ja

14、va语言编写的,运行在Java 2平台上的软件包。SimulAglets主要由四个部分组成:a)仿真配置与管理部分,包括用户界面子包(ui)和配置管理子包(config);b)仿真控制协调部分,包括控制子包(control);c)仿真器部分,包括agent执行平台子包(aglets)、宿主平台仿真子包(server)和网络仿真子包(network);d)仿真事件处理与性能评价部分,包括事件子包(event)、监听器子包(listener)和分析器子包(analyzer)。各个子包之间的关系如图2所示。 Ui子包和config子包为用户提供了操作仿真环境、配置仿真任务的界面。SimulAglet

15、s的配置功能比较简单,主要是为仿真任务的外部环境作配置。其具体内容如前所述。 仿真控制部分由一组并行离散事件仿真控制器构成。Control子包定义了仿真协调控制器接口,由加载的实现程序处理从各仿真节点传来的内部事件,控制整个仿真任务的进程。子包中还定义了缺省的仿真协调器实现程序,采用保守同步协议算法控制各agent的事件。 仿真器部分是整个仿真工作的基础。其中,aglets子包负责执行agent程序并产生原始事件数据; server子包负责形成宿主平台的各种事件,并模拟各宿主服务器的运行负荷情况以计算各事件的时间戳; network子包负责模拟网络负载情况,并计算数据传输相关事件的传输延迟。A

16、glets是整个直接执行仿真环境的基础,它取代com.ibm.aglets包成为Aglet运行的底层支持平台。其他两个子包则定义了基本的宿主仿真器和网络仿真器接口,并提供了缺省的仿真器实现。 仿真事件和性能评价部分建立在外部事件的基础上。SimulAglets中的外部事件是由仿真协调器产生。仿真协调器在接收到各宿主平台发送的内部事件后,在进行同步控制的同时将事件过滤重组为外部事件,然后发送给SimulAglets的事件管理器。Event子包定义了各种内部事件与外部事件,listener定义了各种事件的监听器接口和一组基本的监听器程序,如事件管理器(event mana?勃?ger)和监听器管理

17、器(listener manager)接口。当仿真任务运行结束后,在整个仿真过程中产生的事件被收集起来,供性能评价程序分析其性能指标数据。Analyzer子包仅定义了基本的分析器(analyzer)接口,并在用户界面部分提供了动态装载用户指定的性能分析器的功能。 SimulAglets在实现中充分利用了面向对象系统的特点。系统的各主要部分尽量以接口或抽象类定义,并在系统启动时通过属性设置动态加载各部分的实现类。因此,系统具有良好的可复用性和可扩展性。 3 SimulAglets的实现 3. 1 SimulAglets的agent平台 SimulAglets平台中,aglets子包和server

18、子包组成了仿真环境中的移动agent运行平台。作为仿真模型的事件源,aglets子包在IBM Aglets系统的com.ibm.aglets包的基础上作了扩展和修改,加入了产生原始事件数据的代码。运行平台部分的仿真处理流程如图3所示。 SimulAglets规定了可由平台进行仿真控制的Aglet程序规范。采用该规范编写的移动agent程序在执行时,可由底层运行平台控制其各代码段的执行。SimulAglets在遇到Aglet内部线程同步调用、环境信息调用、通信调用和行为调用时,将首先执行由一个serverController接口对象提供的陷阱方法trap(),该方法能捕获aglets提供的事件类

19、型、当前的实际时间和一个包含与事件类型相关的当前状态信息参数传入trap()。Trap()方法被调用后,首先会获取当前线程所对应的工作及其逻辑时间(存在少数由其他工作指定事件发生时间的情况),逻辑时间的计算由宿主平台仿真器对象serverSimulator完成。 确定逻辑时间后,serverController开始根据事件的类型决定其处理方法。一般来说,大部分事件均涉及到agent间或agent内部的工作线程间的同步。对此类事件trap()方法会将控制权转移到仿真控制部分的相关对象由其来控制后面的处理过程。有一些外部事件如获取环境信息或创建结束等事件不涉及到与其他线程的同步,仅由平台仿真器和网

20、络仿真器给出在逻辑时刻的相应数据即可。 对于与通信有关的事件,如消息发送和agent开始迁移等事件,其后续事件的发生时刻取决于前因事件的逻辑时刻和数据传输的延迟。在处理此类事件时,需要将事件的相关信息和预期后续事件的发生时刻发送到目的方平台所对应的serverController对象。当控制器允许事件对应的工作继续进行时,数据传输到目的方,由目的方Aglet产生的接收事件将检查此前接收到的相关信息并设置当前工作的逻辑时间。 此外,aglets子包还修改了com.ibm.aglets. MessageManagerImpl类中对于非队列消息的处理方法,使此类消息能真正地得到实时响应。 3. 2

21、SimulAglets的仿真控制 SimulAglets的控制部分处理仿真事件的同步问题。Simul Aglets的事件同步处理采用了请求驱动的方式,各服务器协调器对象serverCoordinator的运行是被动的,由serverController和主协调器mainCoordinator来调用其功能完成协调控制。MainCoordinator类实现全局协调器的功能,它运行在主控制部分,其具体功能是维护全局各宿主具有最小逻辑时间的工作信息表,并向各仿真节点发送包含全局最小逻辑时间的消息。仿真节点接收到此消息后,对各宿主平台计算预测值并激活当前在本宿主中处于等待状态的安全的工作线程。 3. 3

22、 SimulAglets的API SimulAglets以SMA模型4为其默认的agent执行模式。在Aglets平台中,移动agent程序的基类是Aglet类,IBM Aglets中Aglet的执行模式与笔者在SMA模型中对移动agent所定义的模式有很大程度上的相似,因此可以相对容易地将Aglet改造成符合SMA模型的移动agent。这种改造在三个方面进行:在系统底层笔者改写了一些相关的类如MessageManagerImpl等,使SimulAglets中的Aglet能以SMA模型所规定的方式管理消息;在用户Aglet中,本文规定用户一般需要声明对各类型的消息均以实时方式处理(虽然可以强制

23、按此方式处理,但是在SimulAglets中也同时提供了按普通的消息队列方式来处理消息的功能,因此这里可以给用户提供多种选择);还有一些功能则是由SimulAglets的API:aglet子包来提供。 SimulAglets定义了aglet子包的SAglet类作为所有运行在SimulAglets上的Aglet的超类,使用户能建立适合运行于SimulAglets中的Aglet。用户的agent程序可通过SAglet类中的Environment对象获取当前运行环境信息(如网络拓扑、逻辑时间),通过util对象进行并发控制(如锁、同步原语等)。通过SimulAglets.aglet包提供的API,用

24、户可以编写与普通Aglet的功能等价的适合在SimulAglets环境中运行的移动agent应用程序。 4SimulAglets的应用实例 为了验证SimulAglets仿真平台的正确性,本文将一些基于移动agent的算法用SAglet实现,然后在SimulAglets中运行以测试算法的性能。一个典型的运行实例是基于移动agent的分布互斥算法7在SimulAglets中的实现与仿真情况。在此算法中,系统中存在若干个有可能在未来某一时刻进入临界区的节点,各节点在准备进入临界区时,会创建一个移动agent,由该agent来访问其他各节点,以确定是否能允许本节点进入临界区。 本文用SimulAgl

25、ets的Aglet API实现了该算法,并在Simul?勃?Aglets中对其进行了仿真。仿真环境由两台连接在快速以太网中的普通PC机构成,机器配置为P3 900 MHz/256 MB/20 GB,运行操作系统为Windows 2000,Java虚拟机版本为1.4。笔者模拟了系统节点数目为440个时算法的运行情况,并根据算法的性能评价程序分析了仿真结果,得出了该算法的具体性能指标。SimulAglets的运行界面和该算法的性能分析结果如图4所示。在图4中,列出了该算法的各项性能指标在满负荷、中等负荷和轻负荷下的状态。结果表明,SimulAglets获得的算法性能指标与针对该算法建立的数学模型进

26、行分析所得的结果一致。 此外,为进一步说明SimulAglets的仿真效果,笔者针对算法在全负荷情况下的运行情况编写了仿真程序。为使其与Simul?勃?Aglets平台具有可比性,该仿真程序也采用了SMA模型,并且具体代码执行的时间也采用了与SimulAglets相同的计算方法。两者结果比较如表1所示。结果表明,通用仿真平台Simul Aglets的仿真效果与专用仿真程序一致,充分说明了本平台的可用性。其中:M代表SimulAglets结果;S代表仿真程序结果。 表1 两种仿真方法结果比较 Nodes4681015 AvTime/msAvNodesAvTraffic/Byte M3 3557

27、2188 95812 86614 777 S3 3206 9888 57712 74014 322 M35.96.29.312.5 S35.86.29.612.6 M3 6333 8944 1744 3985 372 S3 6423 8864 1704 4145 390 Nodes2025303540 AvTime/msAvNodesAvTraffic/Byte M20 20642 84762 48389 888129 123 S19 69541 91961 59389 087127 694 M1314.616.818.218.6 S13.114.416.618.518.8 M6 0626 9187 87587879 576 S6 0776 8777 75088539 662 5 结束语 当前笔者正在此原型系统所确定的框架基础上对系统的性能作进一步的改进。主要改进方面有:设计更加高效的适合此平台的并行仿真算法,并试图从程序分析的角度来获取有关信息提高预测值;设计更好的宿主仿真器和网络仿真器,使系统能够比较真实地反映实际机器的负荷情况和网络的带宽使用情况,从而模拟不同外界环境条件下agent的执行;对SimulAglets的软件结构进行调整,进一步加强其可扩展性,使其能动态设置不同的仿真同步算法来进行仿真,从而比较各种仿真方法的优劣。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1