基于并行的自适应决策效率优化方法与流程

文档序号:11199057阅读:831来源:国知局
基于并行的自适应决策效率优化方法与流程

本发明属于计算机技术领域,更进一步涉及一种自适应决策效率优化方法,可用于解决基于搜索的软件工程方法解决自适应决策过程中效率有限、实时性不足、搜索开销大等缺点,以满足自适应软件需要快速决策的系统需求。



背景技术:

用户需求、软件运行环境和软件单元的频繁变化导致软件系统需在运行过程中动态调整自身行为。随着软件规模呈现指数级增长态势,异构的软件单元间关系错综复杂,导致人为调整软件行为的过程变得更加困难、易出错、并耗费时间、精力和成本。因此软件系统亟需具备一种根据软件变化调整自身行为的能力,即成为自适应软件sas。自适应软件可以在运行过程中动态调整自己的行为、属性、结构等以适应环境或用户需求的变化。而自适应决策的作用则是寻找或产生自适应策略,也就是自适应调整方案,以调整自适应软件的行为等。自适应决策的能力直接影响着自适应软件的质量属性与对外服务,是自适应软件领域的热点与难点问题。

由于搜索方法的效率有限、实时性不足、搜索开销大等缺点,使得搜索方法目前尚未在软件运行阶段有广泛的应用。然而,自适应决策是一个典型的软件运行态问题,决策效率是首先需要保证的要素。如果不能快速产生决策结果,决策过程中软件和运行环境极有可能继续变化,则所选择的调整方案极有可能已不适合新的环境。这样将导致软件系统持续的适应环境,进而严重影响到软件系统正常业务逻辑的执行。因此,针对基于搜索的自适应决策过程中的开销问题,如何结合并行任务调度技术建立一种基于并行的自适应决策效率优化机制,加快自适应策略搜索速度,提升搜索效率显得极为重要。下面将针对“自适应决策效率优化方法”的国内外研究成果进行归纳和分析。

现有的自适应决策效率优化方法一般采用任务调度方法进行,而任务调度方法可分为静态和动态两种。

(1)静态方法

静态方法,是指任务和处理单元的基本信息在程序执行前即可获取,效率优化方案在系统运行前就已确定。topcuogluh等在文献《performance-effectiveandlow-complexitytaskschedulingforheterogeneouscomputing》中依据自适应任务调度时所采用的不同策略将静态方法分为表调度算法、基于任务复制的调度算法、基于任务聚类的调度算法和基于定向随机搜索的调度算法,减少处理器之间的通信开销,减少处理器处理自适应任务时的等待时间,从而提高自适应任务执行效率。黄金贵等在文献《网络集群计算系统中的并行任务调度》中通过对表调度算法进行改进来提高决策效率,提出了三种不同的启发式算法:最大长度优先调度算法、最大宽度调度算法和最大面积优先算法。静态方法一般能达到较好的负载均衡,适用于本身就具有静态结构的应用任务。然而,如果系统中的任务是实时产生的,则静态调度算法就无法实现较好的负载均衡,此时就需要使用动态任务调度算法。

(2)动态方法

cybenkog在文献《dynamicloadbalancingfordistributedmemorymultiprocessors》中研究了能够实现动态负载均衡的扩散法和维交换法,给出了针对同构系统的扩散算法的一般形式,并且在研究时对网络拓扑结构中超立方体的多处理机系统进行负载均使用维交换的方法对决策效率进行优化。但是这种方法只在任务间进行调度优化,而任务内部依然是串行处理,无法最大程度地提高任务的执行效率。



技术实现要素:

本发明的目的在于克服上述已有技术的不足,针对基于搜索的自适应决策过程中的开销问题,提出一种基于并行的自适应决策效率优化机制,以加快自适应策略搜索速度,提升搜索效率,满足自适应系统需要对变化迅速做出调整的要求。

本发明的具体思路是:结合自适应搜索任务的特征和需求,采用并行任务分配调度方法对自适应搜索任务进行动态分配调度,并通过并行搜索的方式加快自适应调整方案的搜索速度,其实现方案包括如下:

(1)将联盟盟主发送的自适应策略空间数据封装在消息体中,形成自适搜索任务;

(2)将封装好的自适应搜索任务加入到全局任务队列当中,等待调度;

(3)定时感知全局任务队列状态:若全局任务队列中的任务数达到设定的上限,则进行任务分配调度,执行步骤(4);否则,循环等待;

(4)任务分配调度:

(4a)根据快速降阶的匈牙利算法进行任务分配,将全局任务队列中的所有任务分配到某个计算机上的本地调度队;

(4b)根据自适应搜索任务的优先级,对本地调度队列进行动态调整,即判断自适应搜索任务是否有优先级:若有,则将任务映射到计算机上的本地调度队列队头;否则,根据本地调度队列中任务的最早完成时间进行排序;

(5)计算机从本地调度队列中取出任务,对任务通过多线程进行并行处理,再进自适应搜索,得到优化后的自适应决策结果;

(6)将优化后的自适应决策结果进行封装,并发送给联盟盟主。

本发明与现有技术相比具有如下优点:

第一,本发明采用并行任务分配调度方法对自适应搜索任务进行动态分配调度,并通过并行搜索的方式,解决了基于搜索的自适应决策过程中的开销问题,加快自适应调整方案的搜索速度,提升搜索效率,满足了系统能够对变化快速产生最优自适应策略的需求。

第二,本发明利用自适应搜索任务之间是独立并行互不影响的特点,通过并行任务分配实现任务间的并行,并结合搜索算法天然的并行性,实现了这两种技术在不同的层次上对自适应策略的搜索和决策过程进行并行化。

附图说明

