发明名称 异构分布式实时系统的事务调度方法
摘要 本发明涉及异构分布式并行处理领域的事务优先级确定方法,包括下列步骤:确定全局事务的优先级;将全局事务分解得到的子事务按其涉及的数据的物理位置进行分配;动态确定局部事务各部分的优先级;局部事务并行处理;返回执行结果等。本发明提供一种基于异构分布式系统的动态确定事务优先级的流程,保证了系统处理全局事务的实时性、可靠性。
申请公布号 CN102207883A 申请公布日期 2011.10.05
申请号 CN201110145804.7 申请日期 2011.06.01
申请人 华中科技大学 发明人 王非;黄本雄;段炼;邓磊
分类号 G06F9/45(2006.01)I;G06F9/50(2006.01)I 主分类号 G06F9/45(2006.01)I
代理机构 北京市德权律师事务所 11302 代理人 周发军
主权项 1.一种异构分布式实时系统的事务调度方法,其特征在于,包括以下步骤:步骤1,全局事务管理系统的全局事务调度器给各全局事务分配优先级;步骤2,全局事务调度器判断某个全局事务是否能分解;如果该事务能够分解,则全局事务调度器对该全局事务按语义以及涉及的数据的物理位置进行分析并分解为若干子事务,将分解得到的子事务分配到合适的节点上成为局部事务,各局部事务的初始优先级为原全局事务的优先级;否则,将该全局事务分配到合适的节点上作为一个局部事务;步骤3,各节点上的局部实时事务管理系统分别对本节点的局部事务构建有向无环图模型,该有向无环图模型包括若干具有前驱、后续依赖关系的事务层;步骤4,对每一个分配有子事务的节点,分别执行以下步骤:步骤4-1、确定该节点内的多核处理器的各内核最早可以开始执行新的事务的时间;步骤4-2,确定该节点的每个事务的所有前驱事务执行完毕时间;步骤4-3,确定该节点的各个事务之间的通讯损耗时间;如果父事务与子事务在同一个核上执行,则两者之间的数据传递时间可以视为0;如果分配到不同核上执行,则各个事务之间的通讯损耗时间为:<img file="2011101458047100001DEST_PATH_IMAGE002.GIF" wi="268" he="26" />(1)其中<img file="2011101458047100001DEST_PATH_IMAGE004.GIF" wi="74" he="25" />表示将数据在核<img file="2011101458047100001DEST_PATH_IMAGE006.GIF" wi="18" he="16" />传递到核<img file="2011101458047100001DEST_PATH_IMAGE008.GIF" wi="14" he="16" />需要的时间,<img file="2011101458047100001DEST_PATH_IMAGE010.GIF" wi="13" he="25" />表示的是事务的规模大小,通过单位时间内的读写次数来衡量,<img file="2011101458047100001DEST_PATH_IMAGE012.GIF" wi="70" he="25" />表示的是事务的规模大小与事务在不同节点之间传递的时间的线性因子,<img file="2011101458047100001DEST_PATH_IMAGE014.GIF" wi="77" he="25" />表示的是初始化参数;步骤4-4,确实各事务在各内核的最早开始时间;<img file="2011101458047100001DEST_PATH_IMAGE016.GIF" wi="76" he="25" />表示事务<img file="2011101458047100001DEST_PATH_IMAGE018.GIF" wi="17" he="25" />在核<img file="170361DEST_PATH_IMAGE006.GIF" wi="18" he="16" />上的最早可以开始时间,<img file="25184DEST_PATH_IMAGE016.GIF" wi="76" he="25" />可以通过以下公式计算得到:<img file="2011101458047100001DEST_PATH_IMAGE020.GIF" wi="396" he="26" />(2)<img file="2011101458047100001DEST_PATH_IMAGE022.GIF" wi="198" he="26" />(3)其中<img file="2011101458047100001DEST_PATH_IMAGE024.GIF" wi="65" he="26" />表示事务<img file="680288DEST_PATH_IMAGE018.GIF" wi="17" he="25" />的所有前驱事务,<img file="2011101458047100001DEST_PATH_IMAGE026.GIF" wi="92" he="25" />,<img file="2011101458047100001DEST_PATH_IMAGE028.GIF" wi="71" he="26" />表明核<img file="823300DEST_PATH_IMAGE006.GIF" wi="18" he="16" />已经空闲可以最早开始执行下一个事务的时间,通过估计在该核内等待调度的事务规模进行衡量,事务规模同样通过单位时间内事务读写次数来判断;<img file="2011101458047100001DEST_PATH_IMAGE030.GIF" wi="86" he="28" />表示数据传递时间损耗,通过公式(1)获得,如果是在同一个核内传递则设为0;事务<img file="2011101458047100001DEST_PATH_IMAGE032.GIF" wi="17" he="26" />在核<img file="388404DEST_PATH_IMAGE006.GIF" wi="18" he="16" />开始时间<img file="2011101458047100001DEST_PATH_IMAGE034.GIF" wi="78" he="26" />加上事务本身执行时间<img file="2011101458047100001DEST_PATH_IMAGE036.GIF" wi="16" he="25" />得到事务<img file="647085DEST_PATH_IMAGE032.GIF" wi="17" he="26" />在核<img file="851801DEST_PATH_IMAGE006.GIF" wi="18" he="16" />上最早执行完毕时间<img file="2011101458047100001DEST_PATH_IMAGE038.GIF" wi="78" he="25" />;步骤4-5,当事务从上一层执行到本层时,重新计算本层内各事务的优先级,优先级可以根据如下公式计算得出:<img file="2011101458047100001DEST_PATH_IMAGE040.GIF" wi="394" he="28" />(4)其中<img file="2011101458047100001DEST_PATH_IMAGE042.GIF" wi="60" he="25" />表示事务<img file="923138DEST_PATH_IMAGE018.GIF" wi="17" he="25" />的优先级,假设节点为<img file="280432DEST_PATH_IMAGE008.GIF" wi="14" he="16" />核处理器,从中选取保证事务<img file="398430DEST_PATH_IMAGE018.GIF" wi="17" he="25" />最早开始执行的核为调度目的地,<img file="2011101458047100001DEST_PATH_IMAGE044.GIF" wi="41" he="25" />表示入口事务的优先级大小,即为全局事务的优先级;步骤4-6,根据步骤4-5计算的优先级,对优先级队列重新排序;步骤4-7,内核根据优先级队列执行事务,局部事务调度器监视执行状态并反馈给全局事务调度器;如果执行成功,则记录执行结果以及执行结束时间;如果执行失败,则返回错误代码并进行必要的回滚操作;步骤4-8,判断同层各事务是否在各核内均执行完毕;如果没有则进行等待;步骤4-9,同层执行完毕,则转入下层,返回步骤4-5,直到执行到出口事务,即该局部事务执行完毕;步骤4-10,将局部事务执行结果返回给全局事务管理系统,供其进行结果汇总以及返回给应用服务器。
地址 430074 湖北省武汉市洪山区珞喻路1037号