Windows

跨 CPU 核心平衡單執行緒應用程序?

  • July 27, 2012

是否有一種簡單的方法可以檢查某個單執行緒應用程序是否正在通過 Windows 在 CPU 核心之間進行平衡?

我已經嘗試過 Process Explorer,但如果可能的話,我一開始就找不到讀出它的方法。

我想知道這一點的原因是因為我了解並非所有單執行緒應用程序都能保持平衡,而是堅持使用 1 個核心。

“平衡”是一個相對術語。

在核心之間移動程序可能會使某些優化無效(共享記憶體有幫助,但 CPU 寄存器仍然是每個核心的),所以如果你的作業系統通過移動它來“平衡”一個程序,它可能弊大於利。

對於高度優化(通常是手工組裝)的程序,恢復寄存器狀態可能需要更長的時間,而不是讓程序只保留一個 CPU。

另一方面,如果 CPU-Bound 程序不大量使用寄存器並且不太關心是否必須重新載入它們,並且如果 CPU 有很多爭用,則將其移動到任何處理器可用可能會提高性能。

我在這裡的意思是,對於單執行緒程序,你不在乎——相信你的作業系統的調度程序會做正確的事情(在這類事情上它真的比你更聰明)。


對於多執行緒程序,相同的邏輯適用於多次:只要執行緒獲得所需的 CPU 時間并快速執行,您是否關心執行緒在何處執行***?***

我的猜測是否定的。


回答你問的問題:因為你真的不應該關心我認為這是不可能的。

在 Windows 中肯定沒有一種簡單的方法來解決這個問題(任務管理器和程序資源管理器無論如何都不會公開它)。您可以查看 Power Shell 腳本,但我不相信那裡有辦法做到這一點……

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