XenServer中Windows 7与XP多vCPU支持配置
?在服務器虛擬化項目或者虛擬桌面項目中,經常會碰到這樣的問題,虛機為高負載類型的業務,對CPU的要求很高的時候,我們希望為這些虛擬桌面分配更多的CPU資源,但是我們也發現,部分系統對CPU數量的支持有數量的限制,超過以后,即使分配,也沒法利用到。也有一些軟件會依據CPU的數量(socket的數量)來收費,所以也需要對CPU進行一些調整來減少費用。
首先說一下,在CPU中有幾個概念:Socket、Core、Hyper-Threading(HT)。首先得搞清楚這些。
- Socket:wikipedia的解釋是連接到主板的一個CPU,通俗講就是一個物理CPU
- Core:wikipedia的解釋同一個CPU芯片上集成的多個核心,也就是所謂的多核的核
- Hyer-Threading:wikipedia的解釋模擬的多線程,通俗講在一個核心上模擬出兩個CPU執行線程,能夠提高多任務的性能
搞明白了這些以后,我們就來說說系統本身對CPU這幾方面的支持限制。
操作系統對CPU的支持分Socket和Core兩方面,而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核心。其他的計算方法依次類推。所以,直接修改模板是安全省事的,但是這樣是否會帶來性能的開銷,有待尋找其他資料佐證。
轉載于:https://blog.51cto.com/sunyu/867147
總結
以上是生活随笔為你收集整理的XenServer中Windows 7与XP多vCPU支持配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客户端,服务器,天气预报
- 下一篇: Spring框架IoC和传统bean调用