題 如何為Windows中的任何進程設置默認關聯?


我想在Windows 7上運行一些基準測試。這些基準測試與多核CPU上的超線程有關。為此,我想確保只有基準測試在他們自己的邏輯處理器上運行。有沒有辦法告訴Windows不在某些邏輯處理器上安排任何事情,除非我明確允許它進程?

在任務管理器中手動執行此操作,一次只能執行一個過程,這不是一個選項。我希望能夠反复這樣做(我將多次運行許多基準測試)。我知道如何以編程方式設置當前運行進程的親和力。

是否有任何配置可以允許我為所有進程設置默認關聯?


4
2017-10-23 11:59


起源


可能最好停止“系統事物”,這樣他們就不會妨礙並提高優先級並為基準測試本身設置親和力,因此其他功能只能使用剩餘的功能。當基準測試本身很大程度上依賴於您停放在一起的各種功能時,您會怎麼做?會影響結果嗎? EX:磁盤I / O的許多工作台都在使用緩存,即使這可能繞過它們。 - Psycogeek
有一個舊的程序用於XP,我用於此目的,不知道它是否可以立即下載...tomshardware.com/reviews/bang-dual-processing-buck,815-3.html - Moab
如果你想在W7上試一下,我有一份“THG任務分配經理”。 - Moab


答案:


處理套索 支持這個!它帶有免費和付費版本​​,CPU親和力總是免費的......

只需填寫一個 * 在裡面 Name match 字段,將針對所有進程。

我認為您可以添加您的程序以獲得另一種親和力,您輸入規則的順序可能很重要。另外,你可以打勾 More strictly enforce default affinities 在底部。

enter image description here


10
2017-10-23 13:29



我在Folding @ home中使用了類似的實用工具。 - surfasb
請注意,某些“系統事物”(如中斷處理和DPC)不會受到影響。嘗試為系統線程和受保護的系統進程設置親和力也可能存在permiision問題。 - Jamie Hanrahan
我設法完全按照這個工具的要求做了。我為邏輯核0-3添加了*規則,為4-7添加了“javaw”規則,然後使用我的Java程序中的JNA來設置與核心4和6的親和性。像魅力一樣,我的2個線程都擁有核心所有對自己。甚至使用sun.misc.Unsafe存儲/加載柵欄確認內存可見性生效。 - Alexandros


如果您進入任務管理器進程並右鍵單擊該進程,您應該能夠選擇關聯。

enter image description here

要禁用核心,您可以使用msconfig。我不認為你可以在每個進程的基礎上啟用它。


3
2017-10-23 12:08



好的,我應該更清楚了。我想設置親和力 所有 進程只使用邏輯處理器0和1,並且只啟用我想要使用的進程2和3.不能選擇手動執行每個進程。 - Nathan Fellman
@NathanFellman是的,我意識到我發布後。您是否嘗試過使用msconfig-> system configuration-> advanced禁用它們? - Pubby
不,我不知道怎麼做:-) - Nathan Fellman
@NathanFellman我從這裡看到了: en.kioskea.net/faq/616-multicore-cpu-how-to-disable-a-core 從來沒有這樣做,所以不確定它是否適用於您的情況。 - Pubby


  1. 打開開始菜單
  2. 類型 MSCONFIG,然後點擊進入
  3. 轉到標記為的標籤
  4. 突出顯示您選擇的操作系統,並點擊高級選項。
  5. 校驗 處理器數量, 並使用你想要的許多。

這會導致窗口(以及其他所有內容)只能查看和使用指定的內容 處理器數量。所以它有效地完全禁用了其餘部分。它(並且可以)永遠不會使用超過可用內核的數量。

enter image description here


1
2017-10-23 12:50



但這會讓我分配 只要 “禁用”處理器的某些過程?在我看來,這將保持 所有 關於處理器的進程我想保持清楚, 包含 我的基準。 - Nathan Fellman
@NathanFellman我其實並不完全確定 - 也許你可以測試一下? - Simon Sheehan
@NathanFellman: /NUMPROC=number 設置Windows在啟動時運行的處理器數量。使用此開關,可以強制多處理器系統僅使用您指定的處理器數量(數量)。此開關可以幫助您解決性能問題和有缺陷的CPU。 - 見 支持。這意味著一旦限制它們就不能再使用處理器了。 - Tom Wijsman