win下處理器組、進程、線程親和性

 

微軟官方文檔:https://docs.microsoft.com/en-us/windows/win32/procthread/processor-groups

 

譯文如下:

        64位版本的Windows 7和Windows Server 2008 R2及更高版本的Windows在一臺計算機上支持64個以上的邏輯處理器。此功能在32位版本的Windows上不可用。

        具有多個物理處理器的系統或具有多個內核的物理處理器的系統爲操作系統提供了多個邏輯處理器。A邏輯處理器從操作系統、應用程序或驅動程序的角度來看,是一個邏輯計算引擎。A核心是一個處理器單元,可以由一個或多個邏輯處理器組成。A物理處理器可以由一個或多個內核組成。物理處理器與處理器包、插槽或中央處理器相同。

        對超過64個邏輯處理器的系統的支持基於處理器組,它是一個最多64個邏輯處理器的靜態集合,被視爲單個調度實體。處理器組從0開始編號。邏輯處理器少於64個的系統始終只有一個組,即組0。

Windows Server 2008、Windows Vista、Windows Server 2003和Windows XP:不支持處理器組。

        當系統啓動時,操作系統創建處理器組並將邏輯處理器分配給這些組。如果系統能夠熱添加處理器,操作系統會在系統運行時爲可能到達的處理器留出分組空間。操作系統將系統中的組數減至最少。例如,一個有128個邏輯處理器的系統將有兩個處理器組,每組有64個處理器,而不是四個組,每組有32個邏輯處理器。

        爲了獲得更好的性能,操作系統在將邏輯處理器分配給組時會考慮物理位置。如果可能,內核中的所有邏輯處理器和物理處理器中的所有內核都被分配到同一組。物理上彼此接近的物理處理器被分配到同一組。除非NUMA節點的容量超過最大組大小,否則該節點將被分配給單個組。有關更多信息,請參見NUMA支持

        在64個或更少處理器的系統上,現有應用程序無需修改即可正常運行。不調用任何使用處理器關聯掩碼或處理器號的函數的應用程序將在所有系統上正常運行,而不管處理器的數量。要在超過64個邏輯處理器的系統上正確運行,可能需要修改以下類型的應用程序:

  • 管理、維護或顯示整個系統的每個處理器信息的應用程序必須進行修改,以支持64個以上的邏輯處理器。這種應用程序的一個例子是窗口任務管理器,它顯示系統中每個處理器的工作負載。
  • 對於性能至關重要並且可以有效擴展到64個邏輯處理器以上的應用程序,必須進行修改才能在此類系統上運行。例如,數據庫應用程序可能受益於修改。
  • 如果應用程序使用的動態鏈接庫具有每個處理器的數據結構,並且動態鏈接庫沒有被修改爲支持64個以上的邏輯處理器,則應用程序中調用動態鏈接庫導出的函數的所有線程必須被分配給同一個組。

        默認情況下,應用程序被限制在一個組中,這應該爲典型應用程序提供足夠的處理能力。操作系統最初在系統中的組之間以循環方式將每個進程分配給單個組。一個進程開始被分配給一個組執行。進程的第一個線程最初在該進程被分配到的組中運行。每個新創建的線程與創建它的線程被分配到同一個組。

        一個應用程序需要使用多個組,這樣它就可以在超過64個處理器上運行,它必須明確地決定在哪裏運行它的線程,並負責將線程的處理器親緣關係設置到所需的組。INHERIT_PARENT_AFFINITY標誌可用於指定父進程(可能不同於當前進程),從中生成新進程的關聯。如果進程在單個組中運行,它可以使用GetProcessAffinityMaskSetProcessAffinityMask同時保持在同一組中;如果修改了進程關聯,新的關聯將應用到它的線程。

        可以在創建時使用進程_線程_屬性_組_相似性屬性的擴展屬性CreateRemoteThreadEx功能。創建線程後,可以通過調用SetThreadAffinityMask或者SetThreadGroupAffinity如果線程被分配到與進程不同的組,則進程的相似性被更新以包括線程的相似性,並且進程成爲多組進程。必須對單個線程進行進一步的相似性更改;不能使用修改多組進程的相似性SetProcessAffinityMask。這GetProcessGroupAffinity函數檢索進程及其線程被分配到的組的集合。

        若要爲與作業對象關聯的所有進程指定關聯性,請使用SetInformationJobObject函數與JobObjectGroupInformation或者JobObjectGroupInformationEx信息類。

邏輯處理器由其組號和組相關處理器號來標識。這由一個處理器號結構。遺留函數使用的數字處理器號是相對於組的。

有關支持64個以上處理器的操作系統體系結構變化的討論,請參見白皮書支持超過64個處理器的系統

有關支持處理器組的新功能和結構的列表,請參見流程和線程中的新內容

多處理器

NUMA支持

 

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

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

業餘時間不定期更新一些想法、思考文章,歡迎關注,共同探討,沉澱技術!

            

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