《基于CPU亲和力的虚拟CPU动态绑定方法.pdf》由会员分享,可在线阅读,更多相关《基于CPU亲和力的虚拟CPU动态绑定方法.pdf(10页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN101976201A43申请公布日20110216CN101976201ACN101976201A21申请号201010522105522申请日20101022G06F9/455200601G06F9/4620060171申请人北京航空航天大学地址100191北京市海淀区学院路37号72发明人白跃彬李智54发明名称基于CPU亲和力的虚拟CPU动态绑定方法57摘要一种在多核/众核平台下的基于CPU亲和力的虚拟CPU动态绑定方法,其包括客户操作系统CPU亲和力感知引擎和虚拟CPU动态绑定器两个模块。客户操作系统CPU亲和力感知引擎从GUESTOS中获取即将得到执行的进程的CPU亲。
2、和力信息,并采用量化的VACVALUEOFAFFINITYCOEFFICIENT,CPU亲和力系数值,向虚拟CPU动态绑定器提供该信息;虚拟CPU动态绑定器模块通过客户操作系统CPU亲和力感知引擎提供的CPU亲和力信息,执行相应策略,实现对虚拟CPU实现动态绑定。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书4页附图3页CN101976206A1/2页21一种多核/众核平台下的基于CPU亲和力的虚拟CPU动态绑定方法,其特征在于包括以下步骤1客户机操作系统CPU亲和力感知引擎从客户机操作系统中获取即将执行的进程的CPU亲和力信息,并用CPU亲和力系数值VAC。
3、量化该CPU亲和力信息,向虚拟CPU动态绑定器提供该VAC值,具体包括CPU亲和力信息捕获、CPU亲和力信息分析和虚拟CPU信息修改三个步骤,其中1CPU亲和力信息捕获包括CPU硬亲和力信息捕获和CPU软亲和力信息捕获通过捕获CR3寄存器被修改这一时刻,立即读取进程描述符地址,并通过虚拟地址到机器地址的转换,读取即将执行的进程信息,利用CPU硬亲和力信息在进程结构体中的偏移量,来获取CPU的硬亲和力信息,如果此时该进程对CPU硬亲和力进行了设定,即CPU硬亲和力信息不为空,那么CPU硬亲和力信息捕获完成,如果此时CPU硬亲和力信息为空,则进行CPU软亲和力信息捕获,CPU软亲和力信息是通过在进。
4、程执行过程中统计该进程的CPU实际利用情况来完成的,具体包括CPU执行时间和CPU占用时间,其中CPU执行时间指进程实际使用的CPU时间,CPU占用时间指调度器调度给该进程的时间,CPU执行时间与CPU占用时间均针对在一个调度周期内的相应统计数值;2CPU的亲和力信息分析中针对CPU亲和力信息捕获情况来设定VAC的数值,对于CPU硬亲和力信息不为空的情况,令VAC100,对于CPU硬亲和力信息为空的情况,根据以下公式来计算VAC的数值3虚拟CPU信息修改中向虚拟CPU动态绑定器提供VAC信息,存储当前VAC的值,同时还记录1秒内的调度周期的各个VAC数值,当新进程到来尚未执行并且其硬亲和力信息。
5、为空时,通过计算历史数据的平均值向虚拟CPU动态绑定器提供VAC信息;2虚拟CPU动态绑定器通过客户机操作系统CPU亲和力感知引擎提供的CPU亲和力信息,对虚拟CPU实现动态绑定,具体包括虚拟CPU绑定决策分析和执行虚拟CPU绑定策略两个步骤,其中1虚拟CPU绑定决策分析中,读取VAC值,通过VAC的数值进行绑定决策判定在VAC大于75时,判定为可绑定,在VAC小于等于75时,判定为不绑定;2执行虚拟CPU的绑定策略中,根据虚拟CPU的绑定决策分析结果对相应的虚拟CPU进行绑定和迁移,当虚拟CPU绑定决策分析结果为不绑定时,如果虚拟CPU处于绑定状态,则执行相应解除绑定策略,如果虚拟CPU此时。
6、处于非绑定状态,则不进行任何绑定和迁移;当虚拟CPU绑定决策分析结果为可绑定时,执行相应绑定策略。2如权利要求1所述的方法,其特征在于,VAC的取值区间为0,100的闭区间,VAC值越大代表CPU亲和力程度越高。3如权利要求1所述的方法,其特征在于,客户机操作系统CPU亲和力感知引擎在统计进程的CPU实际利用情况时,通过统计该进程在本次调度周期内时实际使用的CPU时间和调度器调度给该进程的CPU时间来完成。4如权利要求1所述的方法,其特征在于,虚拟CPU动态绑定器中虚拟CPU的绑定策略具体为权利要求书CN101976201ACN101976206A2/2页31绑定到未发生虚拟CPU绑定的CPU。
7、上;2根据各CPU运转情况,绑定在负载较轻的CPU上;3各CPU负载较为均衡时,绑定在虚拟CPU所处队列对应的CPU上;4解除绑定时,虚拟CPU不迁移;5当虚拟CPU绑定数目等于CPU个数时,对于下次绑定之前,将VAC最低的虚拟CPU的绑定解除;6空闲状态的虚拟CPU不进行任何绑定操作,当虚拟CPU从其它状态进入空闲状态时,如果该虚拟CPU被绑定,则解除其绑定。5如权利要求1所述的方法,其特征在于,客户机操作系统是LINUX。6如权利要求1所述的方法,其特征在于,虚拟机监视器是XEN。7一种系统,其执行如权利要求1所述的方法步骤。权利要求书CN101976201ACN101976206A1/4。
8、页4基于CPU亲和力的虚拟CPU动态绑定方法技术领域0001本发明涉及计算机科学中的在多核和众核环境下的虚拟机领域,特别是基于CPU亲和力的虚拟CPU的动态绑定方法。背景技术0002虚拟化技术是一种利用单个物理平台虚拟多个客户机操作系统GUESTOS的技术。随着虚拟化和多核以及众核技术的发展,同一平台上多服务器之间实现了透明化,同时虚拟机监视器VIRTUALMACHINEMONITOR,VMM在硬件管理上的不断优化,使得硬件资源得以充分利用。多核和众核平台为虚拟化带来了性能提升、可靠性提高以及全新的应用模式,同时以英特尔和AMD为代表的硬件级别的虚拟化技术能够支持效率更高、性能更优化的本机虚拟。
9、化能力。多核与众核技术的兴起,为虚拟化技术的发展带来了新的机遇和挑战。XEN、KVM以及VMWARE作为当前主流虚拟化技术,在服务器整合、资源优化、能量控制等方面具有一定贡献。随着虚拟化技术应用的广泛,云计算和高性能计算已经逐步在采取相应的虚拟化技术。其中,XEN作为当前流行的开源项目已经在虚拟化的实现上有较大的共享。同时虚拟化技术还在虚拟集群领域也有着广阔的利用前景。0003在上述应用场景中,由于多核处理器和多处理器的广泛应用,如何合理的分配使用CPU资源是调度面临严重的问题。虚拟化技术使得客户机操作系统不可直接访问硬件资源,以CPU资源为例,虚拟机监控器需要向客户机操作系统提供虚拟CPUV。
10、IRTUALCPU,VCPU,使得其系统内的调度器完成调度。因此,对于运行在上层虚拟机的进程来说,其执行过程经过了两次调度。第一次是虚拟机操作系统本身的调度器,该算法可有效分析进程特性并进行相应的高效调度;第二次是虚拟机监视器的调度器,负责整合多客户机操作系统间的CPU资源的分配,由于其调度单位为虚拟CPU,对虚拟机操作系统的进程信息不可知,因此基于下层硬件资源的公平分配方式使得某些进程不能得到有效执行。以XEN虚拟机默认的CREDIT调度器为例,尽管其在对称多处理器SYMMETRICALMULTIPROCESSORS,SMP平台下具有较高的适应性,可有效提高CPU利用率,但是由于其调度单位为。
11、虚拟CPU,缺乏对虚拟CPU内的进程属性的认知,因此在客户机操作系统的调度器针对进程属性的调度策略,无法在虚拟机监视器这一层的调度器中实现。特别是对于CPU密集型的多线程进程,由于其频繁访问内存中的数据使得CPU二级缓存的命中率成为其执行效率的瓶颈,而CREDIT调度器在调度时不对虚拟CPU进行客户机操作系统的区分,以及无法获取其进程特性,因此这种情况下的盲目调度将较大的降低CPU二级缓存命中率,从而影响系统整体效率。0004传统的CPU亲和力分为硬亲和力和软亲和力,硬亲和力的进程主要是指由用户或操作系统硬性绑定在某CPU队列中的进程,软亲和力是操作系统固有的亲和力特性,特别是对于频繁读取数据。
12、的计算密集型进程而言,其在CPU之间的迁移会造成较大的性能开销,而操作系统可有效防止这种开销。而在虚拟化环境下,虚拟机监视器中的调度器无法根据虚拟CPU上进程的CPU亲和力特性进行调度优化,因此,一种从虚拟机监视器层获取客户机操作系统进程信息并且采取相应策略的调度方法是十分必要的。说明书CN101976201ACN101976206A2/4页5发明内容0005本发明以实现虚拟机进程高效运行为目标,通过CPU亲和力的感知和虚拟CPU动态绑定,设计并实现了基于CPU亲和力的虚拟CPU动态绑定方法,具体包括00061客户机操作系统中进程的CPU亲和力感知方法。0007首先,将客户机操作系统中的进程信。
13、息进行捕获,通过获取进程地址描述符,来获取CPU硬亲和力信息;通过统计进程实际的CPU时间与CPU占用时间,获取CPU软亲和力信息。0008其次,分析CPU硬亲和力信息和软亲和力信息,设定CPU亲和力系数值VALUEOFAFFINITYCOEFFICIENT,VAC。0009最后,修改XEN代码中虚拟CPU的数据结构,添加结构体PIPROCESSINFORMATION,用于存储所捕获进程的相关信息。00102虚拟CPU动态绑定方法0011利用虚拟CPU中PI信息完成虚拟CPU绑定决策分析,分析过程包括对VAC的分析和判定;制定虚拟CPU绑定策略,针对虚拟CPU中PI信息的分析结果,实现虚拟CP。
14、U的动态绑定。0012与现有技术相比较,本发明的创新之处在于针对客户机操作系统中正在执行的进程,提出一种CPU亲和力系数的量化方法,用于标识该进程对CPU二级缓存的依赖程度;根据AC值,采取基于CPU亲和力的虚拟CPU绑定策略,从而保证CPU密集型进程所在CPU访问二级缓存的命中率,提高进程执行效率。具体体现在00131本发明实现了在虚拟机监视器层对客户机操作系统的进程的捕获,通过统计该进程所在虚拟CPU上的CPU实际使用情况和CPU占用情况,实现了一种CPU亲和力系数的量化方法。00142本发明实现了一种基于上述CPU亲和力系数的虚拟CPU绑定方法,打破了在迁移时优先选择CPU队头的虚拟CP。
15、U这一传统思想,而是在保持负载平衡的前提下,选择迁移所造成的性能开销最小的虚拟CPU。附图说明0015图1基于CPU亲和力的虚拟CPU动态绑定方法的体系结构0016图2CPU亲和力系数的捕获与量化流程图0017图3虚拟CPU动态绑定方法流程图0018图4虚拟CPU执行绑定决策的调度器与传统调度器在迁移时的对比图具体实施方式0019如图1所示,基于CPU亲和力的虚拟CPU动态绑定方法在虚拟机监控器VMM中实现,分为客户机操作系统CPU亲和力感知引擎和虚拟CPU动态绑定器2个模块。0020客户机操作系统CPU亲和力感知引擎负责从客户机操作系统中获取即将得到执行的进程的CPU亲和力信息,并采用量化的。
16、VACVALUEOFAFFINITYCOEFFICIENT,CPU亲和力系数值,向虚拟CPU动态绑定器模块提供该信息。包括CPU亲和力信息捕获、CPU亲说明书CN101976201ACN101976206A3/4页6和力信息分析和虚拟CPU信息修改三个部分。0021CPU亲和力信息捕获分为CPU硬亲和力捕获和CPU软亲和力信息捕获两部分。在虚拟机中,进程切换需要更新CR3寄存器内容,而由于客户机操作系统没有修改CR3寄存器的特权,因此这部分工作由虚拟机监视器来完成。如图2所示,在虚拟机监视器层通过捕获CR3寄存器被修改这一时刻,立即读取进程描述符地址,通过虚拟地址到机器地址的转换,读取即将执行。
17、的进程信息,利用CPU硬亲和力信息在进程结构体中的偏移量,来获取CPU的硬亲和力信息。不同的LINUX版本对应的该偏移量不同,因此该偏移量需要根据客户机操作系统的内核版本进行调整。如果此时该进程对CPU硬亲和力进行了设定,即完成CPU硬亲和力的捕获,无需再进行CPU软亲和力捕获过程;如果此时CPU硬亲和力信息为空,则在该进程执行过程中,通过统计该进程的CPU实际使用情况来完成CPU软亲和力信息捕获。CPU实际使用情况的统计方法通过在虚拟CPU数据结构中为每个执行的进程设定计时器。对于I/O访问频繁的进程,在其执行时间内所消耗CPU时间较少;对于CPU密集的进程,其可充分利用执行时间内的CPU资。
18、源。因此,通过统计该进程在本次调度周期内占有CPU时间与实际使用的CPU时间,来提供CPU软亲和力信息。其中CPU执行时间指进程实际使用的CPU时间,CPU占用时间指调度器调度给该进程的时间,CPU执行时间与CPU占用时间均针对在一个调度周期内的相应统计数值。0022CPU的亲和力信息分析负责针对CPU亲和力信息捕获情况来设定VAC的数值。VACVALUEOFAFFINITYCOEFFICIENT指CPU亲和力系数值,其值被设定在0,100的闭区间内。对于CPU硬亲和力信息不为空的情况,令VAC100;对于CPU硬亲和力信息为空的情况,根据CPU亲和力捕获中统计的CPU执行时间来计算VAC的数。
19、值。具体公式为00230024虚拟CPU信息修改负责向虚拟CPU动态绑定器模块提供VAC信息。具体实现为,通过修改XEN代码中虚拟CPU的数据结构,添加结构体PIPROCESSINFORMATION,该结构用于存储当前VAC的值,同时还负责记录最近1S内的所有调度周期中的各个VAC数值,当新进程到来尚未执行并且其硬亲和力信息为空时,由于无法计算此时的VAC,因此可通过计算历史数据的平均值向虚拟CPU动态绑定器提供VAC信息。0025虚拟CPU动态绑定器模块通过客户机操作系统CPU亲和力感知引擎提供的CPU亲和力信息,对虚拟CPU实现动态绑定。具体分为虚拟CPU绑定决策分析和虚拟CPU绑定策略两。
20、部分。0026虚拟CPU绑定决策分析负责读取虚拟CPU中的PI信息,将VAC提取出来,通过VAC的数值进行绑定决策判定。在VAC大于75时,判定为可绑定;在VAC小于等于75时,判定为不绑定。通过实验分析,这种情况下,整体调度性能最优,因此选择此判定策略进行虚拟CPU绑定决策分析。0027虚拟CPU的绑定策略负责根据虚拟CPU的绑定信息对相应的虚拟CPU进行绑定和迁移。当虚拟CPU绑定决策分析结果为不绑定时,如果虚拟CPU处于绑定状态,则执行相应解除绑定策略,如果虚拟CPU此时处于非绑定状态,则不进行任何绑定和迁移;当虚拟CPU绑定决策分析结果为可绑定时,执行相应绑定策略。具体策略如下说明书C。
21、N101976201ACN101976206A4/4页700281绑定到未发生虚拟CPU绑定的CPU上;00292根据各CPU运转情况,绑定在负载较轻的CPU上;00303各CPU负载较为均衡时,绑定在虚拟CPU所处队列对应的CPU上;00314解除绑定时,虚拟CPU不迁移;00325当虚拟CPU绑定数目等于CPU个数时,对于下次绑定之前,将VAC最低的虚拟CPU的绑定解除;00336空闲状态的虚拟CPU不进行任何绑定操作,当虚拟CPU从其它状态进入空闲状态时,如果该虚拟CPU被绑定,则解除其绑定。0034虚拟CPU的迁移策略旨在减少CPU二级缓存的失效率,提高CPU利用效率。因此对于VAC较。
22、高的虚拟CPU,其频繁的访问CPU二级缓存突显绑定的必要性。策略1通过防止两个VAC较高的虚拟CPU在同一CPU队列中,从而避免两个虚拟CPU轮流执行而导致CPU二级缓存的频繁失效;策略2通过在绑定时考虑负载情况,从而保证了CPU之间的负载平衡;策略3在负载平衡均衡时,避免迁移的开销,优先将虚拟CPU绑定在本地队列中;策略4通过在解除绑定时避免虚拟CPU迁移从而进一步减少了迁移开销;策略5保证了任意时刻虚拟CPU绑定的数量不大于CPU数量,结合策略1避免了多个绑定虚拟CPU在同一CPU队列从而带来的CPU二级缓存频繁失效问题,并进一步保证了负载平衡。策略6考虑到虚拟CPU的状态转换时的绑定解除。
23、问题,确保了空闲的虚拟CPU不会绑定。0035根据以上策略,虚拟CPU动态绑定流程如图3所示。首先根据虚拟CPU绑定决策分析结果来判定该虚拟CPU是否需要绑定。如果该虚拟CPU不可绑定,那么继续判断该虚拟CPU是否已经被绑定,如果是,则解除其绑定并结束,如果否,则直接结束。如果该虚拟CPU可绑定,则继续判断该虚拟CPU是否已经绑定。如果是,则直接结束,如果否,则从所有的CPU队列中选择没有绑定虚拟CPU的CPU,并将此类型的CPU数目分为三种情况数目等于0,这表明所有CPU存在虚拟CPU绑定的情况,按照策略,选择VAC值最小的虚拟CPU,并解除其绑定,然后将需要绑定的该虚拟CPU绑定至解除绑定。
24、的虚拟CPU所在的CPU队列上并结束;数目等于1,则直接绑定在该CPU上并结束;数目大于1,则根据CPU队列中虚拟CPU个数,选择虚拟CPU个数最少的CPU队列,如果虚拟CPU个数最少的CPU队列有多个的情况,则首先判定虚拟CPU所在CPU是否处于其中,如果是,则直接绑定到该CPU队列中并结束,如果否,按照CPU的ID优先选择ID小的CPU,然后将虚拟CPU绑定到该队列中并结束,如果虚拟CPU个数最少的CPU队列只有一个,则直接将虚拟CPU绑定到该队列中并结束。0036以上过程在调度每个虚拟CPU时执行,每个调度周期执行一次。另外,由于调度期间调度器只针对非空闲的虚拟CPU进行调度,因此为保证。
25、策略6的执行,在虚拟CPU进入空闲状态时,进行判定,对于处于绑定状态的虚拟CPU,解除绑定;对于非绑定的虚拟CPU,不进行额外操作。0037图4是基于CPU亲和力的虚拟CPU动态绑定方法与传统的调度方法在迁移时的区别对比。传统的调度策略图4中的A在迁移时选择其它CPU的队列中的第一个虚拟CPU;通过本发明中的两个模块进行判定并绑定了虚拟CPUY1之后当需要迁移图4中的B时,优先选择未绑定的虚拟CPU,如图4B中的虚拟CPUX1。说明书CN101976201ACN101976206A1/3页8图1图2说明书附图CN101976201ACN101976206A2/3页9图3说明书附图CN101976201ACN101976206A3/3页10图4说明书附图CN101976201A。