kvm创建win7虚拟机默认只识别2个cpu解决方法

现在人在部署OpenStack之后会发现按照配额运行Linux的虚拟机没有问题,但是运行windows的虚拟机会发现如果配置2个以上的核则无法识别,windows server也最多支持到4个核。无法满足很多业务的需求,但到底是什么原因造成了这样的现象呢?本文将解释这种现象,并且说明解决的办法。

socket,core和thread的概念

在理解这个概念之前,我们需要首先了解下CPU架构的概念。以物理服务器为例,现在的服务器都成为多路服务器,一般可以有多个CPU插槽,而每个CPU又有多个核,每个核可以超线程运行。所以socket即代表服务器的插槽数,core代表每个CPU的核数,thread代表每个核的线程数。

Windows对于socket的支持

Windows系统对于socket的支持各不相同。一般,桌面版的如win7这些最大支持两路CPU,也就是socket为2。而服务器最大支持四路CPU,即socket为4。

libvirt,KVM对于CPU架构的定义

所以对于Windows桌面版,对于一个8核的配置,在libvirt的XML配置文件中,可以在CPU中加入下面的配置,就可以使用。其他的以此类推。

<cpu>
<topology sockets='2' cores='4' threads='1'/>
</cpu>

  参考:https://www.cnblogs.com/billowsand/p/4523130.html