EC2、Windows 10、一半的虛擬處理器
我們執行具有 2 個 vCPU
t3.large
的m5.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.
參考:
- $$ 1 $$Microsoft 推測執行側通道漏洞: https: //support.microsoft.com/en-us/help/4457951/windows-guidance-to-protect-against-speculative-execution-side-channel
- $$ 2 $$Microsoft 緩解步驟: https: //support.microsoft.com/en-us/help/4072698/windows-server-speculative-execution-side-channel-vulnerabilities