一种基于并行应用阶段检测的虚拟时间片调度方法及系统技术方案

技术编号:16269744 阅读:124 留言:0更新日期:2017-09-22 21:25
本发明专利技术公开了一种基于并行应用阶段检测的虚拟时间片调度方法及系统,其中方法的实现包括:采集并行应用在虚拟机内运行过程中产生的缓存缺失数据;根据当前收集的缓存信息和已经收集到的历史数据判断并行应用处于计算阶段还是通信阶段;针对并行应用的不同执行阶段采取自适应的虚拟机时间片调节策略,最大限度地满足并行应用在运行过程中的计算和通信需求。本发明专利技术针对不同类型的并行应用在虚拟化环境下的性能问题,根据并行应用在运行时的缓存缺失信息来区分其执行阶段并根据不同阶段动态调节虚拟机的时间片,在不打破虚拟化透明性的前提下,可以有效降低并行应用的同步开销以及短时间片造成的缓存缺失,可以提高并行应用在虚拟化环境下的性能。

【技术实现步骤摘要】
一种基于并行应用阶段检测的虚拟时间片调度方法及系统
本专利技术属于虚拟化计算
,更具体地,涉及一种基于并行应用阶段检测的虚拟时间片调度方法及系统。
技术介绍
随着多核架构和虚拟化技术的快速发展,众多学术机构和企业开始尝试将不同的应用负载放到云端来运行,其中就包含并行应用。为了提高资源的利用率,虚拟化技术可以将多个独立的应用负载整合到同一个物理硬件系统中,然而这将会导致远超物理CPU数量的虚拟CPU被运行在这些物理CPU上,这种资源的过载现象使得并行应用在运行过程中受到严重的性能损失。众所周知,一个并行应用在运行过程中,计算阶段和通信阶段交替执行,通常情况下通信阶段的同步开销对整体性能有着很重要的影响。并行应用的同步方法可以用几种方式实现,例如在共享内存多线程模型中使用锁或在分布式内存模型中使用消息传递接口(MessagePassingInterface,MPI)。在一个多线程应用中,高性能低开销的自旋锁(spinlock)或者屏障(barrier)通常被用来解决多个线程访问同一资源时的竞争问题。在原生操作系统中,自旋锁的使用是为了保护较短的临界区,当自旋锁已经被占用时,其他试图获取此锁的线程将会忙等待直到锁被释放;当一个线程获取自旋锁后,操作系统将会禁用抢占以避免临界区代码的执行被打断。然而在虚拟化环境中,一个持有自旋锁的线程可能会由于虚拟机CPU(即vCPU)调度被虚拟机监控器(virtualmachinemonitor,VMM)抢占,此时等待获取锁的vCPU将会忙等待很长的时间直到持有锁的vCPU被再次调度并释放此锁,这将会导致大量的CPU资源被浪费,严重影响了并行应用的性能。在使用屏障的多线程应用中也存在类似的问题。例如,OpenMP中使用屏障进行同步的线程将会在被阻塞之前自旋指定的次数(默认值为300000)。在过载的虚拟化环境下,即使一个线程已经到达屏障,但如果其他线程被VMM抢占,那么该线程也得忙等待很长时间直到其他线程也到达此屏障,这将会使同步点被大幅延后并严重影响并行应用的性能。在使用消息传递编程模型的并行应用中,多机上进程间的同步需要通过网络消息的收发来进行,例如,一个虚拟机上运行的消息发送进程在执行发送操作时,必须收到其他虚拟机中消息接收进程的确认信息后才能发送消息。当应用程序需要进行大量的通信操作并处于过载的虚拟化环境中时,消息收发例程会给内核的网络协议栈和I/O复用机制造成很大的压力,具体来说,网络协议栈和I/O复用机制在内核实现中使用的自旋锁也会被VMM抢占,从而造成CPU资源的浪费和应用程序性能的损失。针对并行应用在虚拟化环境下的性能问题,目前的方法包括软件优化方法和硬件优化方法。软件优化方法是通过优化vCPU调度算法来提升性能,典型的软件优化方法包括协同调度和平衡调度,协同调度是通过侵入式的方法获取虚拟机内部自旋锁的使用情况来判断应用程序的类型,若是并行应用则将虚拟机的vCPU同时在各个物理CPU上进行调度,进而提升同步效率。然而这种方法打破了虚拟化层的透明性,并且对于像使用OpenMP库的多线程应用来说,由于自旋发生在用户态而非内核态,所以VMM很难感知到应用的类型,所以协同调度对这类应用不适用。平衡调度是把一个虚拟机的所有vCPU分派到不同的物理CPU队列上运行,这就增大了所有vCPU被同时调度的概率,进而提升了并行应用的性能。然而当虚拟CPU数量远多于物理CPU数量时,同一虚拟机所有vCPU被同时调度的概率大大降低,性能提升非常有限;再者,如果vCPU的分派策略使用不恰当,将会造成负载的不均,进而损害应用的性能。针对硬件优化方法,较新的Intel处理器上集成的PLE机制和AMD处理器上集成的PF机制能够在检测到虚拟机上有大量的自旋等待时将vCPU强制调度出去,然而这种机制只能被用到全虚拟化系统中,对半虚拟系统不适用。为了解决上述问题,本专利技术试图探寻一种更通用的调度方法,不管应用程序的同步需求在用户态还是在内核态,不管整个系统是全虚拟化还是半虚拟化,都能使得并行应用的性能得到大幅提升。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于并行应用阶段检测的虚拟时间片调度方法及系统,可以根据并行应用的不同执行阶段自适应地调节虚拟机的时间片,从而更好地满足并行应用的计算和通信需求并能够显著提升其性能。由此解决现有技术中针对并行应用在虚拟化环境下的性能问题。为实现上述目的,按照本专利技术的一个方面,提供了一种基于并行应用阶段检测的虚拟时间片调度方法,包括:S1、对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的缓存缺失信息,依据所述缓存缺失信息统计所述虚拟机的缓存缺失率,其中T为第一预设值;S2、计算所述虚拟机的缓存缺失率相对于所述虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定所述虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;S3、确定所述并行应用所处的执行阶段后,采取与所述执行阶段对应的时间片调度策略。优选地,步骤S1包括如下子步骤:S1.1、对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的三级缓存缺失次数和指令执行数量,将所述各虚拟CPU的三级缓存缺失次数求和得到所述虚拟机的总体缓存缺失次数,将所述各虚拟CPU的指令执行数量求和得到所述虚拟机的总体指令执行数量;S1.2、由公式miss_ratecurr=α×总体缓存缺失次数/总体指令执行数量,计算所述虚拟机在当前采样周期T内的缓存缺失率,其中α为第三预设值。优选地,步骤S2包括如下子步骤:S2.1、采用滑动窗口保存所述虚拟机在N个历史采样周期内的采样数据,其中,所述采样数据包括虚拟CPU的缓存缺失次数和指令执行数量;S2.2、根据所述窗口中的采样数据计算所述窗口的平均缓存缺失次数与平均指令执行数量,并由公式miss_ratewindow=α×平均缓存缺失次数/平均指令执行数量,计算所述窗口的平均缓存缺失率;S2.3、由公式计算所述虚拟机在当前采样周期T内的缓存缺失率与所述窗口的平均缓存缺失率的相对变化;S2.4、若δ在[1-ε,1+ε]之间,则表示所述并行应用进入稳定状态,并根据所述虚拟机在当前采样周期T内的缓存缺失率确定所述并行应用处于计算阶段还是通信阶段,其中ε为第四预设值;S2.5、若δ不在[1-ε,1+ε]之间,则表示所述并行应用不再处于稳定状态,将所述窗口中的数据全部移除并重置所述窗口大小。优选地,所述根据所述虚拟机在当前采样周期T内的缓存缺失率确定所述并行应用处于计算阶段还是通信阶段,包括:若miss_ratecurr大于θ,则确定所述并行应用处于计算阶段,若miss_ratecurr不大于θ,则确定所述并行应用处于通信阶段,其中θ为第五预设值。优选地,步骤S3包括如下子步骤:S3.1、若所述并行应用处于通信阶段,则判断上个采样周期的虚拟机时间片是否大于预设软边界;若所述并行应用处于计算阶段,则相对于上个采样周期线性增加虚拟机时间片作为当前采样周期的虚拟机时间片;S3.2、若上个采样周期的虚拟机时间片大于所述预设软边界,则相对于上个采样周期采用指数式减小方法减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则,判断上个采样周期本文档来自技高网
...
一种基于并行应用阶段检测的虚拟时间片调度方法及系统

