发明名称 基于CPU亲和力的虚拟CPU动态绑定方法
摘要 一种在多核/众核平台下的基于CPU亲和力的虚拟CPU动态绑定方法,其包括客户操作系统CPU亲和力感知引擎和虚拟CPU动态绑定器两个模块。客户操作系统CPU亲和力感知引擎从Guest OS中获取即将得到执行的进程的CPU亲和力信息,并采用量化的VAC(Valueof Affinity Coefficient,CPU亲和力系数值),向虚拟CPU动态绑定器提供该信息;虚拟CPU动态绑定器模块通过客户操作系统CPU亲和力感知引擎提供的CPU亲和力信息,执行相应策略,实现对虚拟CPU实现动态绑定。
申请公布号 CN101976201B 申请公布日期 2013.07.24
申请号 CN201010522105.5 申请日期 2010.10.22
申请人 北京航空航天大学 发明人 白跃彬;李智
分类号 G06F9/455(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 代理人
主权项 1.一种多核/众核平台下的基于CPU亲和力的虚拟CPU动态绑定方法,其特征在于包括以下步骤:(1)客户机操作系统CPU亲和力感知引擎从客户机操作系统中获取即将执行的进程的CPU亲和力信息,并用CPU亲和力系数值VAC量化该CPU亲和力信息,向虚拟CPU动态绑定器提供该VAC值,具体包括CPU亲和力信息捕获、CPU亲和力信息分析和虚拟CPU信息修改三个步骤,其中:1)CPU亲和力信息捕获包括CPU硬亲和力信息捕获和CPU软亲和力信息捕获:通过捕获CR3寄存器被修改这一时刻,立即读取进程描述符地址,并通过虚拟地址到机器地址的转换,读取即将执行的进程信息,利用CPU硬亲和力信息在进程结构体中的偏移量,来获取CPU的硬亲和力信息,如果此时该进程对CPU硬亲和力进行了设定,即CPU硬亲和力信息不为空,那么CPU硬亲和力信息捕获完成,如果此时CPU硬亲和力信息为空,则进行CPU软亲和力信息捕获,CPU软亲和力信息是通过在进程执行过程中统计该进程的CPU实际利用情况来完成的,具体包括CPU执行时间和CPU占用时间,其中CPU执行时间指进程实际使用的CPU时间,CPU占用时间指调度器调度给该进程的时间,CPU执行时间与CPU占用时间均针对在一个调度周期内的相应统计数值;2)CPU的亲和力信息分析中针对CPU亲和力信息捕获情况来设定VAC的数值,对于CPU硬亲和力信息不为空的情况,令VAC=100,对于CPU硬亲和力信息为空的情况,根据以下公式来计算VAC的数值:<img file="FDA00002560679200011.GIF" wi="635" he="134" />3)虚拟CPU信息修改中向虚拟CPU动态绑定器提供VAC信息,其中通过修改Xen代码中虚拟CPU的数据结构,添加结构体,该结构体存储当前VAC的值,同时还记录1秒内的调度周期的各个VAC数值,当新进程到来尚未执行并且其硬亲和力信息为空时,通过计算历史数据的平均值向虚拟CPU动态绑定器提供VAC信息;(2)虚拟CPU动态绑定器通过客户机操作系统CPU亲和力感知引擎提供的CPU亲和力信息,对虚拟CPU实现动态绑定,具体包括虚拟CPU绑定决策分析和执行虚拟CPU绑定策略两个步骤,其中:1)虚拟CPU绑定决策分析中,读取VAC值,通过VAC的数值进行绑定决策判定:在VAC大于75时,判定为可绑定,在VAC小于等于75时,判定为不绑定;2)执行虚拟CPU的绑定策略中,根据虚拟CPU的绑定决策分析结果对相应的虚拟CPU进 行绑定和迁移,当虚拟CPU绑定决策分析结果为不绑定时,如果虚拟CPU处于绑定状态,则执行相应解除绑定策略,如果虚拟CPU此时处于非绑定状态,则不进行任何绑定和迁移;当虚拟CPU绑定决策分析结果为可绑定时,执行相应绑定策略;其中虚拟CPU的绑定策略具体为:1)绑定到未发生虚拟CPU绑定的CPU上;2)根据各CPU运转情况,绑定在负载较轻的CPU上;3)各CPU负载较为均衡时,绑定在虚拟CPU所处队列对应的CPU上;4)解除绑定时,虚拟CPU不迁移;5)当虚拟CPU绑定数目等于CPU个数时,对于下次绑定之前,将VAC最低的虚拟CPU的绑定解除;6)空闲状态的虚拟CPU不进行任何绑定操作,当虚拟CPU从其它状态进入空闲状态时,如果该虚拟CPU被绑定,则解除其绑定。
地址 100191 北京市海淀区学院路37号