XenServer中Windows 7與XP多vCPU支持配置

 在服務器虛擬化項目或者虛擬桌面項目中,經常會碰到這樣的問題,虛機爲高負載類型的業務,對CPU的要求很高的時候,我們希望爲這些虛擬桌面分配更多的CPU資源,但是我們也發現,部分系統對CPU數量的支持有數量的限制,超過以後,即使分配,也沒法利用到。也有一些軟件會依據CPU的數量(socket的數量)來收費,所以也需要對CPU進行一些調整來減少費用。

首先說一下,在CPU中有幾個概念:SocketCoreHyper-Threading(HT)。首先得搞清楚這些。

  • Socketwikipedia的解釋是連接到主板的一個CPU,通俗講就是一個物理CPU
  • Corewikipedia的解釋同一個CPU芯片上集成的多個核心,也就是所謂的多核的核
  • Hyer-Threadingwikipedia的解釋模擬的多線程,通俗講在一個核心上模擬出兩個CPU執行線程,能夠提高多任務的性能

搞明白了這些以後,我們就來說說系統本身對CPU這幾方面的支持限制。

操作系統對CPU的支持分SocketCore兩方面,而Hyper-Threading對操作系統來說基本是不可見的(其實可以通過CPU參數以及其他機制系統會知道開啓了超線程)所以,HT可以簡單理解爲也是core

windows 2003等服務器操作系統對物理CPU(socket)以及多核CPU(multi-Core)的支持受產品版本(標準、企業、數據中心版本等)的限制,具體就不詳細列舉了。本文主要針對windows 7和XP。(面向虛擬桌面用戶)

針對多物理CPU(multi-socket):

windows 7和XP最多支持2路CPU,企業版以上支持2路CPU,企業版以下(Home版)只支持1路CPU

針對多核心(multi-core):

windows 7 32位系統支持最多32核,64位windows 7支持多達256核的CPU。

XenServer分配給虛機的vCPU都是以Socket的形式呈獻給上層虛機的,這就導致,通過XenCenter最多隻能給虛機分配2個vCPU,即使多分配,系統也無法識別到,因爲windows 7和XP最多隻支持2個socket

windows 7和XP又能支持多core,所以我們如果能夠以每個socket有多核,然後分配給虛機,這樣就可以達到分配更多的CPU自願給這些虛機系統。例如,如果我們每個socket有4核心,那麼我們就可以分配2路4核弓8個vCPU給虛機。

要進行這樣的調整,我們需要手動調整一下XenServer中虛機的CPU的平臺模式設置。

1
2
3
4
5
6
7
8
9
#查找對應模板或者虛機的UUID
xe vm-list
#or
xe template-list
 
#設置模板或者虛機的Platform參數,設置cores-per-socket
xe vm-params-set Platform:cores-per-socket=<some count> uuid=<target vm uuid>
#or
xe template-params-set Platform:cores-per-socket=<some count> uuid=<target template uuid>

這樣,我們就可以以每socket多個核心的方式分配 CPU了。推薦修改虛機模板,這樣減少很多工作。

BTW:如果cores-per-socket設置爲4,那麼如果分配一個vCPU給虛機,那麼就是一個socket,如果分配3個vCPU給虛機,由於不超過4,還是以一個socket3個核心的方式出現在虛機中,如果是5個,那麼將是一個socket 爲1核心,另外一個socket爲4核心分配給虛機,而如果分配8個vCPU,那麼虛機將會看到2個socket,每個4核心。其他的計算方法依次類推。所以,直接修改模板是安全省事的,但是這樣是否會帶來性能的開銷,有待尋找其他資料佐證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章