【技术保护点】
一种基于并行应用阶段检测的虚拟时间片调度方法,其特征在于,包括:S1、对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的缓存缺失信息,依据所述缓存缺失信息统计所述虚拟机的缓存缺失率,其中T为第一预设值;S2、计算所述虚拟机的缓存缺失率相对于所述虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定所述虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;S3、确定所述并行应用所处的执行阶段后,采取与所述执行阶段对应的时间片调度策略。

【技术特征摘要】
1.一种基于并行应用阶段检测的虚拟时间片调度方法,其特征在于,包括:S1、对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的缓存缺失信息,依据所述缓存缺失信息统计所述虚拟机的缓存缺失率,其中T为第一预设值;S2、计算所述虚拟机的缓存缺失率相对于所述虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定所述虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;S3、确定所述并行应用所处的执行阶段后,采取与所述执行阶段对应的时间片调度策略。2.根据权利要求1所述的方法,其特征在于,步骤S1包括如下子步骤:S1.1、对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的三级缓存缺失次数和指令执行数量,将所述各虚拟CPU的三级缓存缺失次数求和得到所述虚拟机的总体缓存缺失次数,将所述各虚拟CPU的指令执行数量求和得到所述虚拟机的总体指令执行数量;S1.2、由公式miss_ratecurr=α×总体缓存缺失次数/总体指令执行数量,计算所述虚拟机在当前采样周期T内的缓存缺失率,其中α为第三预设值。3.根据权利要求2所述的方法,其特征在于,步骤S2包括如下子步骤:S2.1、采用滑动窗口保存所述虚拟机在N个历史采样周期内的采样数据,其中,所述采样数据包括虚拟CPU的缓存缺失次数和指令执行数量;S2.2、根据所述窗口中的采样数据计算所述窗口的平均缓存缺失次数与平均指令执行数量,并由公式miss_ratewindow=α×平均缓存缺失次数/平均指令执行数量,计算所述窗口的平均缓存缺失率;S2.3、由公式计算所述虚拟机在当前采样周期T内的缓存缺失率与所述窗口的平均缓存缺失率的相对变化;S2.4、若δ在[1-ε,1+ε]之间,则表示所述并行应用进入稳定状态,并根据所述虚拟机在当前采样周期T内的缓存缺失率确定所述并行应用处于计算阶段还是通信阶段,其中ε为第四预设值;S2.5、若δ不在[1-ε,1+ε]之间,则表示所述并行应用不再处于稳定状态,将所述窗口中的数据全部移除并重置所述窗口大小。4.根据权利要求3所述的方法,其特征在于,所述根据所述虚拟机在当前采样周期T内的缓存缺失率确定所述并行应用处于计算阶段还是通信阶段,包括:若miss_ratecurr大于θ,则确定所述并行应用处于计算阶段,若miss_ratecurr不大于θ,则确定所述并行应用处于通信阶段,其中θ为第五预设值。5.根据权利要求4所述的方法,其特征在于,步骤S3包括如下子步骤:S3.1、若所述并行应用处于通信阶段,则判断上个采样周期的虚拟机时间片是否大于预设软边界;若所述并行应用处于计算阶段,则相对于上个采样周期线性增加虚拟机时间片作为当前采样周期的虚拟机时间片;S3.2、若上个采样周期的虚拟机时间片大于所述预设软边界,则相对于上个采样周期采用指数式减小方法减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则,判断上个采样周期的虚拟机时间片是否大于预设硬边界;S3.3、若上个采样周期的虚拟机时间片大于所述预设硬边界,则相对于上个采样周期线性减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则将当前采样周期的虚拟机时间片设置为所述预设硬边界。6.一种基于并行应用阶段检测的虚拟时间片调度系统,其特征在于,包括:采样模块,...

【专利技术属性】
技术研发人员:金海吴松赵新宇
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1