Libvirt主要支持三种 CPU mode

1. host-passthrough: libvirt 令 KVM 把宿主机的 CPU 指令集全部透传给虚拟机。因此虚拟机能够最大限度的使用宿主机 CPU 指令集,故性能是最好的。但是在热迁移时,它要求目的节点的 CPU 和源节点的一致。
2. host-model: libvirt 根据当前宿主机 CPU 指令集从配置文件 /usr/share/libvirt/cpu_map.xml 选择一种最相配的 CPU 型号。在这种 mode 下,虚拟机的指令集往往比宿主机少,性能相对 host-passthrough 要差一点,但是热迁移时,它允许目的节点 CPU 和源节点的存在一定的差异。
3. custom: 这种模式下虚拟机 CPU 指令集数最少,故性能相对最差,但是它在热迁移时跨不同型号 CPU 的能力最强。此外,custom 模式下支持用户添加额外的指令集。

 

三种mode的性能排序是:host-passthrough > host-model > custom
三种mode的热迁移通用性是: custom > host-model > host-passthrough

 

实际环境中多采用Intel E5系列的CPU,但是该系列的CPU也有多种型号,常见的有Xeon,Haswell,IvyBridge,SandyBridge等等。即使是host-model,在这些不同型号的CPU之间热迁移虚拟机也可能失败。所以从热迁移的角度,在选择 host-mode时:

1) 需要充分考虑既有宿主机类型,以后采购扩容时,也需要考虑相同问题

2) 除非不存在热迁移的场景,否则不应用选择host-passthrough

3) host-model下不同型号的 CPU 最好能以aggregate hosts划分,在迁移时可以使用aggregate filter来匹配相同型号的物理机

上一篇:libvirt 基础命令


下一篇:KVM虚拟机NAT模式网络无法连接