欢迎您访问长沙鹏翔电子科技有限公司官方网站

技术与应用

PCIE高速声发射仪/千兆网络声发射仪

技术与应用

基于Multi-Agent的分布式测控系统任务调度算法

发布日期:2015-05-13 09:35    浏览次数:

闫钧华 ,张焕春,经亚枝
(南京航空航天大学自动化学院南京 210016)
【摘要】基于Multi-Agent提出了一种新的分布式测控系统动态任务调度算法。该算法采用接收者启动的调度策略,根据各主机负载状态,在系统运行过程中动态迁移任务,有效地提高了系统效率,实现了负载均衡的目标。该算法采用移动Agent来迁移任务,有效地减少了网络传输,节省了时间。
关 键 词 分布式测控系统; 动态任务调度; 调度策略; 移动agent; 分布计算; 通信机制
中图分类号 TP316.4 文献标识码A
A Multi-Agent-Based Task Scheduling Algorithm for Distributed Measurement and Control System
YAN Jun-hua,ZHANG Huan-chun,JING Ya-zhi
(College of Automation Engineering , NUAA of China Nanjing 210016)
Abstract A new dynamic task scheduling algorithm for distributed measurement and control system is proposed based on multi-agent. This algorithm adopts the receive-initiated scheduling strategy and dynamically migrates tasks according to the current status of load on each node. So the algorithm can promote system efficiency and attain load balancing. The tasks is migrated with mobile agent in order to decrease network transmission and save time effectively.
Key words distributed measurement and control system; dynamic task scheduling; scheduling strategy; mobile agent; distributed computation; communication mechanism
在分布式测控系统中,任务到达是不可预测的动态过程。每个结点的负载大小是动态变化的,应根据系统当前的负载状况[1],采取有效的动态任务调度策略来平衡各结点(机)的负载[2],把当前重载计算机上的任务传送到轻载计算机上执行,从而使任务尽可能地并行执行,提高整个系统的资源利用率及效率。本文将多代理系统(Multi Agent System,MAS)理论和方法用于复杂的分布式测控系统动态任务调度问题求解[3],提出了基于Multi-Agent的分布式测控系统体系结构框架及性能较优的动态任务调度算法。
1 基于Multi-Agent的分布式测控系统体系结构框架
分布式测控系统中有大量不同种类的任务,根据各主机上运行的任务,将主机归类。每一类都有一台类服务器。类服务器负责为本类主机提供任务命名和名字管理、负载状态管理、候选目标主机管理、创建移动Agent等。这些服务是通过运行在类服务器上的各种功能不同的Agent来实现。在各主机上也运行着若干种Agent,完成了各不相同的功能。各种静止Agent分布在Client和Sever上,完成自己相应的功能。移动Agent是一种全新的分布式计算工具,它在适当的时候产生,将自身代码、状态传送到目标主机并在目标主机本地执行。通过各静止和移动Agent,系统可以节省通信带宽,减少网络传输,成功解决现代分布式计算中日益突出的移动计算问题,实现系统的负载平衡。
2 分布式测控系统任务调度算法
2.1 Multi Agent的功能、结构及通信机制
2.1.1 Multi Agent的功能
Multi Agent在分布式测控系统中的分布如图1所示。在类服务器上有:负载状态管理Agent、名字管理Agent、候选目标主机Agent、通信服务Agent、Agent构造服务器。在主机上有:负载信息检测Agent、任务Agent、通信服务Agent、Agent Sever。

负载状态管理Agent:负责收集类中各主机的负载状态信息,保存有各主机的负载上限(Load Max)与下限(Load Min)值。负载信息检测Agent:每台主机上都运行有唯一的负载信息检测Agent,检测主机的负载信息。名字管理Agent:负责为类中各主机上的所有任务提供命名和名字管理,采用全局的、与位置无关的命名原则,并且任务迁移后为任务提供定位服务。候选目标主机Agent:负责记录系统中负载空闲的主机。通信服务Agent:在每台主机和类服务器上都是唯一的,是主机内Agent和主机与类服务器间Agent通信的桥梁。当Agent要通信时,它指定目标Agent,然后将通信内容传送给通信服务Agent,通信服务Agent将通信内容传送给目标Agent。任务Agent:记录到达主机的每一个任务,并为它们排队和编号,当一个任务执行完后,就从任务队列中删除这个任务。当需要迁移任务时,就按先进先出(First In First Out,FIFO)原则迁移任务队列中的任务。Agent构造服务器:在每一个类服务器上设置了一个Agent构造服务器,协助用户自动地生成移动Agent。移动Agent可以携带迁移任务移动至空闲主机,利用空闲主机所提供的计算环境及资源,利用本地操作的优势快速而高效地完成迁移任务。当系统中的重载主机需要向空闲主机迁移任务时,请求Agent构造服务器为其生成一个移动Agent,请求原语格式如下[4]:
Request-Create-Agent {
SourceHost Address 1;
GoalHost Address2;
UserTask TaskNumber ;}
其中,SourceHost后的参数给出重载主机的地址;GoalHost后的参数给出空闲主机的地址;UserTask后的参数给出迁移任务的任务号。Agent Sever:系统中每台主机上都运行一个Agent Sever,它是移动Agent的运行平台,为移动Agent运行提供所必需的环境。它可以接收移动Agent,并为在其中运行的移动Agent提供相应的服务及资源。
2.1.2 Agent的结构
在分布式测控系统中,各种Agent完成不同的功能,因此各种Agent所包含的实际内容千差万别,但是这些Agent具有相似的结构,如图2所示。

