本发明专利技术提供了一种基于两层虚拟机的并行作业调度的方法,把所具有的多个处理器的每一个处理器分别分成前景虚拟机和背景虚拟机,把前景虚拟机和背景虚拟机的CPU权限分别设置为最高和最低优先级,当一个新作业到达时,将该作业放到等待队列的末尾,调用前景层作业调度算法将所有能安排到前景虚拟机的作业部署到前景虚拟机,调用背景层作业调度算法将所有能安排到背景虚拟机的作业部署到背景虚拟机,其中前景层作业调度算法基于先到先服务的回填算法,并同时考虑在所述等待队列和正在背景虚拟机中运行的作业,背景层作业调度算法基于最短作业优先算法。本发明专利技术的方案无须改变已有并行作业调度器的结构,大大提高了处理机的使用率和调度性能。
【技术实现步骤摘要】
本专利技术涉及计算机领域,具体涉及。
技术介绍
一直以来,较低的计算资源利用率是商业数据中心所面临的一个难题。一个商业数据中心服务器的使用率通常在10%到50%左右。如果一个商业数据中心被用于运行高性能并行程序,计算资源的使用率将更低,分析其原因,主要是在于下面两个现象 1、处理器碎片一个并行作业通常需要若干个处理器来支撑运行,即使等待队列中有作业需要处理,但因为这些空闲处理器的数量不能满足由调度方法对指定的作业的处理器 需求,导致这部分处理器依然保持空闲; 2、空闲CPU时钟周期即使一个处理器被某个作业占据,由于并行程序本身进程间的通信/同步,该处理器的使用率依然无法达到100%,例如,采用BSP编程模型的并行程序。较低的计算资源使用率提高了运行高性能程序的成本,同时降低了支撑高性能计算程序的数据中心的利润。如何合理分配计算资源以平衡高性能计算程序的性能和计算资源的使用率是提供高性能计算资源的数据中心需要考虑的基本问题。在高性能计算领域,研究者们针对并行作业的调度做了很多努力。“先到先服务(FCFS, first come first served) ”是最基本的同时也是广泛应用的调度方法。由美国阿贡国家实验室开发的“回填(EASY Backfilling)”算法在不推迟等待队列中头作业执行的条件下,允许短/小作业使用当前空闲处理器。虽然“回填”算法能够在很大程度上减少处理器碎片的数量,但它并没有考虑利用并行程序本身带来CPU时钟浪费。Gang调度方法允许多个并行作业同时共享计算资源。在Gang调度方法中,每个处理器被划分为几个时间片,进程被安排到某处理器的某时间片上。一个并行作业的所有进程安排到同一层次的时间片上,CPU循环分配到各层时间片上。这种时间分片需要操作系统的强力支持。“pair-gang”调度方法考虑如何部署计算资源需求互补的进程到一个处理器上,比如某进程执行I/O操作时,其配对进程则使用CPU,类似的策略也应用在云计算资源加固中。Gang调度可以在一定程度上提高计算资源的利用率,但是它拉长了单个作业的执行时间。现在也有综合“回填”算法和Gang调度方法的一些尝试,但这种尝试仅仅提高了比较少的性能提高。不管是“回填”算法还是Gang调度方法都仅仅考虑了如何减少处理器碎片的数量,他们都没有考虑到并行程序本身带来的CPU时钟周期浪费现象。不管是国内还是国外,并行作业调度方法都没有超出“一个处理器(核)承担一个进程”的范畴。综合国内外研究现状,并行作业调度方法在进一步提高计算资源利用率方面存在很大的不足,尤其是在多核处理器机虚拟化技术高度成熟的时代。“一个处理器(核)承担一个进程”模式导致了较大的计算资源浪费。
技术实现思路
为了克服上述问题,本专利技术提出了一种基于两层虚拟机的作业调度方法,其利用(PU使用优先级差别的处理器虚拟分割方法,引入了作业尝试运行手段让部分作业尝试运行以提高计算资源利用率,在保证调度公平性的同时提高处理器的使用率。本专利技术提出的一种基于两层虚拟机的作业调度方法,其特征在于,把所具有的多个处理器的每一个处理器分别分成前景虚拟机和背景虚拟机,所述前景虚拟机的CPU权限设置为最高优先级,所述背景虚拟机的CPU权限设置为最低优先级,所述方法包括 (1)当一个新作业到达时,执行 步骤1,将新到达的作业放到等待队列的末尾, 步骤2,调用前景层作业调度算法将所有能安排到前景虚拟机的作业部署到前景虚拟机, 步骤3,调用背景层作业调度算法将所有能安排到背景虚拟机的作业部署到背景虚拟机; (2)当一个前景作业离开时,仅执行上述步骤2和3; (3)当一个背景作业离开时,直接执行步骤3; 其中所述前景层作业调度算法基于先到先服务的回填算法,并同时考虑在所述等待队列和正在背景虚拟机中运行的作业;所述背景层作业调度算法基于最短作业优先算法。进一步,所述把所具有的多个处理器的每一个处理器分别分成前景虚拟机和背景虚拟机具体为直接对CPU进行逻辑划分或者采用硬件虚拟化技术进行划分。进一步,在所述前景层作业调度中,当需要调度一个正在背景虚拟机中运行的作业往前景虚拟机运行时,当该作业对应的所有前景虚拟机都空闲时,对换两层虚拟机的CPU权限,使得该作业在原处理器上继续执行;当该作业对应的部分前景虚拟机不空闲时,杀死该作业后在新处理器上重新运行该作业。进一步,所述步骤3中的背景层作业调度算法包括 步骤31,让集合Jobs=当前等待队列中的作业集合,并将Jobs中的作业按运行时间从短到长排序,让作业J=排序后的Jobs中的第一个作业; 步骤32,判断作业J的进程数量是否不大于当前背景层中空闲虚拟机的数量,如果是,则转入步骤33,否则直接转入步骤34 ; 步骤33,调用作业部署算法将作业J部署到背景虚拟机; 步骤34,如果Jobs中存在当前作业J的下一个作业,则J=下一个作业,否则J=空作业; 步骤35,判断作业J是否为空作业,如果否,则转入步骤32 ;否则,结束。进一步,所述步骤2中的前景层作业调度算法包括 步骤21,让集合Jobs=当前等待队列中作业与当前背景层中作业的并集,让作业J=Jobs中的第一个作业; 步骤22,判断作业J的进程数量是否不多于当前前景层空闲虚拟机数量,如果是,则转入步骤221,否则转入步骤23 ; 步骤221,调用作业部署算法将作业J部署到前景虚拟机; 步骤222,如果Jobs中存在作业J的下一个作业,那么让J=下一个作业,否则J=空作业; 步骤223,判断作业J是否为空作业,如果是,结束;否则转入步骤22 ; 步骤23,求阴影时刻TS和额外前景虚拟机数量EN :让Jobs=当前等待队列中作业与当前背景层中作业的并集,让作业J=Jobs中的第一个作业,让集合JobsinFg=当前前景层中的作业集合,将JobsinFg中的作业按预计结束时间从早到晚排序,遍历JobsinFg中的作业,收集它们将在未来释放的虚拟机直到某未来时刻的空闲前景虚拟机数量不小于作业J的进程数量,则所述未来时刻称之为阴影时刻TS,若前景层在此未来时刻的空闲虚拟机数量多于作业J的进程数量,那么多出来的数量为额外前景虚拟机数量EN ; 步骤24,判断当前空闲前景虚拟机数量是否不小于作业J的进程数量且作业J能在阴影时刻TS前结束,如果是,则转入步骤241,否则转入步骤25 ; 步骤241,判断作业J是否来自等待队列,如果是,则转入步骤244,否则转入步骤242 ;步骤242,判断作业J所在处理器的所有前景虚拟机是否都空闲,如果是,则转入步骤245 ;否则,转入步骤243 ; 步骤243,杀死该作业J ; 步骤244,调用作业部署算法将作业J部署到前景虚拟机,并转入步骤26 ; 步骤245,将作业J所在处理器的前景虚拟机和背景虚拟机的CPU权限互换,并转入步骤26 ; 步骤25,判断作业J的进程数量是否既不大于当前空闲前景虚拟机数量又不大于额外前景虚拟机数量EN,如果是,则转入步骤242,否则转入步骤26 ; 步骤26,如果Jobs中存在作业J的下一个作业,那么让J=下一个作业,否则J=空作业; 步骤27,判断作业J是否为空作业,如果是,则结束,否则转入步骤2本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:张柯,
申请(专利权)人:北京华如科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。