我目前正在檢查具有兩個 12 核處理器(即 24 核)的系統上的伺服器應用程式的限制。 (超線程目前已停用)。
根據任務管理器的顯示,我在該盒子上運行同一個應用程式的 12 個 UDP 接收密集型實例,並且它最大化了 2 個套接字之一的所有 12 個核心。但另一個套接字空閒。我還嘗試啟動該應用程式的第 13 個實例,但它仍然在第一個已經繁忙的套接字上運行。
為什麼?在多處理器系統中執行緒調度到核心的規則是什麼?
一些想法:
- 它是否與 RSS(接收端縮放)有關,RSS 已啟用並且至少會參與為我們應用程式的接收器執行緒選擇核心(但該應用程式也有其他工作繁重的執行緒)?
- RSS(或 MSI/MSI-X)是否僅限於一個插槽?
- 單一應用程式實例可以/將同時在多個套接字上運行嗎?
系統詳細資訊:
- ProLiant BL460c Gen9
- 英特爾至強 E5-2670 v3
- Windows 2012 R2
答案1
某些插槽/IO 設備直接與其中一個處理器通訊(其他插槽可能與另一個處理器通訊)。在該處理器上執行該卡/IO 設備產生的工作有許多優點。
例如DDIO最適合連接到 PCI 插槽/IO 裝置的處理器。