Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Windowsのプロセス優先度を完全解説|タスクマネージャー・STARTコマンド・wmicで優先度を変更する方法

今回はWindowsのプロセス優先度について解説します。通常の利用では、プロセスの優先度を自分で細かく設定する必要性はあまりありません。しかし、状況によっては、熟練したシステム管理者が優先度を適切に調整することで、実行中のタスク間でCPU時間をより効率的に配分できるようになります。どのような場面で役立つのでしょうか。例えばアプリケーションサーバーでは、リソースを最も消費する重要プロセスであるアプリケーションサーバーやSQL Serverに、より多くのCPU時間を割り当てるといった使い方が考えられます。

タスクマネージャーで優先度を確認・変更する

一般的には、タスクマネージャーを使えばプロセスの優先度を表示・変更できます(対象のプロセスを右クリック →「優先度の設定」)。

Windows NT/2000/7/2008の場合:

Windowsのプロセス優先度を完全解説|タスクマネージャー・STARTコマンド・wmicで優先度を変更する方法

Windows Server 2012以降では、これらの設定は「詳細」タブにあります。

Windowsのプロセス優先度を完全解説|タスクマネージャー・STARTコマンド・wmicで優先度を変更する方法

このスクリーンショットのように、タスクマネージャーから選択できるのは6種類の優先度だけです(後述するように、これは「優先度クラス」に相当します)。果たして6種類で十分なのでしょうか。マイクロソフトは十分だと考えているようですが、「640KBのメモリがあれば誰にとっても十分だ」というビル・ゲイツ氏の有名な発言を思い出す方もいるかもしれません。歴史が示す通り、実際はそうではなかったのです。:)

Windowsの優先度レベルの仕組み

それでは、実際の内部構造を見ていきましょう。

実は、Windowsには0から31まで、合計32段階の優先度レベルが存在します。

これらは次のようにグループ分けされています。

  1. 31〜16: リアルタイム領域
  2. 15〜1: ダイナミック領域
  3. 0: ゼロページスレッド用に予約されたシステムレベル

プロセスが作成されると、次の6種類の優先度クラスのいずれかが割り当てられます。

  1. リアルタイムクラス(値24)
  2. 高クラス(値13)
  3. 標準以上クラス(値10)
  4. 標準クラス(値8)
  5. 標準以下クラス(値6)
  6. アイドルクラス(値4)

前述の通り、タスクマネージャーで各プロセスの優先度を確認できます。

補足: 「標準以上」と「標準以下」の優先度は、Windows 2000で初めて導入されました。

スレッドの相対優先度

各スレッドの優先度(基本スレッド優先度)は、所属するプロセスの優先度と、スレッド自身の相対優先度によって決まります。スレッドの相対優先度には以下の7種類があります。

  • 標準: プロセスと同じ優先度
  • 標準以上: プロセスの優先度+1
  • 標準以下: プロセスの優先度−1
  • 最高: +2
  • 最低: −2
  • 時間 critical(Time critical): リアルタイムクラスでは31、その他のクラスでは15にスレッドの現在優先度を設定
  • アイドル: リアルタイムクラスでは16、その他のクラスでは1にスレッドの現在優先度を設定

次の表は、プロセス優先度クラスと、スレッドの相対優先度・現在優先度の対応関係を示しています。

スレッド優先度プロセスクラス
アイドル標準以下標準標準以上リアルタイム
1アイドルアイドルアイドルアイドルアイドル
2最低
3標準以下…
4アイドルクラス 標準最低
5最高…標準以下…
6標準以下クラス 最高標準最低
7最高…標準以下…
8標準クラス最高標準最低
9最高…標準以下…
10標準以上クラス最高標準
11最高…最低
12最高標準以下…
13高クラス標準
14最高…
15最高
15時間critical時間critical時間critical時間critical時間critical
16アイドル
17〜21
22最低
23標準以下…
24リアルタイムクラス標準
25最高…
26最高
27〜30
31時間critical

方法1:タスクマネージャーで起動後に優先度を変更する

この方法のデメリット:

  • 選択できるのは6種類の優先度のみ
  • マウス操作で変更するため、自動化できない

方法2:STARTコマンドのオプションを使う

優先度に関係するオプションは以下の通りです(ここでは、優先度設定に関係しないSTARTコマンドの他のオプションは意図的に省略しています)。

