openstack CPU模式可配置:Custom/HostMode

整体需求

CPU模式可配置:Custom/HostMode

相关调研
libvirt 中,支持 3 种 cpu_mode

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

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

根据 HEPSpec06 测试标准给出了如下性能数据。

host-passthrough

host-model

custom

100%    95.84%    94.73%
 

热迁移的角度

在选择 cpu-mode 时:

需要充分考虑既有宿主机类型
除非不存在热迁移的场景,否则不应用选择 host-passthrough
host-model 下不同型号的 CPU 最好能以 aggregate hosts 划分,在迁移时可以使用 aggregate filter 来匹配相同型号的物理机
如果 CPU 型号过多,且不便用 aggregate hosts 划分,建议使用 custom mode
 

应用迁移的角度

对应用的影响主要体现在编译型应用,如 C,C++,Golang。在物理机上编译好的二进制应用,直接移植到 custom mode 的虚拟机有可能出现异常。

其中最常见的 SSE4 类型指令集异常,因为 custom 模式下没有 SSE4 指令集,而在物理机或者其它 mode 的虚拟机是有该指令集的。

host-model 能够平滑移植绝大部分编译型二进制文件。
custom 下的虚拟机如果出现 illegal instruction,在该虚拟机重新编译(有时需要修改编译参数)应用后,一般能正常运行。
如果公司存在大量编译型应用,host-model 能让业务上云更平滑些
 

整体设计
修改 nova.conf

详细设计
编辑 /etc/nova/nova.conf,修改 libvirt 中的 cpu_mode 

[libvirt]

cpu_mode = custom

修改完成后重启 nova 服务
————————————————
版权声明:本文为CSDN博主「Dream Boy 魏道付」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37158969/article/details/109464056

上一篇:神奇的 new Exception()


下一篇:es创建别名