使用虚拟机时,一个关键性能参数是“VM 退出”。我在 VM VirtualBox 下有一个多核 VM,平均每秒有 30k 个 VM 退出,但我没有任何东西可以与这个值进行比较,无论这个值是高还是完全合理。
如何评估这个参数及其性能影响?
答案1
从 VirtualBox 3.6. 硬件虚拟化的详细信息:
使用 Intel VT-x,有两种不同的 CPU 操作模式:VMX 根模式和非根模式。
在根模式下,CPU 的运行方式与不支持 VT-x 的旧一代处理器非常相似。有四个特权级别(称为环),并且支持相同的指令集,此外还增加了几个虚拟化特定指令。根模式是没有虚拟化的主机操作系统使用的模式,当虚拟化处于活动状态时,虚拟机管理程序也会使用该模式。
在非 root 模式下,CPU 操作有显著不同。仍然有四个特权环和相同的指令集,但现在一个称为 VMCS(虚拟机控制结构)的新结构控制着 CPU 操作并确定某些指令的行为方式。非 root 模式是客户系统运行的地方。
从根模式切换到非根模式称为“VM 进入”,切换回来称为“VM 退出”。VMCS 包括一个客户机和主机状态区域,该区域在 VM 进入和退出时保存/恢复。最重要的是,VMCS 控制哪些客户机操作会导致 VM 退出。
这意味着控制权在客户机和主机之间切换。这很可能是因为客户机访问了主机资源(例如磁盘)。
VM 产品通常将虚拟核心实现为主机上的线程或进程,因此虚拟核心之间的切换涉及主机线程/进程之间的执行切换。这也需要主机 API,因此需要更多控制开关。
控制开关的操作相对较慢,而且也非常依赖于硬件和软件的运行。除非在相同或相似的环境中,否则无法比较其性能。