C:\>start /?
指定されたプログラムまたはコマンドを実行するためのウィンドウを開きます。
START ["タイトル"] [/D パス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMAノード>] [/AFFINITY <16進数アフィニティマスク>] [/WAIT] [/B]
[コマンド/プログラム] [パラメータ]
LOW  IDLE優先度クラスでアプリケーションを起動
NORMAL NORMAL優先度クラスでアプリケーションを起動
HIGH  HIGH優先度クラスでアプリケーションを起動
REALTIME REALTIME優先度クラスでアプリケーションを起動
ABOVENORMAL ABOVENORMAL優先度クラスでアプリケーションを起動
BELOWNORMAL BELOWNORMAL優先度クラスでアプリケーションを起動

ご覧の通り、STARTコマンドでもタスクマネージャーと同じ6種類の優先度しか指定できません。

この方法のデメリット:

  • 選択できるのは6種類の優先度のみ

方法3:wmic.exeユーティリティを使う

上記の通り、タスクマネージャーやSTARTコマンドによる優先度の割り当ては柔軟性に欠けます。そこで、より柔軟に操作できる方法としてwmic.exeを使ってみましょう。

コマンドプロンプトでの基本構文:

wmic process where name="AppName" CALL setpriority ProcessIDLevel

実行例:

wmic process where name="calc.exe" CALL setpriority 32768

または

wmic process where name="calc.exe" CALL setpriority "above normal"

指定可能な優先度の値(プリセット):

  • idle:64
  • below normal:16384
  • normal:32
  • above normal:32768
  • high priority:128
  • real time:256

補足: 同じ名前のプロセスが複数存在する場合はどうすればよいのでしょうか。プロセスの優先度は、プロセス名だけでなくPID(プロセスID)を使っても変更できます。

wmic.exeで必要な情報を取得する簡単な例を紹介します。

まず、次のコマンドを使用します。

wmic process list brief

補足: 出力されるプロセス一覧が非常に長くなるため、実行結果の例は省略します。必要であればご自身で試してみてください。

このコマンドで、ローカルコンピューター上で実行中のプロセス一覧を取得できます。続いて、次のコマンドを実行します。

wmic process list brief | find "cmd.exe"

実行結果:

Windowsのプロセス優先度を完全解説|タスクマネージャー・STARTコマンド・wmicで優先度を変更する方法

わかりやすくするために、あえてcmd.exeを複数起動しています。

これで、プロセス一覧が名前に「cmd.exe」を含むものだけに絞り込まれました。対象プロセスのPIDに注目してください。

次に、WMIを使って目的のプロセスを選択してみましょう。以下のコマンドを入力するだけです。

wmic process where description='cmd.exe' list brief

実行結果:

Windowsのプロセス優先度を完全解説|タスクマネージャー・STARTコマンド・wmicで優先度を変更する方法

両者の結果を比較してみてください。CMD.EXEのPIDを覚えておきましょう。

wmic.exeで特定のプロセスを指定するコマンド構文:

wmic process where processid='XXXX' CALL setpriority ProcessIDLevel

これで、特定のプロセス(例えばPID=8476)の優先度を変更できます。

wmic process where processid='8476' CALL setpriority 32768

または

wmic process where processid='8476' CALL setpriority "above normal"

あとは、実際に試して最適な優先度を選び、サービスやプロセスのパフォーマンス、そしてエンドユーザーの体験向上につなげてください。

  1. Windows 10でアプリのCPU優先度を設定・変更する3つの方法

    Windows 10でアプリのCPU優先度を設定する方法 Windowsでは、システム上で動作するアプリケーションに対して、その役割に応じて優先度が自動的に割り当てられています。CPUは優先度レベルに基づいて各プロセスに処理時間を配分しており、「高」や「通常」など複数段階の優先度が用意されています。優先度が高いほど、そのプロセスやアプリに多くのCPU時間が割り当てられる仕組みです。 この仕組みによって、フォアグラウンドアプリとバックグラウンドアプリのどちらを重要視するかが決まり、それに応じて処理の優先順位が付けられます。CPUにとって最も重要なのはWindowsのシステムアプリであり、これらは

  2. Windows 10/11で「ディスクの管理」を開く5つの方法を徹底解説

    「ディスクの管理」は、Microsoft Windowsに標準搭載されているツールで、パソコンに接続されたディスクドライブやパーティションの確認・管理を行えます。ハードディスクのパーティション分割、フォーマット、ドライブ文字の変更など、ディスク関連の操作を行いたい場合には、このツールを開く必要があります。しかし、このユーティリティには専用のショートカットやアイコンが用意されていないため、ここではWindows 10/11で「ディスクの管理」を開く複数の方法をご紹介します。 Windows 10/11でディスクの管理を開く5つの方法 1. Windows検索から開く 手順1: Windows +