[发明专利]一种基于多核动态划分的非对称虚拟机I/O调度方法无效
申请号: | 200910238087.5 | 申请日: | 2009-11-20 |
公开(公告)号: | CN101706742A | 公开(公告)日: | 2010-05-12 |
发明(设计)人: | 张炯;龙翔;胡彦彦;高小鹏;白跃斌 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/455 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 李有浩 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 多核 动态 划分 对称 虚拟机 调度 方法 | ||
1.一种基于多核动态划分的非对称虚拟机I/O调度方法,其特征在于,该方法在现有虚拟 机监视器中加入了四个模块:I/O调度初始化模块、I/O状态监控与信息处理模块、调度决 策模块和多核动态划分模块,具体步骤如下:
步骤1:初始化;系统启动时I/O调度初始化模块加载,记录设备前后端驱动模块连接 建立时的I/O环与事件通道信息,随后分配I/O运行时参数信息收集所需的内存缓冲区,设 定多核划分进入和退出决策条件,并规划处理器集划分使用形式,之后系统开始运行并进入 正常调度状态;所述的步骤1包括如下具体步骤:
步骤1.1,设备前后端连接建立时I/O环与事件通道信息记录:
客户Domain启动时,VMM负责在设备前端驱动模块与设备后端驱动模块之间建立起 虚拟设备通道,该虚拟设备通道包含I/O环和事件通道两个部分,其中I/O环用于存储来自 设备前端驱动模块的I/O请求,以及来自设备后端驱动模块的I/O应答;而事件通道则被用 来通知虚拟设备通道另一端的模块当前有I/O事件需要进行处理;虚拟机系统中,I/O环以 共享内存的方式同时映射到驱动Domain和客户Domain的地址空间中,该映射过程由 VMM负责完成;I/O调度初始化模块会记录虚拟设备通道建立时,连接驱动Domain和客 户Domain之间的事件通道标号,从而跟踪各类I/O请求和应答事件的发生,并记录相关的 时间和事件类型信息;其中,客户Domain代表客户域、驱动Domain代表驱动域、VMM 代表虚拟机监视器;
步骤1.2,I/O运行时参数信息收集缓冲区分配:
该缓冲区分配于VMM的地址空间内,由I/O状态监控与信息处理模块使用,记录设备 相关的运行时参数,包括I/O事件类型,时间戳信息,事件计数信息,默认大小为64K;
步骤1.3,多核划分进入和退出决策条件设定:
该决策条件由调度决策模块使用,用来判定当前是否需要执行多核动态划分或恢复操作, 决策条件以I/O事件频率作为判定参数,包含多核划分进入阈值T1及多核划分退出阈值T2, T1、T2的设置取决于实际负载运行时,I/O请求事件的发生频率,该数值应在系统使用前进 行测定,T1的设置应略低于典型I/O应用的请求事件频率,T2设定为T1/2,I/O状态监控 与信息处理模块提供系统运行时的I/O事件频率测试结果;
步骤1.4,处理器集划分使用形式规划:
处于多核划分调度状态时,系统所有的处理器核被划分为三个子集,包括Driver Core、 Fasttick Core和General Core,其中Driver Core与Fasttick Core的数量能够进行设置, 最低为1个,剩余的处理器核属于General Core,Driver Core和Fasttick Core的数量配 置取决于实际I/O任务的负载情况,其中,Driver Core代表驱动域专用核、Fasttick Core 代表高频时钟核、General Core代表通用处理器核;
步骤2:参数收集与处理;系统运行时,I/O状态监控与信息处理模块中的I/O状态监 控子模块动态采集设备相关的状态参数,包括I/O事件类型,时间戳信息,事件计数信息, 并将原始数据放入缓冲区,随后I/O状态监控与信息处理模块中的I/O信息处理子模块对缓 冲区内的数据进行分类和处理,记录当前系统各类I/O事件的比率,平均耗时及系统总体I/O 事件的频率;
步骤3:运行时参数设置与调度决策判定;调度决策模块周期性的读取I/O信息处理子 模块的处理结果,设置运行时的调度参数,并分析系统当前的I/O状态,根据预设条件做出 判定,当满足多核动态划分进入条件时,向多核动态划分模块发出指令,执行步骤4,当满 足多核动态划分退出条件时,向多核动态划分模块发出指令,执行步骤5,当两者都不满足 时,保持系统当前运行状态不变;所述的步骤3包括如下具体步骤:
步骤3.1,运行时参数设置:
调度决策模块每隔250ms从I/O状态监控与信息处理模块处获取一次该时间段内I/O 应答事件的发生频率,并依此计算出I/O应答事件发生的平均时间间隔,随后将其记录在全 局量t_fasttick中,当系统处于多核划分调度状态时,该值被用来设定Fasttick Core的tick 时钟周期Tfasttick,为保证各个VCPU调度时其credit能够正确计算,Tfasttick的精度单位及最 小取值为0.1ms;其中,VCPU代表虚拟CPU、credit代表信用值;
步骤3.2,调度决策判定:
调度决策模块每隔250ms读取一次I/O请求事件发生频率,若连续4个周期,其频率 都超过多核划分进入阈值T1,且系统当前处于正常调度状态,则执行动态划分操作;若连续 2个周期低于多核划分退出阈值T2,且系统当前处于多核划分调度状态,则执行恢复操作, 解除动态划分并恢复系统至正常调度状态;若多核动态划分退出进入条件均不符合,则保持 当前系统运行状态;
步骤4:多核动态划分;多核动态划分模块接收调度决策模块的指令,执行多核划分操 作,使系统由正常调度状态进入多核划分调度状态;所述的步骤4包括如下具体步骤:
步骤4.1,驱动Domain与Driver Core绑定:
虚拟机系统以VCPU为单位对驱动Domain和客户Domain的各个Domain进行调度, 每个Domain在创建时拥有固定数量的VCPU,当某个Domain被调度时,其VCPU被加 载到实际的物理CPU之上执行;当系统软中断SOFTIRQ_SCHEDULE触发并被响应时, 虚拟机系统主调度函数schedule被调用,并从当前处理器的调度队列中选择下一个应当被 调度的VCPU,随后执行调度切换;多核动态划分模块首先检查全局标志BoundFlag是否 置位,以判断当前是否处于驱动Domain绑定的调度状态,如果全局标志BoundFlag被置 位,则检查处理器核的编号是否符合指定配置为Driver Core的数值,如果符合,则让其始 终调度驱动Domain的VCPU;当全局标志BoundFlag未被置位时,则采用正常的调度策 略;全局标志BoundFlag的置位与清除由调度决策模块完成,每当当前系统I/O状态符合 多核动态划分进入或退出条件时,调度决策模块便对全局标志BoundFlag进行相应的修改 操作,标志修改和实际调度切换中间会存在一定的延迟,但该延迟最长不会超过3个tick时 钟周期;
步骤4.2,Fasttick Core分离与非对称调度时钟设定:
在虚拟机系统中,主调度函数schedule和实际调度器间的联系通过结构化的跳转表实 现,对于系统默认的credit调度算法来说即为定义于sched_credit.c函数中的全局结构体 sched_credit_def,该结构体中提供了VCPU初始化、删除、睡眠、唤醒操作的处理函数, 以及实际credit算法相关的调度处理函数csched_schedule;此外,调度器在初始化时, 会设置tick时钟,每当时钟中断到来时就会进行credit值计算,并在必要时修改VCPU的 调度优先级和状态,以及发起调度操作;本步骤执行时,多核动态划分模块首先修改Fasttick core的tick时钟周期,使其由默认的10ms修改为调度决策模块测定的值Tfasttick,随后在 其之上采用了I/O事件响应优先的抢占式调度策略;
步骤5:调度状态恢复;多核动态划分模块接收调度决策模块的指令,执行调度状态恢 复操作,使系统由多核划分调度状态恢复到正常调度状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910238087.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:多功能电动环保节能小吃车
- 下一篇:床上折叠书架