图2中,接收器接收来自外部环境的各种事件及其他Agent的信息(通知、请求等);知识库是Agent的知识管理系统,主要存储Agent自身能力及其所处环境的知识并对其进行动态维护;推理机制根据获得的外部信息和具备的知识进行推理求解;Agent内核根据Agent的功能产生其得以实现的计算实体;自学习/自适应对Agent的行为进行优化,使Agent具有智能;处理过程是Agent的核心部分,它是Agent对外的窗口,Agent所提供的服务都是通过对处理过程的调用请求而实现的,它定义了Agent的行为模式。
2.1.3 Agent通信机制
在分布式测控系统中,Agent之间的协作完全是通过“通信”来实现的。本文采用基于消息的通信机制,Agent之间的通信是由事件激发的。当需要通信时,Agent就会向通信服务Agent发送消息包,通信服务Agent接收到消息包,就会根据消息包的目的地进行转发。
[4]Agent间发送消息的通信原语为:Send_ Message (Sender, Receiver, Message)。
系统采用单播(Unicast)、组播(Multicast)、广播(Broadcast)三种类型的通信模型。(1) 当Agent进行单播通信时,通信原语为:Send_ Message (Agent1,Agent2,Message)。(2) 当Agent进行组播通信时,通信原语为:Send_ Message (Agent1,Multicast(I),Message)。其中:Multicast(I)={2,3,…,i,…,k}(i=2,3,…,k)为发送Agent想要与其通信的一组Agent。(3) 当Agent进行广播通信时,通信原语为:Send_ Message(Agent1,Group,Message)。其中:Group为除发送Agent以外其余的Agent。
2.2 分布式测控系统任务调度策略
系统采用接收者启动动态任务调度策略。当一个主机成为空闲机时,它就向本类服务器发出请求,启动动态任务调度算法。如果本类中有重载机,则将重载机上的任务利用移动Agent迁移到空闲机上。如果本类中没有重载机,则向其他类服务器发出请求,启动动态任务调度算法。如果其他类中有重载机,则将重载机上的任务利用移动Agent迁移到空闲机上。如果其他类中没有重载机,则中止请求,等待一段时间后,再重新发出任务请求。
系统采用接收者启动动态任务调度策略的思想:若系统中没有空闲机时,那么无论重载机有多少任务,它都必须亲自完成。因为即使它发出任务迁移请求,也不会有主机响应。只有当某主机空闲时,才能发出任务请求,迁移重载机上的任务,帮助它完成实现系统动态负载平衡的目标。接收者启动策略还有两个优点:(1) 当每个主机均处于忙状态时,几乎不需要额外调度开销。(2) 动态任务调度的许多工作由空闲机来完成,不会给重载机增加许多额外负担。
转移策略:用于确定主机负载状态,采用门限策略。即:每一个主机负载(Load )都有一个负载上限值(Load Max)和负载下限值(Load Min),当Load >Load Max时,主机负载状态为重载主机;当Load< Load Min时,主机负载状态为空闲主机;当Load Min<Load<Load Max时,主机负载状态为负载均衡主机。
选择策略:选择被迁移的任务。迁移一个任务有两种方式:抢先式(preemptive)和非抢先式(nonpreemptive)。抢先式可以迁移一个正在运行的任务,而非抢先式只能迁移那些还未被启动执行的任务。抢先式的任务迁移比非抢先式的任务迁移开销大很多,为了节省开销,调度算法采用开销较小的非抢先式的迁移任务。
定位策略:本定位策略在定位重载机时,采用首次适应算法,在本类中只要找到满足调度条件的某个主机即可,并不检查所有主机。所以即使在其他类中有负载更重的主机,也不予考虑;只有当本类中无重载机时,才向其他类寻找重载机。这样做的原因是:在本测控系统中,将主机按其上所运行的任务性质进行了归类,同一类的主机运行的任务是相似的,不同类的主机上运行的任务相差较大。其优点是:减少通信带宽和通信时间;尽量减少平均调度检测时间;尽早启动调度结点上的任务执行。
2.3 分布式测控系统动态任务调度算法
2.3.1 基本概念
(1) 主机负载:考虑到系统中主机的异构性特点,主机的负载被定义为正比于主机的CPU利用率P,反比于主机的CPU速度V,即Load=P/V。(2) 学习机制:指Agent具有学习的能力,具有智能。它能记忆发生概率较高的事件,并能加以运用。例负载状态管理Agent,通过学习机制,它能发现在某一段时间内经常处于重载的主机。因为在定位重载机时,采用首次适应算法,这样它可以优先收集该主机的负载信息进行判断,从而不必要收集每个主机的负载信息进行判断,减少了平均检测时间。
2.3.2 动态任务调度算法
算法执行步骤:(1) 当某主机成为空闲主机时,向本类服务器发出任务请求,启动动态任务调度算法。(2) 类服务器启动候选目标主机Agent,登记该空闲主机。启动负载状态管理Agent,开始收集本类内各主机的负载信息。(3) 各主机负载信息检测Agent收到负载状态管理Agent发来的请求消息后,开始启动运行,检测主机负载信息,并将信息发回给负载状态管理Agent。(4) 负载状态管理Agent对收到的各主机负载信息进行处理,判断各主机负载状态。(5) 经判断某主机成为重载机时,该主机的任务Agent按FIFO原则,确定迁移任务,并将该任务传送给Agent构造服务器。若无重载机转步骤(11)。(6) Agent构造服务器从候选目标主机Agent中获得目标主机,并在名字管理Agent中登记。(7) Agent构造服务器创建移动Agent,将迁移任务封装在移动Agent中,并且将此移动Agent发送至目标主机。(8) 移动Agent携带迁移任务迁移至目标主机。(9) 目标主机的Agent Sever接收移动Agent并运行,使被迁移的任务得以实现。(10) 算法终止。(11) 向其他类服务器发出任务请求,其他类服务器收到请求后,启动该类的动态任务调度算法。(12) 重复步骤(2)~(10)。如此时执行步骤(5),若仍无重载机则中止请求。空闲主机等待一段时间后,再重新发出任务请求。
若系统中同时有若干台空闲主机时,可以将它们都记录在候选目标主机Agent中,将重载机上的不同任务同时迁移至各空闲主机,实现系统负载均衡的目标。在算法执行过程中,Agent之间的通信可以采用单播、组播、广播的通信模型。如负载信息检测Agent向负载状态管理Agent汇报主机负载信息时,可采用单播通信模型。负载状态管理Agent利用学习机制,先向重载概率较高的一些主机发送收集负载信息的消息时,可采用组播通信模型。空闲主机向其他类服务器发出任务请求时,可采用广播通信模型。
3 结束 语
分布式测控系统动态任务调度是利用多Agent系统的行为显现能力来实现的。本文提出的动态任务调度算法采用移动Agent这一新型的分布式计算工具来迁移任务,借助空闲主机的计算环境及资源,利用本地操作的优势快速而高效地完成迁移任务。从而使系统提高了效率,实现了负载均衡的目标。本系统采用Java语言来实现动态任务调度算法,这是因为Java具有面向对象、分布式、可移植等多种特性。Java语言的多线程机制使得同一台主机上可以有多个Agent独立运行,Java语言由于其内建的平台无关性、目标序列化、动态类装载等机制,为设计移动Agent提供了一些独一无二的特点[5]。
参 考 文 献
[1] Willebeek-Lemair H, Reeves A P. Strategies for dynamic load balancing on highly parallel computers [J]. IEEE Transaction on Parallel and Distributed Systems, 1993, 4(9): 979-993.
[2] Feng M D, Yuen C K. Dynamic load balancing on a distributed system[C]. Proceedings of the 6th Symposium on Parallel and Distributed Processing, Dallas, Texas, 1994. 26-29.
[3] Xu Li, Han Xiaogang. A Multiagent system model and its implementation based on object orientation. proceedings of the international symposium on future software technology[C]. Software Engineers Association, Japan, 1996. 85-91.
[4] 武成岗, 史忠植. 基于模块化的移动Agent及其调度方法[J]. 软件学报, 2002, 13(8): 1 628-1 636.
[5] Lange D B, Oshima M. Mobile agents with java: the aglet API[J]. World Wide Web Journal, 1998, 1(3): 111-121.