OpenSolaris xVM hypervisor配置实战(1)(3)
3 资源虚拟化
(1)中央处理器
xVM 分配给每个域一个或多个虚拟 CPU(vcpu)。每一个虚拟 CPU 包含与典型物理 CPU 相关的所有状态:缓存器、标志、时间戳记等等。xVM 中的虚拟 CPU 就像 Solaris中的一个线程,是可以预订的实体。当轮到一个域在 CPU 上运行时,xVM 把在 vcpu 中捕获的状态数据载入到物理 CPU 中并运行。Solaris将每一个虚拟 CPU 视为一个物理 CPU。当 xVM 选择一个虚拟 CPU 运行时,xVM 将运行 Solaris 在虚拟 CPU 上加载的线程。
(2) 内存
Solaris 以页的形式管理内存。当 Solaris 直接在硬件上运行时,使用系统 BIOS 或固件所提供的物理页桢号。当系统在 xVM 下运行时,管理程序提供可用的物理页面列表。为了将子操作程序(guest OS)从硬件中分离出来,为了启用像动态迁移这样的特性,由 xVM 提供的页桢号并不反应被硬件识别的物理页。而这些页面反映系统内存的优化视图。xVM 将访客操作系统的“物理”页号变换成硬件可识别的“机器桢号(MFN)”。
(3)设备
Dom0 Solaris 驱动等同于在裸机(bare metal )上运行的 Solaris 驱动。在全虚拟化用户域中,xVM 将捕获任何写到 I/O 空间或者任何 DMA 操作的内容,并将这些请求直接转发给控制域中合适的设备。这种捕获和转发操作开销很大,所以对这类设备的访问可能导致其性能下降,尤其是网络设备更是如此。在泛虚拟化用户域中,每个驱动都有一个在用户域内呈现的“前端”和在控制域内运行的“后端”,这里简称 PV 驱动。前端驱动从 Solaris 获取标准请求并将其转发给后端驱动。后端驱动在物理硬件上执行请求,并将结果返回前端驱动,然后前端驱动通知 Solaris 请求完成。由于驱动清楚地识别到管理程序,它能够和虚拟机以及后端驱动一起协作,使传输性能比全虚拟化环境下的驱动更好。