Windows10のプロセスの優先度とコア数の変更

そこまで頻度が高くはないと思うが、
Windows10でのアプリケーションプロセスの優先度やコア数の変更の仕方をメモしておく。

優先度を上げると、システムリソースが優先的に割当てられるので、
そのアプリケーションのパフォーマンスは良くなるが、
その分リソースが取られるので、他のアプリケーションに影響が出る可能性もあるし、
Windowsが不安定になる可能性もある。

「やらなければいいじゃん」という意見もあるが、
そこはエンジニアとの血が騒ぐというか・・・。
変更しても再起動すれば元に戻るし色々試してみたいのである。

まぁ、不具合が起きても誰も助けてくれないし、
完全に自己責任なので触らぬ神に祟りなしなのかもしれない。


プロセスの優先度変更


まずはタスクマネージャーの"詳細"タブを開く。

proc000.JPG

次に優先度を変更したいプロセス名を右クリックし、"優先度の設定"を展開する。
例では"firefox.exe"でやっているが、基本的にFirefoxなどは変更する必要はない。

proc001.JPG

基本は"通常"となっているが、これを変更することで優先度が変わる。
"リアルタイム"はWindowsシステムのパフォーマンスにも影響が出る可能性がある為、
上げたいのであれば"高"くらいにしておいた方がよいかも。

■優先度一覧
優先度備考
リアルタイム最も高い
-
通常以上-
通常デフォルト
通常以下-
最も低い


クリックすると確認のダイアログがポップアップするので、
"優先度の変更"ボタンをクリックすればOK。


プロセスのコア数変更


タスクマネージャーを開くところまでは一緒。

次にコア数を変更したいプロセス名を右クリックし、"関係の設定"をクリックする。

proc002.jpg

すると下記ウィンドウが開くので、不要なコアのチェックを外せばOK。
デフォルトでは全て使用することになっている。

proc003.jpg

うちのPCの場合は2コア4スレッドなので、4つ出ているのかな?
コアと言いつつ、ハイパースレッディングが効いていれば実際はスレッドなのかな。


コマンドプロンプトでの実行


一応コマンドでも変更可能なようなのでメモしておく。

■優先度の変更
 wmic process where name="[プロセス名(.exeあり)]" call setpriority [優先度]


プロセス名は".exe"までを記載。
優先度に関しては下記を参照し、数値を入力。

優先度Priority数値
リアルタイムRealtime256
High Priority128
通常以上Above Normal32768
通常Normal32
通常以下Below Normal16384
Idle64


起動時に優先度を変更するには"start"コマンドを使うらしいが、
今回は起動しているプロセスに対する変更をしたいので、こんな感じで。


■コア数の変更
 PowerShell "Get-Process [プロセス名(.exeなし)] | % { $_.ProcessorAffinity=[コア数の数値] }"


プロセス名は".exe"なしで。
コア数の指定は下記を参照し、数値を入力。
コア数=数値ではないところに注意が必要。
1コアの場合は"1"、3コアの場合は"4"、すべてのコアの場合は"255"となる。

コア数数値bit
1コア100000001
2コア200000010
3コア400000100
4コア800001000
5コア1600010000
6コア3200100000
7コア6401000000
8コア12810000000
すべてのコア25511111111


コア数の変更は残念ながらコマプロのやり方が解らなかった。
なので、結局コマプロからPowerShellを呼び出す形になっている。


バッチファイルの作成


プロセスの優先度やコア数の変更は再起動すると元に戻ってしまう。
固定するのは無理みたいだ。

なので、常に変更しておきたいプロセスは毎回変更してあげなければならない。
これでは面倒くさいので、軽くバッチファイルにでもまとめておくと良いだろう。

例えば"firefox.exe"の優先度を"低"、コア数を"1"に変更をする場合は
下記のような感じになる。
あくまで記載例なので、実際はFirefoxの優先度やコア数は変えないほうが良いかと。

 ::Priority
wmic process where name="firefox.exe" call setpriority 64

::Core
PowerShell "Get-Process firefox | %% { $_.ProcessorAffinity=1 }"


赤字の"%"はエスケープシーケンス。
バッチファイルの場合、"%"1つだとエスケープシーケンスとみなされるので、
実際に"%"を入力したい場合は"%%"と2つ記載しなければならない。

これを".bat"か何かの拡張子で保存して、デスクトップにでも置いておけば実行は楽だろう。
対象プロセスを起動して、変更したくなったらバッチファイルをダブルクリックな感じ。


以上。



MCP教科書 Windows 10(試験番号:70-697)


この記事へのコメント