如何永久設定進程的親和力?

如何永久設定進程的親和力?

我有一款遊戲存在 CPU 使用問題,因此修復方法之一是禁用四核心 CPU 中的一個核心。由於每次啟動遊戲時我都必須手動進入任務管理器並手動輸入親和力,這很糟糕,因為遊戲是新發布的,但容易頻繁崩潰。

有非軟體解決方案嗎?

我在網路上找了一些解決方案,它們似乎只適用於 Windows 7。對於像我這樣的 Windows 8.1 用戶有解決方案嗎?

答案1

您可以建立捷徑來指派關聯性。

X:\Windows\System32\cmd.exe /C start /affinity Y game.exe

Y是十六進制且是位元遮罩:

0x1 - 0001 - Core0
0x2 - 0010 - Core1
0x3 - 0011 - Core1 & Core0
0x4 - 0100 - Core2
0x5 - 0101 - Core2 & Core0
0x6 - 0110 - Core2 & Core1
0x7 - 0111 - Core2 & Core1 & Core0
0x8 - 1000 - Core3
0x9 - 1001 - Core3 & Core0
0xA - 1010 - Core3 & Core1
0xB - 1011 - Core3 & Core1 & Core0
0xC - 1100 - Core3 & Core2
0xD - 1101 - Core3 & Core2 & Core0
0xE - 1110 - Core3 & Core2 & Core1
0xF - 1111 - Core3 & Core2 & Core1 & Core0

答案2

如果「非軟體」是指不需要額外的軟體,那麼是有的。您可以從命令腳本運行該程式並使用關聯開關"Start /AFFINITY 20 process.exe"

/AFFINITY 20將 視為20十六進制數,其二進制等價於100000,這在 6 核處理器上設定與 0-5 中的核心 5 的關聯性。類似的十六進位遮罩可讓您停用特定核心,例如E,它僅在 0-3 或 0-5 中的核心 1-3 上執行該進程。

答案3

對於其他正在尋找答案但沒有找到答案的人來說,我找到的解決方案是使用一個名為的應用程式亞足聯(或 AffinityChanger)。這是一個部分 GUI、部分命令列應用程序,可讓您為某些可執行檔指定設定文件,並將輪詢它們的進程清單。如果找到匹配的進程,它將根據載入的設定檔中的設定來更改這些進程的關聯性。

這裡有一些文件:http://affinitychanger.sourceforge.net/

出於我的目的,我創建了一個如下所示的設定檔:

TestMode = 0
TimeInterval = 1
*\convert.exe := PAIR0+PAIR1

此設定檔將任何 Convert.exe 進程設定為使用前兩個 CPU 核心對(CPU0、CPU1、CPU2 和 CPU3),每秒輪詢一次。TestMode是一個開關,可讓您查看您的個人資料是否正常運作,而無需實際設定關聯性。

希望有人覺得有用!

答案4

我是新來的,第一次在這個論壇上發帖,但無論如何我已經創建了這個圖表,這使它更容易理解,只需在命令行中輸入十六進制值Y 即可啟用CPU 線程數。享受!

CPU - HEX  - BINARY
00 -- 1 ---- 0001
01 -- 3 ---- 0011
02 -- 7 ---- 0111
03 -- F ---- 1111
04 -- 1F --- 0001 1111
05 -- 3F --- 0011 1111
06 -- 7F --- 0111 1111
07 -- FF --- 1111 1111
08 -- 1FF -- 0001 1111 1111
09 -- 3FF -- 0011 1111 1111
10 -- 7FF -- 0111 1111 1111
11 -- FFF -- 1111 1111 1111
12 -- 1FFF - 0001 1111 1111 1111
13 -- 3FFF - 0011 1111 1111 1111
14 -- 7FFF - 0111 1111 1111 1111
15 -- FFFF - 1111 1111 1111 1111

%ComSpec% /c start /affinity Y game.exe

相關內容