CN107193631A - 一种基于并行应用阶段检测的虚拟时间片调度方法及系统 - Google Patents
一种基于并行应用阶段检测的虚拟时间片调度方法及系统 Download PDFInfo
- Publication number
- CN107193631A CN107193631A CN201710290453.6A CN201710290453A CN107193631A CN 107193631 A CN107193631 A CN 107193631A CN 201710290453 A CN201710290453 A CN 201710290453A CN 107193631 A CN107193631 A CN 107193631A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- parallel application
- cache miss
- timeslice
- rate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Abstract
本发明公开了一种基于并行应用阶段检测的虚拟时间片调度方法及系统,其中方法的实现包括:采集并行应用在虚拟机内运行过程中产生的缓存缺失数据;根据当前收集的缓存信息和已经收集到的历史数据判断并行应用处于计算阶段还是通信阶段;针对并行应用的不同执行阶段采取自适应的虚拟机时间片调节策略,最大限度地满足并行应用在运行过程中的计算和通信需求。本发明针对不同类型的并行应用在虚拟化环境下的性能问题,根据并行应用在运行时的缓存缺失信息来区分其执行阶段并根据不同阶段动态调节虚拟机的时间片,在不打破虚拟化透明性的前提下,可以有效降低并行应用的同步开销以及短时间片造成的缓存缺失,可以提高并行应用在虚拟化环境下的性能。
Description
技术领域
本发明属于虚拟化计算技术领域,更具体地,涉及一种基于并行应用阶段检测的虚拟时间片调度方法及系统。
背景技术
随着多核架构和虚拟化技术的快速发展,众多学术机构和企业开始尝试将不同的应用负载放到云端来运行,其中就包含并行应用。为了提高资源的利用率,虚拟化技术可以将多个独立的应用负载整合到同一个物理硬件系统中,然而这将会导致远超物理CPU数量的虚拟CPU被运行在这些物理CPU上,这种资源的过载现象使得并行应用在运行过程中受到严重的性能损失。
众所周知,一个并行应用在运行过程中,计算阶段和通信阶段交替执行,通常情况下通信阶段的同步开销对整体性能有着很重要的影响。并行应用的同步方法可以用几种方式实现,例如在共享内存多线程模型中使用锁或在分布式内存模型中使用消息传递接口(Message Passing Interface,MPI)。
在一个多线程应用中,高性能低开销的自旋锁(spinlock)或者屏障(barrier)通常被用来解决多个线程访问同一资源时的竞争问题。在原生操作系统中,自旋锁的使用是为了保护较短的临界区,当自旋锁已经被占用时,其他试图获取此锁的线程将会忙等待直到锁被释放;当一个线程获取自旋锁后,操作系统将会禁用抢占以避免临界区代码的执行被打断。然而在虚拟化环境中,一个持有自旋锁的线程可能会由于虚拟机CPU(即vCPU)调度被虚拟机监控器(virtual machine monitor,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、若上个采样周期的虚拟机时间片大于所述预设软边界,则相对于上个采样周期采用指数式减小方法减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则,判断上个采样周期的虚拟机时间片是否大于预设硬边界;
S3.3、若上个采样周期的虚拟机时间片大于所述预设硬边界,则相对于上个采样周期线性减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则将当前采样周期的虚拟机时间片设置为所述预设硬边界。
按照本发明的另一方面,提供了一种基于并行应用阶段检测的虚拟时间片调度系统,包括:
采样模块,用于对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的缓存缺失信息,依据所述缓存缺失信息统计所述虚拟机的缓存缺失率,其中T为第一预设值;
检测模块,用于计算所述虚拟机的缓存缺失率相对于所述虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定所述虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;
调度模块,用于确定所述并行应用所处的执行阶段后,采取与所述执行阶段对应的时间片调度策略。
优选地,所述采样模块包括:
第一计算模块,用于对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的三级缓存缺失次数和指令执行数量,将所述各虚拟CPU的三级缓存缺失次数求和得到所述虚拟机的总体缓存缺失次数,将所述各虚拟CPU的指令执行数量求和得到所述虚拟机的总体指令执行数量;
第二计算模块,用于由公式miss_ratecurr=α×总体缓存缺失次数/总体指令执行数量,计算所述虚拟机在当前采样周期T内的缓存缺失率,其中α为第三预设值。
优选地,所述检测模块包括:
存储模块,用于采用滑动窗口保存所述虚拟机在N个历史采样周期内的采样数据,其中,所述采样数据包括虚拟CPU的缓存缺失次数和指令执行数量;
第三计算模块,用于根据所述窗口中的采样数据计算所述窗口的平均缓存缺失次数与平均指令执行数量,并由公式miss_ratewindow=α×平均缓存缺失次数/平均指令执行数量,计算所述窗口的平均缓存缺失率;
第四计算模块,用于由公式计算所述虚拟机在当前采样周期T内的缓存缺失率与所述窗口的平均缓存缺失率的相对变化;
检测子模块,用于在δ在[1-ε,1+ε]之间时,表示所述并行应用进入稳定状态,并根据所述虚拟机在当前采样周期T内的缓存缺失率确定所述并行应用处于计算阶段还是通信阶段,其中ε为第四预设值;
重置模块,用于在δ不在[1-ε,1+ε]之间时,表示所述并行应用不再处于稳定状态,将所述窗口中的数据全部移除并重置所述窗口大小。
优选地,所述检测子模块,具体用于在δ在[1-ε,1+ε]之间时,表示所述并行应用进入稳定状态,若miss_ratecurr大于θ,则确定所述并行应用处于计算阶段,若miss_ratecurr不大于θ,则确定所述并行应用处于通信阶段,其中θ为第五预设值。
优选地,所述调度模块包括:
第一判断模块,用于在所述并行应用处于通信阶段时,判断上个采样周期的虚拟机时间片是否大于预设软边界;
第一调度子模块,用于在所述并行应用处于计算阶段时,相对于上个采样周期线性增加虚拟机时间片作为当前采样周期的虚拟机时间片;
第二调度子模块,用于在上个采样周期的虚拟机时间片大于所述预设软边界时,相对于上个采样周期采用指数式减小方法减小虚拟机时间片作为当前采样周期的虚拟机时间片;
第二判断模块,用于在上个采样周期的虚拟机时间片不大于所述预设软边界时,判断上个采样周期的虚拟机时间片是否大于预设硬边界;
第三调度子模块,用于在上个采样周期的虚拟机时间片大于所述预设硬边界时,相对于上个采样周期线性减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则将当前采样周期的虚拟机时间片设置为所述预设硬边界。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明从并行应用的自身特点出发,通过缓存缺失来检测应用程序的不同执行阶段并采取相应的调度策略,一方面可以维持虚拟化层的透明性,另一方面同时考虑到了并行应用内核态和用户态的同步需求,能够适用于各种类型的并行应用。
(2)本发明采用软件优化的方法,通过修改VMM的调度算法来提升并行应用的性能,不仅适用于半虚拟化环境,同时也适用于全虚拟化环境,具有较强的通用性。
(3)本发明在单节点上进行缓存采样分析与时间片调节,当节点数量增加时,仍然能够根据应用特征进行自适应的调节,具有很高的扩展性
(4)本发明能够大幅提升并行应用在虚拟化环境下的运行效率,从而使得传统环境下的高性能计算任务迁移到云端变为可能,进而节省了用户的成本。
附图说明
图1是本发明实施例公开的两种不同类型的并行应用在虚拟化环境下的应用环境图;
图2是本发明实施例公开的一种基于并行应用阶段检测的虚拟时间片调度方法的流程示意图;
图3是本发明实施例公开的一种并行应用阶段检测的流程示意图;
图4是本发明实施例公开的一种时间片调节的流程示意图;
图5是本发明实施例公开的一种功能模块图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明针对并行应用在虚拟化环境下的性能问题,提出了一种通过检测并行应用执行阶段来动态调节时间片的方法。通过减小时间片能够显著降低并行应用的同步开销,并且不同类型的并行应用在运行过程中的一个共同特点是:缓存缺失和同步开销的变化存在一种此消彼长的关系,这恰好能够刻画出并行应用的特点,即计算阶段和通信阶段交替执行。利用这一特点,本发明可以根据并行应用的不同执行阶段自适应地调节虚拟机的时间片,从而更好地满足并行应用的计算和通信需求并能够显著提升其性能。
如图1所示,虚拟化环境下典型的并行应用分为两种,图1(a)为一种单虚拟机中的共享内存型多线程应用,多个线程间通过同步来对共享资源进行互斥访问;图1(b)为另一种虚拟集群中多虚拟机之间的MPI并行应用,多机上运行的进程间通过消息传递来进行同步。虚拟机监控器VMM位于物理机和客户机操作系统之间,负责管理和控制虚拟机在真实物理硬件下的运行,VMM中的vCPU调度器负责将vCPU调度到不同的物理CPU队列中,每个vCPU都以一个固定的时间片运行。本发明在原有调度器的基础上通过检测并行应用的不同执行阶段来动态调节虚拟机时间片,达到提高并行应用性能的目的。
如图2所示为本发明实施例公开的一种基于并行应用阶段检测的虚拟时间片调度方法的流程示意图,在图2所示的方法中包括以下步骤:
S1、对于每个虚拟机,采集当前采样周期T内虚拟机中各虚拟CPU的缓存缺失信息,依据缓存缺失信息统计虚拟机的缓存缺失率,其中T为第一预设值;
S2、计算虚拟机的缓存缺失率相对于虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;N优选取值为5。
S3、确定并行应用所处的执行阶段后,采取与执行阶段对应的时间片调度策略。大体上,在通信阶段降低时间片的长度,在计算阶段增加时间片的长度,使得并行应用的计算和通信需求都可以得到充分的满足。
作为一种可选的实施方式,步骤S1具体包括以下子步骤:
S1.1、对于每个虚拟机,采集当前采样周期T内虚拟机中各虚拟CPU的三级缓存缺失次数和指令执行数量,将各虚拟CPU的三级缓存缺失次数求和得到虚拟机的总体缓存缺失次数,将各虚拟CPU的指令执行数量求和得到虚拟机的总体指令执行数量;T优选为1ms。
S1.2、由公式miss_ratecurr=α×总体缓存缺失次数/总体指令执行数量,计算虚拟机在当前采样周期T内的缓存缺失率,其中α为第三预设值,α是一个伸缩常量,用来将miss_ratecurr放大到指定数量级,以避免在vCPU调度器中进行开销较大的浮点运算;α优选取值为104。
如图3所示为本发明实施例公开的一种并行应用阶段检测的流程示意图,步骤S2具体子步骤如下:
S2.1、采用滑动窗口保存虚拟机在N个历史采样周期内的采样数据,其中,采样数据包括虚拟CPU的缓存缺失次数和指令执行数量;
S2.2、根据窗口中的采样数据计算窗口的平均缓存缺失次数与平均指令执行数量,并由公式miss_ratewindow=α×平均缓存缺失次数/平均指令执行数量,计算窗口的平均缓存缺失率;
S2.3、由公式计算虚拟机在当前采样周期T内的缓存缺失率与窗口的平均缓存缺失率的相对变化;
S2.4、若δ在[1-ε,1+ε]之间,则表示并行应用进入稳定状态,则可以将窗口中的最先加入的数据移除并将新采样的数据加入窗口,并根据虚拟机在当前采样周期T内的缓存缺失率确定并行应用处于计算阶段还是通信阶段,其中ε为第四预设值,ε在本发明中可以被经验性地设定为0.3;
其中,可以采用以下方式确定并行应用处于计算阶段还是通信阶段:若miss_ratecurr大于θ,则确定并行应用处于计算阶段,若miss_ratecurr不大于θ,则确定并行应用处于通信阶段,其中θ为第五预设值,优选地,θ在本发明中为一经验值0.1%。
S2.5、若δ不在[1-ε,1+ε]之间,则表示并行应用不再处于稳定状态,将窗口中的数据全部移除并重置窗口大小。
如图4所示,当确定并行应用的具体执行阶段后就可以在不同阶段采取差异化的时间片调节策略,步骤S3的具体子步骤如下:
S3.1、若并行应用处于通信阶段,则判断上个采样周期的虚拟机时间片是否大于预设软边界;若并行应用处于计算阶段,则相对于上个采样周期线性增加(例如每次增加100ms)虚拟机时间片作为当前采样周期的虚拟机时间片;
S3.2、若上个采样周期的虚拟机时间片大于预设软边界,则相对于上个采样周期采用指数式减小方法减小虚拟机时间片作为当前采样周期的虚拟机时间片(例如,每次调节时间片都较上次减小三倍);否则,判断上个采样周期的虚拟机时间片是否大于预设硬边界;
S3.3、若上个采样周期的虚拟机时间片大于预设硬边界,则相对于上个采样周期线性减小(例如每次减小100ms)虚拟机时间片作为当前采样周期的虚拟机时间片,否则将当前采样周期的虚拟机时间片设置为预设硬边界。
由于时间片被减小到小于预设软边界时,考虑到此时应用程序可能会对缓存缺失的变化比较敏感,此时采取较为保守的时间片调节方法,线性减小虚拟机的时间片;为防止无限制地减小时间片,本发明采取预设硬边界控制时间片调节的下界;优选地,预设软边界可以被指定为1ms,预设硬边界可以被设定为0.3ms。
如图5所示为本发明实施例公开的一种功能模块图,在图5所示的系统中包括:
采样模块,用于对于每个虚拟机,采集当前采样周期T内虚拟机中各虚拟CPU的缓存缺失信息,依据缓存缺失信息统计所述虚拟机的缓存缺失率,其中T为第一预设值;
检测模块,用于计算虚拟机的缓存缺失率相对于虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;
调度模块,用于确定并行应用所处的执行阶段后,采取与执行阶段对应的时间片调度策略。
其中,采样模块、检测模块以及调度模块可以用于执行实施例1中步骤S1至S3所述的方法,具体描述详见实施例1对所述方法的描述,在此不再赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
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.一种基于并行应用阶段检测的虚拟时间片调度系统,其特征在于,包括:
采样模块,用于对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的缓存缺失信息,依据所述缓存缺失信息统计所述虚拟机的缓存缺失率,其中T为第一预设值;
检测模块,用于计算所述虚拟机的缓存缺失率相对于所述虚拟机的N个历史采样周期的平均缓存缺失率的变化率,确定所述虚拟机中运行的并行应用处于计算阶段还是通信阶段,其中,N为第二预设值;
调度模块,用于确定所述并行应用所处的执行阶段后,采取与所述执行阶段对应的时间片调度策略。
7.根据权利要求6所述的系统,其特征在于,所述采样模块包括:
第一计算模块,用于对于每个虚拟机,采集当前采样周期T内所述虚拟机中各虚拟CPU的三级缓存缺失次数和指令执行数量,将所述各虚拟CPU的三级缓存缺失次数求和得到所述虚拟机的总体缓存缺失次数,将所述各虚拟CPU的指令执行数量求和得到所述虚拟机的总体指令执行数量;
第二计算模块,用于由公式miss_ratecurr=α×总体缓存缺失次数/总体指令执行数量,计算所述虚拟机在当前采样周期T内的缓存缺失率,其中α为第三预设值。
8.根据权利要求7所述的系统,其特征在于,所述检测模块包括:
存储模块,用于采用滑动窗口保存所述虚拟机在N个历史采样周期内的采样数据,其中,所述采样数据包括虚拟CPU的缓存缺失次数和指令执行数量;
第三计算模块,用于根据所述窗口中的采样数据计算所述窗口的平均缓存缺失次数与平均指令执行数量,并由公式miss_ratewindow=α×平均缓存缺失次数/平均指令执行数量,计算所述窗口的平均缓存缺失率;
第四计算模块,用于由公式计算所述虚拟机在当前采样周期T内的缓存缺失率与所述窗口的平均缓存缺失率的相对变化;
检测子模块,用于在δ在[1-ε,1+ε]之间时,表示所述并行应用进入稳定状态,并根据所述虚拟机在当前采样周期T内的缓存缺失率确定所述并行应用处于计算阶段还是通信阶段,其中ε为第四预设值;
重置模块,用于在δ不在[1-ε,1+ε]之间时,表示所述并行应用不再处于稳定状态,将所述窗口中的数据全部移除并重置所述窗口大小。
9.根据权利要求8所述的系统,其特征在于,所述检测子模块,具体用于在δ在[1-ε,1+ε]之间时,表示所述并行应用进入稳定状态,若miss_ratecurr大于θ,则确定所述并行应用处于计算阶段,若miss_ratecurr不大于θ,则确定所述并行应用处于通信阶段,其中θ为第五预设值。
10.根据权利要求9所述的系统,其特征在于,所述调度模块包括:
第一判断模块,用于在所述并行应用处于通信阶段时,判断上个采样周期的虚拟机时间片是否大于预设软边界;
第一调度子模块,用于在所述并行应用处于计算阶段时,相对于上个采样周期线性增加虚拟机时间片作为当前采样周期的虚拟机时间片;
第二调度子模块,用于在上个采样周期的虚拟机时间片大于所述预设软边界时,相对于上个采样周期采用指数式减小方法减小虚拟机时间片作为当前采样周期的虚拟机时间片;
第二判断模块,用于在上个采样周期的虚拟机时间片不大于所述预设软边界时,判断上个采样周期的虚拟机时间片是否大于预设硬边界;
第三调度子模块,用于在上个采样周期的虚拟机时间片大于所述预设硬边界时,相对于上个采样周期线性减小虚拟机时间片作为当前采样周期的虚拟机时间片,否则将当前采样周期的虚拟机时间片设置为所述预设硬边界。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710290453.6A CN107193631B (zh) | 2017-04-28 | 2017-04-28 | 一种基于并行应用阶段检测的虚拟时间片调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710290453.6A CN107193631B (zh) | 2017-04-28 | 2017-04-28 | 一种基于并行应用阶段检测的虚拟时间片调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107193631A true CN107193631A (zh) | 2017-09-22 |
CN107193631B CN107193631B (zh) | 2019-09-13 |
Family
ID=59872214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710290453.6A Active CN107193631B (zh) | 2017-04-28 | 2017-04-28 | 一种基于并行应用阶段检测的虚拟时间片调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193631B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109614A (zh) * | 2019-03-22 | 2019-08-09 | 浙江工商大学 | 面向pram/dram混合内存的基于概率的数据迁移方法 |
CN110188026A (zh) * | 2019-05-31 | 2019-08-30 | 龙芯中科技术有限公司 | 快表缺失参数的确定方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993764B2 (en) * | 2000-06-30 | 2006-01-31 | The Regents Of The University Of California | Buffered coscheduling for parallel programming and enhanced fault tolerance |
CN102156665A (zh) * | 2011-04-13 | 2011-08-17 | 杭州电子科技大学 | 一种虚拟化系统竞争资源差异化服务方法 |
CN103257923A (zh) * | 2013-04-16 | 2013-08-21 | 中国科学院计算技术研究所 | 数据中心数据分析类基准测试程序的应用选取方法及系统 |
CN103562870A (zh) * | 2011-05-11 | 2014-02-05 | 超威半导体公司 | 异构核心的自动加载平衡 |
US20150185816A1 (en) * | 2013-09-23 | 2015-07-02 | Cornell University | Multi-core computer processor based on a dynamic core-level power management for enhanced overall power efficiency |
-
2017
- 2017-04-28 CN CN201710290453.6A patent/CN107193631B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993764B2 (en) * | 2000-06-30 | 2006-01-31 | The Regents Of The University Of California | Buffered coscheduling for parallel programming and enhanced fault tolerance |
CN102156665A (zh) * | 2011-04-13 | 2011-08-17 | 杭州电子科技大学 | 一种虚拟化系统竞争资源差异化服务方法 |
CN103562870A (zh) * | 2011-05-11 | 2014-02-05 | 超威半导体公司 | 异构核心的自动加载平衡 |
CN103257923A (zh) * | 2013-04-16 | 2013-08-21 | 中国科学院计算技术研究所 | 数据中心数据分析类基准测试程序的应用选取方法及系统 |
US20150185816A1 (en) * | 2013-09-23 | 2015-07-02 | Cornell University | Multi-core computer processor based on a dynamic core-level power management for enhanced overall power efficiency |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109614A (zh) * | 2019-03-22 | 2019-08-09 | 浙江工商大学 | 面向pram/dram混合内存的基于概率的数据迁移方法 |
CN110109614B (zh) * | 2019-03-22 | 2022-02-18 | 浙江工商大学 | 面向pram/dram混合内存的基于概率的数据迁移方法 |
CN110188026A (zh) * | 2019-05-31 | 2019-08-30 | 龙芯中科技术有限公司 | 快表缺失参数的确定方法及装置 |
CN110188026B (zh) * | 2019-05-31 | 2023-05-12 | 龙芯中科技术股份有限公司 | 快表缺失参数的确定方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107193631B (zh) | 2019-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109923523B (zh) | 计算机系统及用于计算机系统的方法 | |
CN102236582B (zh) | 虚拟化集群负载在多台物理机中均衡分配的方法 | |
US20160378545A1 (en) | Methods and architecture for enhanced computer performance | |
Hedayati et al. | {Multi-Queue} Fair Queuing | |
CN104679593B (zh) | 一种基于smp系统的任务调度优化方法 | |
US9588809B2 (en) | Resource-based scheduler | |
CN101694631B (zh) | 实时作业调度系统及方法 | |
CN102253857B (zh) | 一种多核环境下的Xen虚拟机调度控制方法 | |
US9286127B2 (en) | Method for allocating processor resources precisely by means of predictive scheduling based on current credits | |
US20060206635A1 (en) | DMA engine for protocol processing | |
CN102521047B (zh) | 实现多核处理器间中断负载均衡的方法 | |
CN105955796B (zh) | 一种云平台上高性能并行应用的调度方法及系统 | |
Dice | Malthusian locks | |
CN104850461A (zh) | 一种面向numa架构的虚拟cpu调度优化方法 | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
US20170031708A1 (en) | System and Method for Multithreaded Processing | |
CN107193631A (zh) | 一种基于并行应用阶段检测的虚拟时间片调度方法及系统 | |
US20170083382A1 (en) | Power-aware work stealing | |
AU2007261607B2 (en) | Resource-based scheduler | |
CN103677997A (zh) | 多核心装置以及其多线程调度方法 | |
CN108196939B (zh) | 用于云计算的虚拟机智能管理方法及装置 | |
CN103729242B (zh) | 一种自旋锁抢占调度算法选择方法及装置 | |
CN104866370B (zh) | 一种云计算环境下面向并行应用的动态时间片调度方法及系统 | |
Cui et al. | Lock-contention-aware scheduler: A scalable and energy-efficient method for addressing scalability collapse on multicore systems | |
Li et al. | Affinity-aware dynamic pinning scheduling for virtual machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |