プロセスのアフィニティを永続的に設定するにはどうすればよいですか?


17

CPU使用率に問題があるゲームがあるので、修正の1つはクアッドコアCPUから1つのコアを無効にすることです。ゲームを起動するたびに、手動でタスクマネージャに移動してアフィニティを手動で入力する必要があるため、ゲームは新しくリリースされたものの、頻繁にクラッシュする傾向があるため、これは残念です。

NON SOFTWAREソリューションはありますか?

私はいくつかのソリューションをオンラインで調べましたが、それらはWindows 7のみを対象としているようです。私のようなWindows 8.1ユーザー向けのソリューションはありますか?


「アフィニティを手動で入力する」とはどういう意味ですか?
Pacerier

@PacerierデフォルトですべてのCPUを選択するため、アフィニティを手動で変更する必要があります。
ゆりつき

「互換モード」を十分に古いバージョンのウィンドウに設定してみてください。これにより、単一コアへのアフィニティが設定されます。しかし、これがまだ機能するかどうかを確認するwin8が手元にありません。
CodesInChaos

@cyberwebpoweruser、以下の答えはあなたのために働きましたか?
ペーステリア

回答:


24

アフィニティを割り当てるショートカットを作成できます。

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

Y 16進数であり、ビットマスクです。

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

1
最初の3つはめちゃくちゃになっていると思う
リッチーフレーム

ああ、いまいましい。はい:)修正..
The_aLiEn

4
@The_aLiEnの質問:このプロセスが別のプロセスを開始した場合、その2番目のプロセスは最初のプロセスのアフィニティを継承しますか?ゲームにも同じ問題がありますが、ランチャーと、ランチャーによって解決されるサードパーティのダウンロードマネージャーの両方でアフィニティを変更する必要があります。
-Nzall

2
cmd.exe /C部品が必要ですか、それともそれで十分でしょうstartか?
デルタブ

2
@NateKerkhofsは継承する必要があります。すべてのセキュリティ記述子、所有されているハンドルなどのアフィニティだけではありません。
The_aLiEn

7

「非ソフトウェア」とは、追加のソフトウェアを必要としないことを意味する場合があります。コマンドスクリプトからプログラムを実行し、アフィニティスイッチを使用できます。"Start /AFFINITY 20 process.exe"

/AFFINITY 20は、に20相当する2進数の10000016 進数として処理します。これは、6コアプロセッサで0〜5のコア5にアフィニティを設定します。同様の16進数マスクを使用すると、などの特定のコアを無効にできますE。これにより、0〜3または0〜5のコア1〜3でのみプロセスが実行されます。


「非ソフトウェア」とはを意味しcmdます。
ペーステリア

5

これに対する答えを探しているが見つからない場合、私が見つけた解決策は、WinAFC(またはAffinityChanger)と呼ばれるアプリを使用することでした。これは、特定の実行可能ファイルのプロファイルを指定し、それらのプロセスリストをポーリングできる、部分的なGUI、部分的なコマンドラインアプリです。一致するプロセスが見つかった場合、ロードされたプロファイルの設定に従って、それらのプロセスのアフィニティが変更されます。

ここにいくつかのドキュメントがあります:http : //affinitychanger.sourceforge.net/

私の目的のために、次のようなプロファイルを作成しました。

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

このプロファイルは、convert.exeプロセスが最初の2つのCPUコアペア(CPU0、CPU1、CPU2、およびCPU3)を使用するように設定し、毎秒ポーリングします。TestModeは、実際にアフィニティを設定せずにプロファイルが機能しているかどうかを確認できるトグルです。

誰かがこれが役に立つことを願っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.