自适应音频感知的虚拟机调度的研究
发布时间:2020-07-12 12:45
【摘要】: 虚拟化技术的出现与实用化,不仅为提高服务器利用率、整合异构资源带来了新的解决方案,也为个人用户便捷、高效的使用桌面服务带来了新的机遇。桌面应用往往有较高的实时需求,而目前的虚拟机环境并不能很好地适应一部分响应敏感型的应用,如音频应用。在多虚拟机共存的情况下,运行音频应用的虚拟机将在对计算资源的竞争中频繁地中断,从而导致严重的音频抖动,影响用户的体验。 自适应音频感知的虚拟机调度系统针对上述问题将变长时间片、静态优先级、基于份额的动态优先级控制等方法有效的结合并运用到虚拟化环境的特殊调度模式中,实现了一种动态、灵活的虚拟机调度机制,该机制使特权域与硬件虚拟机可以高频率地轮转交互,保证音频缓冲区的数据充裕,播放流畅。自适应音频感知机制凭借虚拟机管理器对音频接口状态的捕获和判断,自适应地调整虚拟机的优先级,选取适合的调度策略来调度和分配CPU资源,克服由两层调度模式带来的上层应用不可预知的缺陷。系统在确保音频应用的高质量运行的同时,也在一定程度上兼顾了调度的公平性。 除了采取自适应音频感知的方法以适应音频任务的需求变化以外,系统还提供了与调度机制相应的用户控制接口,支持用户以手动方式设置虚拟机的优先级并进行监测,扩展了虚拟机管理的灵活性。 实验表明,该系统能够在多虚拟机环境下满足音频的实时需求,大幅度地提高音频质量。在最好的情况下,“缓冲区欠载”导致的声音抖动现象可被完全消除,保证了用户良好的音频体验。
【学位授予单位】:华中科技大学
【学位级别】:硕士
【学位授予年份】:2009
【分类号】:TP302
【图文】:
先级:BOOST、UNDER 和 OVER VCPU 运行队列。VCPU 有三种状态:BOOST、UNDOVER 表示虚拟机中 VCPU 的 credit 值已用完,UNDST 是 Xen 最新加入的状态,由唤醒操作带回。在 Cr VCPU 总是被放在调度队列的尾部,虽然调度器会须等待排在其前面的所有 VCPU 都运行完才会被调,当事件被发送到虚拟机的 VCPU 时,如果 VCPU唤醒,调度器会被立即运行并重新计算调度顺序,如BOOST 状态,则之前正在运行的虚拟机会被抢占,否队列末尾。因此,处于 BOOST 状态的虚拟机具有最 VCPU 总是优先于 OVER 状态的 VCPU 被调度,只无法运行时才会调度到 OVER 状态的 VCPU。入 BOOST 状态的 Credit 算法在一定的条件下可以取应延迟的平均值。但是当多个事件频发时,由于没有理性,BOOST 的优势便无法体现,从而并不能真正
先级、基于份额的动态优先级控制和变长时间片。3.3.1 静态优先级静态优先级通过一种新的虚拟机配置参数来实现——实时属性参数 realtim(RT)。RT 参数独立于权重(Weight)和能限(Capacity)参数,用来指定是否将一个虚拟机设置为具有最高优先级的实时虚拟机。同时,为了满足用户的不同需要,RT 允许被设置为 0~60 中的任何数值,数值越大,子优先级越高(子优先级实际上是通过控制与 RT 数值相当的 BOOST 次数来动态确定的),但 RT>1 的虚拟机的优先级均大于 RT=0 的虚拟机。这一参数的改变过程由于需要控制 Hypervisor 中的 CPU 调度模块进行处理,因此,用户空间的控制请求需要封装成 Hypercall 命令陷入到 Hypervisor 中。Hyperca类似于传统操作系统中的系统调用,允许客户虚拟机执行一个同步软陷阱陷入Hypervisor 中执行一个特权操作。此处 Hypercall 的类型为__HYPERVISOR_domct现有结构下,与调度参数相关的信息都是通过 struct xen_domctl_sched_credit 这个数据结构来传递的,其数据结构关系如图 3.3 所示。
BoostTimes 即 BOOST 的次数,CreditsPerBoost 表示一次值(实现中 CreditsPerBoost 为 10 毫秒);,MsecsPerBoost 表示一次 BOOST 对应的时间(实现中 M-转换-平分”完成之后,调度器基于 credit 值和 BOOST 次 VCPU 的优先级。首先,判断 VCPU 的 credit 是否已经用完态置为 OVER。然后,判断 BOOST 次数(BoostTimes)是否保持 VCPU 的状态继续为 BOOST,否则将其状态置为 UNU 队列的优先级状态和处理过程。
本文编号:2751979
【学位授予单位】:华中科技大学
【学位级别】:硕士
【学位授予年份】:2009
【分类号】:TP302
【图文】:
先级:BOOST、UNDER 和 OVER VCPU 运行队列。VCPU 有三种状态:BOOST、UNDOVER 表示虚拟机中 VCPU 的 credit 值已用完,UNDST 是 Xen 最新加入的状态,由唤醒操作带回。在 Cr VCPU 总是被放在调度队列的尾部,虽然调度器会须等待排在其前面的所有 VCPU 都运行完才会被调,当事件被发送到虚拟机的 VCPU 时,如果 VCPU唤醒,调度器会被立即运行并重新计算调度顺序,如BOOST 状态,则之前正在运行的虚拟机会被抢占,否队列末尾。因此,处于 BOOST 状态的虚拟机具有最 VCPU 总是优先于 OVER 状态的 VCPU 被调度,只无法运行时才会调度到 OVER 状态的 VCPU。入 BOOST 状态的 Credit 算法在一定的条件下可以取应延迟的平均值。但是当多个事件频发时,由于没有理性,BOOST 的优势便无法体现,从而并不能真正
先级、基于份额的动态优先级控制和变长时间片。3.3.1 静态优先级静态优先级通过一种新的虚拟机配置参数来实现——实时属性参数 realtim(RT)。RT 参数独立于权重(Weight)和能限(Capacity)参数,用来指定是否将一个虚拟机设置为具有最高优先级的实时虚拟机。同时,为了满足用户的不同需要,RT 允许被设置为 0~60 中的任何数值,数值越大,子优先级越高(子优先级实际上是通过控制与 RT 数值相当的 BOOST 次数来动态确定的),但 RT>1 的虚拟机的优先级均大于 RT=0 的虚拟机。这一参数的改变过程由于需要控制 Hypervisor 中的 CPU 调度模块进行处理,因此,用户空间的控制请求需要封装成 Hypercall 命令陷入到 Hypervisor 中。Hyperca类似于传统操作系统中的系统调用,允许客户虚拟机执行一个同步软陷阱陷入Hypervisor 中执行一个特权操作。此处 Hypercall 的类型为__HYPERVISOR_domct现有结构下,与调度参数相关的信息都是通过 struct xen_domctl_sched_credit 这个数据结构来传递的,其数据结构关系如图 3.3 所示。
BoostTimes 即 BOOST 的次数,CreditsPerBoost 表示一次值(实现中 CreditsPerBoost 为 10 毫秒);,MsecsPerBoost 表示一次 BOOST 对应的时间(实现中 M-转换-平分”完成之后,调度器基于 credit 值和 BOOST 次 VCPU 的优先级。首先,判断 VCPU 的 credit 是否已经用完态置为 OVER。然后,判断 BOOST 次数(BoostTimes)是否保持 VCPU 的状态继续为 BOOST,否则将其状态置为 UNU 队列的优先级状态和处理过程。
【引证文献】
相关博士学位论文 前1条
1 陈华才;虚拟化环境中计算效能优化研究[D];华中科技大学;2011年
相关硕士学位论文 前1条
1 谢雪娇;过载虚机条件下MPI通信性能改善方法研究[D];华中科技大学;2011年
本文编号:2751979
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2751979.html