今天和大家分享一个在运维日常开发使用虚拟机时经常出现的问题-CPU指令报错。
现象:
在KVM的虚拟机上测试AVX,AVX2和AVX-512的速度发现报错,用到的avx的程序都提示非法指令。
原因:
由于在虚拟化层没有将CPU对应指令映射到虚拟机上;
解决办法:
云主机需要修改CPU模式为透传,当然也可以将指定的指令映射到虚拟机上;
解决步骤:
1、找到对应云主机的所属物理机,修改xml文件;
2、修改CPU模式。
cpu mode = 'custom' 修改为 cpu mode='host-passthrough'
最后分享下CPU模式介绍:
custom自己定义(默认);
host-model(根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认这种模式);
host-passthrough(直接将物理CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号);
三种mode的性能排序是:host-passthrough>host-model>custom三种mode的热迁移通用性是:custom>host-model>host-passthrough
以上就是今天的内容,希望读者朋友看完这篇文章后有所启发。