所有虛擬機器上的 CPU 間歇性達到 100%

所有虛擬機器上的 CPU 間歇性達到 100%

我們是一家小商店,運行一台帶有 32GB RAM 的 Dell T420(雙 CPU,只有一個,6 核)作為我們的主伺服器。我們只有 5 台虛擬機,其中一台是我們的 WSE 2012 DC。

我們的所有虛擬機器有時會以我們無法建立可靠模式的速度同時飆升至 100% CPU。主機保持安靜在4-5%。主機熱啟動並不能緩解問題,但冷啟動至少可以讓問題重新出現。

有時我們可以得到一周或更長時間的平靜海面;有時只有一天。一種不可靠的模式似乎是它在長時間閒置期間(即夜間)的某個時間開始。對伺服器溫度日誌的檢查首先讓我們懷疑伺服器過熱,但對最近發生的事件的進一步調查破壞了這一線索。

我們還在戴爾論壇上發現了類似問題的描述,並聲稱可以透過安裝最新一輪的戴爾更新來解決。我們最近參與了一個專案來做到這一點(順便說一句,將約700GB 的VHD 安全地從該計算機上移出然後返回到該計算機上是一次相當大的冒險),但令我們非常沮喪的是它沒有幫助。

我們完全糊塗了。微軟的支持也是如此(或至少第一層支持,儘管他們試圖不這樣做)。我在下面添加了 SystemInfo 輸出。

有人知道從哪裡開始找?

謝謝

=======================================

主機名稱:SERVER1
作業系統名稱:Microsoft Hyper-V Server 2012 R2
作業系統版本:6.3.9600 不適用 內部版本 9600
作業系統製造商:微軟公司
作業系統配置:獨立伺服器
作業系統建置類型:多處理器免費
註冊所有者:Windows 用戶
註冊組織:   
產品編號:06401-029-0000043-76293
原始安裝日期:2014 年 4 月 3 日下午 4:07:15
系統啟動時間:2014 年 5 月 4 日下午 1:56:47
系統製造商:戴爾公司
系統型號:PowerEdge T420
系統類型:基於 x64 的 PC
處理器:已安裝 1 個處理器。
                           [01]:Intel64 Family 6 Model 45 Stepping 7 GenuineIntel ~2200 Mhz
                           [Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20 GHz](手動新增)
BIOS 版本:戴爾公司 2.1.2,2014 年 1 月 20 日
Windows 目錄:C:\Windows
系統目錄:C:\Windows\system32
啟動設備:\Device\HarddiskVolume1
系統區域設定:en-us;英語(美國)
輸入區域設定:en-us;英語(美國)
時區: (UTC-09:00) 阿拉斯加
總實體記憶體:32,723 MB
可用實體記憶體:12,716 MB
虛擬記憶體:最大大小:37,587 MB
虛擬記憶體:可用:17,129 MB
虛擬記憶體:正在使用:20,458 MB
頁面檔案位置:C:\pagefile.sys
網域名稱:OIT
登入伺服器:\\SERVER1
修補程式:已安裝 31 個修補程式。
                           [01]:KB2843630
                           [02]:KB2862152
                           [03]:KB2868626
                           [04]:KB2876331
                           [05]:KB2883200
                           [06]:KB2884846
                           [07]:KB2887595
                           [08]:KB2892074
                           [09]:KB2893294
                           [10]:KB2894179
                           [11]:KB2898514
                           [12]:KB2898871
                           [13]:KB2901101
                           [14]:KB2901128
                           [15]:KB2903939
                           [16]:KB2904266
                           [17]:KB2908174
                           [18]:KB2909210
                           [19]:KB2911106
                           [20]:KB2913760
                           [21]:KB2916036
                           [22]:KB2917929
                           [23]:KB2919394
                           [24]:KB2919442
                           [25]:KB2922229
                           [26]:KB2923300
                           [27]:KB2923768
                           [28]:KB2928193
                           [29]:KB2928680
                           [30]:KB2930275
                           [31]:KB2939087
網路卡:已安裝 3 個 NIC。
                           [01]:Broadcom NetXtreme 千兆位元乙太網路
                                 連線名稱:NIC1
                                 啟用 DHCP:否
                                 IP 位址
                           [02]:Broadcom NetXtreme 千兆位元乙太網路
                                 連線名稱:NIC2
                                 啟用 DHCP:是
                                 DHCP伺服器:192.168.1.12
                                 IP 位址
                                 [01]:192.168.1.135
                                 [02]: fe80::915b:8de0:712e:29f1
                           [03]:Hyper-V 虛擬乙太網路轉接器
                                 連線名稱:vEthernet(外部 NIC 1_內部)
                                 啟用 DHCP:否
                                 IP 位址
                                 [01]:192.168.1.11
                                 [02]: fe80::2d35:f582:4958:9eb2
