現在人在部署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