Amazon-Ec2

EC2、Windows 10、一半的虛擬處理器

  • November 26, 2020

我們執行具有 2 個 vCPUt3.largem5.large實例(如 EC2 管理控制台中所示)。我試圖理解為什麼 Windows 2019(我的 IT 提供的 AMI)只能看到一半的邏輯 CPU。

  • 一半的數字在任務管理器中報告,在 msinfo32 中,在 Coreinfo 中。我們還看到較大實例的數量減少了一半(xlarge:2 而不是 4)。
  • 如果我while($true){}在 PowerShell 中執行,任務管理器會報告 100% 的使用率,但 Cloudwatch 會報告 50%。
  • 在 msconfig 中,我只能選擇 1 個 CPU(對於大型實例)。
  • 當我在 EC2 嚮導中創建我的實例時,我使用了預設數量的 vCPUS。
  • 如果我使用市場上的 Windows 2019 AMI,我會獲得正確數量的邏輯處理器。在這兩種情況下,它都是相同的版本/內部版本(Windows Server 2019 Datacenter)。

您是否知道 Windows 10 中可能影響檢測到的邏輯處理器數量的任何配置?或者如果我可以啟動任何日誌來查看 CPU 是如何被檢測到的(比如dmesg在 linux 中)。我的 IT 同事告訴我,他們沒有改變 CPU 數量或超執行緒,但看起來他們的 AMI 有一些特別之處。

**更新:**在事件查看器中,在“Microsoft / Windows / Kernel-PnP”中,我可以看到:

設備 ACPI\GenuineIntel_- Intel64_Family_6_Model_79 -_Intel(R)_Xeon(R) CPU_E5-2686_v4 @_2.30GHz_1 已配置。

設備 ACPI\GenuineIntel_- Intel64_Family_6_Model_79 -_Intel(R)_Xeon(R) CPU_E5-2686_v4 @_2.30GHz_0 已配置。

我不知道是否有任何其他日誌可以說明任何 CPU/核心/執行緒何時被初始化為邏輯處理器。

更新 2:我比較了有問題的機器和工作機器的內容bcdedit /enum All和內容,它們是相同的(UUID 除外)。bdcedit /v我試圖明確設置bcdedit /set NUMPROC 2並重新啟動,但沒有結果。bcdedit /v

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=C:
description             Windows Boot Manager
locale                  en-US
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
bootshutdowndisabled    Yes
default                 {61a8a653-e7da-11e8-a960-0e221fdbf186}
resumeobject            {61a8a652-e7da-11e8-a960-0e221fdbf186}
displayorder            {61a8a653-e7da-11e8-a960-0e221fdbf186}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 30

Windows Boot Loader
-------------------
identifier              {61a8a653-e7da-11e8-a960-0e221fdbf186}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows Server
locale                  en-US
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence        {74e13b1d-b199-11ea-827a-0af4c9a8ea6d}
displaymessageoverride  Recovery
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {61a8a652-e7da-11e8-a960-0e221fdbf186}
nx                      OptOut
bootstatuspolicy        IgnoreAllFailures

在作業系統級別禁用超執行緒時會發生此問題。這可能是根據 Microsoft 的建議完成的,以防止已知漏洞被稱為推測執行側通道

$$ 1 $$. 基於“防止推測執行側通道漏洞的 Windows 指南”

$$ 2 $$啟用 Windows 更新並應用了 2019 年 7 月 9 日發布的安全更新的客戶將自動受到保護。無需進一步配置。 為了解決這個問題,我建議使用以下步驟啟用超執行緒:

1. Confirm that Hyper-Threading is disabled by querying the registry using below command:

   •   reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride 

   The Hyper-Threading will be disabled if the output is:

   •   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
   •   FeatureSettingsOverride    REG_DWORD    0x2048

2. Once confirmed, proceed with enabling the Hyper-Threading using the below command:

   •   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0 /f

3. Restart the instance and check the number of vCPU reported in the OS, which should show the correct number.

參考:

引用自:https://serverfault.com/questions/1026084