第 8 期 王煜炜等:面向网络性能优化的虚拟计算资源调度机制研究 ·107·
但 是,文中并未明确如何具体识别 LSVM 和
NLSVM,在 VM 较多的物理 CPU 共享队列,LSVM
仍需要等待较长时间才能赢得 CPU 时间片。Xu
[16~18]
提出以用户为中心的 VM 传输延迟优化方案,文 中
针对 VM 和 VM 之间的传输延迟进行测量和分析,
并给出了一种轻量级的测量 VM 受到竞争干扰的
方法,用户可以直接对所租用的各个 VM 当前网
络性能进行评估,并且按照评估结果将应用任务
进行分配。该方法一定程度上避免了虚拟化技术
对 VM 网络延迟性能的影响,但以用户为中心的
方案并未从根本上解决上述性能下降问题,若不
同的用户同时采用上述策略,则会造成 VM 网络
性能的迅速下降。
上述方案从不同角度提出了 改善虚拟机网
络性能的方法,但是尚
未有方案能够完整解决引
言中提到的 3 个主要问题,并 提 出针对性的高效
处理策略。
3 vCPU 调度对 I/O 通信影响分析
本文从分析 vCPU 调度机制对 Xen 中虚拟机
I/O 通信机制的影响入手,基于 I/O 传输特征对 VM
类型进行合理、准确识别,提出一种面向网络性能优
化的虚拟计算资源分配及调度机制 Diff-Scheduler,可
大幅度提升虚拟机的网络性能。
3.1 基于 Xen 的 vCPU 调度机制
vCPU 是由 Hypervisor 分配给 VM 的虚拟 CPU,
是虚拟化系统对其物理 CPU 资源的抽象。系统运
行过程中,VM 分得的 vCPU 将在各个物理 CPU 核
上形成等待调度的 vCPU 队列。vCPU 调度是指
Hypervisor 挑选 vCPU 并分配其一段时间物理 CPU
使用权限的过程。
合理的 vCPU 调度机制是 VM 高
效执行任务的关键。目前,Xen 的稳定版本默认采
用 Credit Scheduler 调度机制
[19]
,调度器依据 Weight
值为每个虚拟机分配其 Credit,同时为每个物理
CPU 维护一个 vCPU 队列。当 vCPU 没有被调度时,
就处于非活跃状态。直至其下一次被调度时,才能
重新处于活跃状态。对于频繁执行网络通信任务的
VM 而言,如果其 vCPU 长时间处于非活跃状态,
将会大大影响其网络通信性能,下面将结合 Xen 的
I/O 通信机制进行详细分析。
3.2 基于 I/O 共享环的网络数据传输
在 Xen 中,VM 的网络通信通过位于其内部的
前端设备和位于特权域 Domain 0 内部的后端设备
交互实现,如图 1 所示
,设备驱动采用前后端分离
模型,分为前端驱动与后端驱动 2 部分。前端驱动
位于 VM 域,后端驱动位于特权域 Domain 0。前 后
端驱动通过 Xen 提供的共享内存机制进行通信。
VM 发送和接收数据过程均对应一个大小固定的共
享 I/O 环型存储队列,用于存放数据分组收发过程
的控制信息。其内部存放着 2 类数据结构:请求
(request)项与响应(response)项。请求项与响应
项分别存入共享 I/O 环并形成请求队列与响应队
图 1 基于 Xen 的虚拟网络 I/O 通信架构
2016161-3