プロセスの優先度とは何か
プロセスの優先度とは、オペレーティングシステムがCPUの時間をどのプロセスにどれだけ割り当てるかを決めるための指標です。優先度が高いプロセスは、より多くのCPU時間を受け取り、処理が速く完了します。逆に優先度が低いプロセスは、他の処理が落ち着いてから実行されるため、応答が遅くなります。
WindowsとLinuxでは優先度の扱い方が異なりますが、どちらもユーザーが必要に応じて変更できる仕組みが用意されています。ゲームや動画編集ソフトなど、特定のアプリケーションにリソースを集中させたい場合や、バックグラウンドの処理を抑制したい場合に、この機能が役立ちます。ただし優先度を極端に高く設定すると、システム全体の安定性を損なうリスクもあるため、注意が必要です。
Windowsでプロセスの優先度を上げる方法
Windowsでは複数の方法でプロセスの優先度を変更できます。ここでは代表的な手段を順に説明します。どの方法も管理者権限が必要な場合があるので、実行するときは注意してください。
タスクマネージャーの詳細タブを使う方法
Windowsで最も簡単に優先度を変更する方法は、タスクマネージャーを使うことです。Ctrl + Shift + Escを押してタスクマネージャーを開き、詳細タブをクリックします。一覧から優先度を変更したいプロセスを探し、右クリックして「優先度の設定」を選択します。表示されるメニューから「高」「通常よりも上」「リアルタイム」などを選びます。
この方法は直感的で、すぐに実行できるのが利点です。ただしプロセスの実行中にのみ有効で、次回起動時には元の設定に戻ります。また「リアルタイム」を選ぶと、システムの応答が不安定になることがあるため、通常は「高」または「通常よりも上」にとどめることを推奨します。

タスクマネージャーのプロセスタブから詳細へ移動する方法
タスクマネージャーのプロセスタブには、アプリケーション名が表示されています。目的のプログラムを右クリックし、「詳細」を選択すると、該当するプロセスが詳細タブでハイライトされます。その後、優先度を設定する手順は同じです。この方法は、プロセス名がわかりにくい場合や、複数のプロセスが同一アプリに存在する場合に便利です。
Process Explorerを使う方法
Microsoftが提供するProcess Explorerは、タスクマネージャーよりも詳細な情報を表示するツールです。無料でダウンロードでき、プロセスごとのCPU使用率やI/O優先度、スレッドの状態まで確認できます。Process Explorerで優先度を変更するには、対象のプロセスを右クリックし、「優先度の設定」から希望のレベルを選択します。
Process Explorerの利点は、優先度の変更が即座に反映され、かつ変更後の状態が視覚的に確認できる点です。また、複数のプロセスを同時に管理したい場合や、システムの詳細な動作を把握したいユーザーに適しています。ただし通常の利用ではタスクマネージャーで十分であり、Process Explorerはやや上級者向けのツールです。
コマンドプロンプトでstartコマンドを使う方法
コマンドプロンプトからアプリケーションを起動するとき、startコマンドに優先度オプションを指定することで、最初から高い優先度で実行できます。書式は次のとおりです。
start /high "C:\Path\To\Program.exe"

/highの部分を変更することで、以下の優先度を指定できます。
- /realtime : リアルタイム優先度
- /high : 高優先度
- /abovenormal : 通常よりも上
- /normal : 通常
- /belownormal : 通常よりも下
- /low : 低優先度
この方法は、バッチファイルやスクリプトに組み込んで自動化できるため、毎回同じアプリケーションを高い優先度で起動したい場合に便利です。ただし、起動後に優先度を変更することはできません。変更したい場合は、タスクマネージャーやProcess Explorerを使用します。
Linuxでプロセスの優先度を上げる方法
Linuxでは、nice値とreniceコマンドを使ってプロセスの優先度を制御します。nice値の範囲は-20(最も高い優先度)から19(最も低い優先度)までで、デフォルトは0です。通常ユーザーはnice値を増やすこと(優先度を下げること)しかできませんが、root権限があれば減らすこと(優先度を上げること)も可能です。
niceコマンドでプロセスを起動する方法
新しくプロセスを起動するときに優先度を指定するには、niceコマンドを使います。例えば、priorityというプログラムを優先度-10で起動する場合は次のように実行します。
sudo nice -n -10 ./priority