图1为本发明使用的自适应决策效率优化系统原理图。

图2为本发明基于并行的自适应决策效率优化方法实现流程图。

具体实施方式

下面结合附图对本发明做进一步的详细描述。

参照附图1,本发明使用的自适应决策效率优化系统,包括:全局任务队列、自适应策略封装器、状态监控、任务分配调度和本地调度队列。全局任务队列用于接收自适应搜索任务;自适应策略封装器与联盟盟主进行交互,用于封装盟主发送的自适应策略空间;状态监控用于监控和维护全局任务队列的状态;任务分配调度器根据任务分配调度算法,对全局任务队列和本地调度队列中的自适应搜索任务进行分配调度,得到优化后的自适应决策。

参照附图2,本发明基于上述系统进行自适应决策效率优化的步骤如下:

步骤1,封装自适应策略空间。

任务调度器将联盟盟主发送的自适应策略空间数据,例如计算资源的数量、软件单元的数量及软件参数封装在消息体中,形成自适搜索任务。

所述的消息体,由数据头和自适应策略空间数据构成;数据头包含了联盟盟主的信息,例如联盟盟主id等;自适应策略空间数据包含任务执行所需的数据,例如cpu利用率,内存利用率等。

步骤2,加入任务队列。

任务调度器将已结封装好的自适应搜索任务加入到系统全局任务队列当中,等待调度。

所述的全局任务队列,是一个自适应搜索任务的列表,用于接收自适应搜索任务,同时负责感知和维护自身的状态,例如全局任务队列中的任务数量。

步骤3,动态感知任务队列状态。

任务调度器定时感知任务队列状态,如果发现任务队列中的任务数达到规定上限,则进行任务分配调度,即将所有任务映射到某个计算机上的本地调度队列中进行调度;否则将循环等待自适应搜索任务的到来。

步骤4,任务分配调度。

(4a)任务调度器根据任务分配调度算法,对全局任务队列中的所有任务进行分配:

现有的任务调度算法包括表调度算法、基于任务复制的调度算法、基于任务聚类的调度算法和匈牙利算法等。

本实例中任务调度器采用快速降阶的匈牙利算法将全局任务队列中的所有任务分配到某个计算机上的本地调度队,其步骤如下:

(4a1)初始化任务成本矩阵;

(4a2)将计算机数与任务数进行比较,根据比较结果对成本矩阵进行调整:

若两者相等,则进行(4a3);

若计算机数多于任务数,添加任务成本为0的虚拟任务,使任务数与计算机数目相等;

若计算机数少于任务数,则先将成本矩阵调整为n维的矩阵,其中n=t/c,t为任务数,c为计算机数,若最后矩阵任务不够,则添加虚拟任务将矩阵补充使任务数与计算机数相等,否则进行(4a3);

(4a3)变换成本矩阵,使各行各列都出现0元素,即用成本矩阵的每行元素都减去该行的最小元素,用成本矩阵的每列元素都减去该列的最小元素;

(4a4)对变换后的成本矩阵进行降阶操作;

(4a5)遍历变换后的成本矩阵的所有行,找到只含一个0元素的行,将该0元素进行“画圆”标记,再遍历该0元素所在的列,将该列上的0元素进行“画撇”标记;遍历矩阵的列,找到只含一个0元素的列,再遍历该0元素所在的行,将该行上的0元素进行“画撇”标记;

(4a6)统计0元素的个数,根据统计结果进行如下操作:

若“画圆”0元素的个数等于矩阵维数,则进行(4a11);

若还存在未被标记的0元素,则进行(4a11);

若不存在未被标记的0元素,且“画圆”0的个数少于矩阵维数,则进行(4a7);

(4a7)对没有“画圆”0元素的行进行“画勾”标记;

(4a8)重复进行对已“画勾”的行中所有含“画撇”0元素的列“画勾”,对“画勾”列上有“画圆”0元素的行“画勾”的操作,直到得不出新的“画勾”的行列为止:

(4a9)在“画勾”的列上画纵线,没“画勾”的行上画横线;

(4a10)获取未被纵线和横线覆盖的元素中的最小值k,对“画勾”行中的每一个元素减去k,对“画勾”列中的每一个元素加上k,返回(4a4);

(4a11)取出存在未被标记0元素的行中的第一行并进行遍历,将该未被标记的0元素进行“画圆”标记,并将该元素所在行列的其它自由0元素进行“画撇”标记;

(4a12)按照“画圆”0元素的位置,纪录结果;

(4b)本地调度队列根据自适应搜索任务的优先级,对本地调度队列中的任务进行动态调整,即判断自适应搜索任务是否有优先级:若有,则将任务映射到计算机上的本地调度队列队头,执行步骤5;否则,根据本地调度队列中任务的最早完成时间进行排序,执行步骤5;

步骤5,任务并行执行。。

(5a)计算机从本地调度队列中取出任务,对任务通过多线程进行并行处理:

现有的并行处理方法包括:并行处理框架、并行计算架构和多线程技术等。

本实例采用多线程技术对任务进行并行处理,其步骤如下:

(5a1)将自适应搜索任务均匀的划分为多个子任务;

(5a2)为各子任务配置相应的处理器,并通过多线程并行编程启动多个线程;

(5a3)各处理器之间独自完成子任务的执行,并由多个线程对每个子任务同时进行执行;

(5a4)将各处理器中子任务的执行结果进行合并,得到并行处理的结果;

(5b)根据并行处理结果进行自适应搜索,得到优化后的自适应决策结果。

步骤6,返回结果。

任务调度器将优化后的自适应决策结果进行封装,并发送给联盟盟主。

以上描述仅是本发明的一个具体实例,不够成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1