Windows-Server-2003

在 windows server 2003 上設置關聯

  • April 30, 2010

我有一個預設情況下只在一個 CPU 上執行的程序。我試過使用start /affinity x notepad.exe批處理命令,但我無法讓它執行我的程序。它更改命令行視窗的標題,但不執行程序。這個啟動命令確實適用於記事本,所以它可能只是軟體的問題。我已經通過任務管理器手動設置了親和力,所以我知道它有效。

我不是這個軟體的程序員,所以改變它不是一種選擇。

更新:我現在可以執行程序了。我將exit命令添加到批處理腳本的末尾。現在我需要知道 /affinity 標誌是如何工作的。我似乎無法讓它使用 4 cpu’。

更新 2:所以我終於發現 /affinity 標誌需要一個十六進制數。我現在可以為記事本正確設置親和力,但仍然無法為我正在使用的軟體設置它。難道是軟體不支持多執行緒?

它是按位的,因此將二進制轉換為十進制。例如。0001 = 1 = cpu1, 1000 = 8 = cpu4, 1111 = 15 = 所有四個 cpu

如果它“更改了命令行視窗的標題但不執行程序”,那麼這看起來像是一個命令行問題。您可以發布實際的命令行嗎?它是否包含空格、引號或附加參數?


編輯:

很高興知道你讓它執行了。正如其他人所說,“親和力”參數是位遮罩;因此,“CPU 1”需要使用“1”,“CPU 2”使用“2”,“CPU 3”使用“4”,“CPU 4”使用“8”,依此類推;您可以通過添加這些數字來設置多個 CPU 的關聯性,因此,如果您希望您的程序使用 CPU 3 和 4(但不是1 和 2),您將使用“12”。“15”應該用來表示“所有前 4 個 CPU”。


編輯2:

當然,如果您的程序不是多執行緒的,那麼它根本不會從擁有更多可用 CPU 中受益。要排除這種情況,請使用任務管理器設置其親和力並查看其行為;如果您有四個 CPU,但程序最多只使用系統總 CPU 時間的 25%,那麼它是單執行緒的;如果達到 50%,它最多執行兩個執行緒。如果它設法達到 100%,那麼它可以充分利用您的伺服器(但請注意不要減慢其他所有內容)。

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