-nオプションの後にnice値を指定します。root権限が必要な場合が多いので、sudoを併用します。nice値が小さいほどCPU時間が多く割り当てられます。
reniceコマンドで実行中のプロセスを変更する方法
既に実行中のプロセスの優先度を変更するには、reniceコマンドを使います。PID(プロセスID)を指定して、新しいnice値を設定します。
sudo renice -n -5 -p 1234
ここで1234は対象のPIDです。reniceはプロセスグループやユーザー単位でも変更できます。例えば、特定のユーザーが所有する全プロセスの優先度を下げることも可能です。
WindowsとLinuxの優先度設定の比較
両OSの優先度設定には以下のような違いがあります。表にまとめました。

| 項目 | Windows | Linux |
|---|---|---|
| 優先度の範囲 | 6段階(リアルタイム、高、通常より上、通常、通常より下、低) | 40段階(-20から19) |
| 変更の手段 | GUI(タスクマネージャーなど)とコマンド(start) | コマンド(nice, renice)が主、GUIも一部可能 |
| 永続性 | 実行中のプロセスのみ、次回起動時はリセット | 実行中のプロセスのみ、次回起動時はリセット |
| 制限 | リアルタイム優先度はシステム全体に影響 | 一般ユーザーはnice値を下げられない(rootのみ) |
このように、WindowsはGUIで直感的に操作できる反面、段階が少なく細かい調整ができません。Linuxは細かい値設定が可能ですが、コマンド操作が必要で、権限にも注意しなければなりません。
優先度を上げる際の注意点とベストプラクティス
プロセスの優先度を上げると、そのプロセスの応答性は向上しますが、他のプロセスやシステム全体に悪影響を及ぼす可能性があります。特に以下の点に注意してください。
まず、優先度を「リアルタイム」に設定すると、そのプロセスがCPUを占有し、キーボードやマウスの入力が無視される状態が発生します。システムがフリーズしたように見えることもあるため、使用は極力避けてください。どうしても必要な場合でも、短時間の利用にとどめ、すぐに戻せるようにしてください。
次に、バックグラウンドで動作するシステムプロセスの優先度は変更しないほうが安全です。例えば、Windowsのsvchost.exeやLinuxのsystemdなどは、OSの安定動作に不可欠です。これらの優先度を下げると、システムが不安定になる原因になります。
Microsoft Learnのスケジューリング優先度に関するドキュメントでは、リアルタイム優先度の危険性が特に強調されています。また、Windows Serverのstartコマンドリファレンスでも、/realtimeオプションの使用はシステム全体の応答に影響を与える可能性があると注意されています。

優先度変更のベストプラクティスとしては、以下の方針が推奨されます。ゲームや動画エンコードなど、一時的にCPUリソースを集中させたい場合は「高」または「通常よりも上」を選びます。常に高い優先度が必要なアプリケーションは、タスクスケジューラなどで自動起動時に優先度を設定する方法もあります。また、SSDや十分なメモリがある環境では、優先度を変更しなくても十分なパフォーマンスが得られる場合が多いです。
Linuxでは、一般ユーザーがnice値を下げることはできないため、必要に応じて管理者に依頼するか、cgroups(control groups)を用いたリソース制限を検討します。cgroupsを使えば、プロセスグループ単位でCPU使用率を制限したり、優先度を設定したりできます。これはサーバー環境などでよく使われる方法です。
参考文献
本記事の作成にあたり、以下の情報源を参照しました。
Microsoft Learn - スケジューリング優先度 (Win32) : https://learn.microsoft.com/pt-br/windows/win32/procthread/scheduling-priorities
TopGadget - 高優先度でプログラムを実行する方法 : https://www.topgadget.com.br/howto/windows/como-executar-programas-do-windows-com-prioridade-mais-alta.htm
Microsoft - Process Explorer : https://learn.microsoft.com/pt-br/sysinternals/
Microsoft - start コマンドリファレンス : https://learn.microsoft.com/pt-br/windows-server/administration/windows-commands/start
Linux man page - nice(2) : https://man7.org/linux/man-pages/man2/nice.2.html
Linux man page - renice(8) : https://man7.org/linux/man-pages/man8/renice.8.html