Hyper-V 需求:已偵測到虛擬機器管理程式。 Hyper-V 所需的功能將不會顯示。

==編輯========================

我已經找到了這個問題的解決方案;我等了一年多,以確保我們沒有再遇到該問題的實例。

主持人:我想請求重新討論這個問題,以便我可以發布答案。

答案1

經過一年多的等待以證明解決方案的有效性,我終於能夠發布這個答案。

戴爾的預設 BIOS 設定啟用了 C 狀態,這使電腦在空閒時處於低功耗模式。這就是導致 Hypervisor 主機(包括 VMWare、Citrix)上的 VM CPU 使用率急遽上升到 100% 的原因。

解決方案是將 BIOS 中的系統設定檔設定為效能,而不是每瓦效能 [OS] 或每瓦效能 [DAPC](後者是預設值)。

相關戴爾文檔,第 3 頁:

http://en.community.dell.com/techcenter/extras/m/white_papers/20161975/download

以下是一位熟悉此問題的戴爾支援工程師的回應:

簡短的版本是:C 狀態在空閒時間禁用其他處理器核心。對於綁定到核心的虛擬機器(這是作業系統控制的,我不認為它是可配置的),這可能會導致它們鎖定,因為它們試圖使用不再存在的資源執行操作。

一般來說,C 狀態通常用於備份伺服器、輔助角色伺服器(備份 dns、dhcp、網域控制器等)等項目,這樣備份伺服器可以保持開啟狀態,但處於低功耗模式以節省能源。

可以在此處找到其他文件:

http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

簡而言之,對於虛擬機器管理程式主機,應始終關閉戴爾伺服器上的電源閒置狀態(設定為效能)。

感謝 Kitsap 銀行的 Eddy Simons 幫助我找到了這個解決方案。

答案2

目前還不清楚問題出在哪裡;你已經知道了。我們沒有機會告訴您原因是什麼。

但是,您可以執行一些測試:

  • 建構虛擬機器1

    • 在此虛擬機器上持續執行 CPU 密集型任務
      (每秒執行數百萬次複雜的數學計算)
  • 建置虛擬機器2

    • 在此虛擬機器上不斷運行 RAM 密集型任務
      (在記憶體中建立一個巨大的數組,刪除它,重複)
  • 建構虛擬機器3

    • 在此虛擬機器上持續執行磁碟密集型任務
      (從檔案讀取/寫入/刪除數百萬行)
  • 建置虛擬機器4

    • 在此虛擬機器上持續執行網路密集型任務
      (將檔案複製到 SMB 共用或從 SMB 共用複製檔案)

等到問題再次出現時,觀察每台伺服器上的效能數據。
哪個受影響最大?
有沒有完全沒有受到影響的?

我的猜測是你的磁碟很糟糕,CPU 正在等待 IO 操作完成才能繼續,這可能會導致某些應用程式使 CPU 效能下降。

答案3

很高興我找到了這個。我有一台運行 Hyper-v 的 2012R2 伺服器。 AMD,6核心CPU。它已經完美運行了一年多。突然間,我開始看到無法連接的虛擬機器 - 無法使用 RDP 連接,也無法使用 Hyper-V 連接。唯一的選擇是關閉虛擬機器。關機沒有得到回應。所以...把虛擬插頭從牆上拔出來。打開。

症狀是,單一電腦似乎使用了 100% 的分配 CPU(例如:六核心主機上的單核心虛擬機器的使用率為 16%)。

問題是零星的。沒有明顯的押韻或原因。

我終於想到,這與我在該主機板上從 32GB 升級到 64GB 的失敗嘗試是一致的。問題是我可以使用 1、2 或 3 個 16GB 記憶體來運行 16、32 或 48GB,但不能使用 4 個 16GB 記憶體來運行 64GB。在 BIOS 設定等方面進行了大量的調整。就在那時,我發現了虛擬機器上啟用動態記憶體的奇妙功能。事實證明,即使沒有 64 場演出,我也能生存!

我猜我在修補時打開了CPU的電源管理,然後就出現了這個問題。

我已經在BIOS中關閉了APM。我需要幾天時間才能有 60% 的信心解決這個問題。幾週後就宣告勝利。但這似乎是解決這個問題的一個很好的理由。

現在已經 24 小時了,到目前為止一切順利。

手指交叉。

感謝您的資訊!

相關內容