パフォーマンス カウンターを使用して、リモート デスクトップ セッション ホストでのアプリのパフォーマンス問題を診断する

適用対象: Windows Server 2022、Windows Server 2019、Windows 10

アプリケーションのパフォーマンスの低下は、特に低速または応答しないアプリケーションの場合などに、診断するのが最も困難な問題の 1 つです。 従来は、CPU、メモリ、ディスク入出力、およびその他のメトリックを収集して診断を開始します。 次に、Windows パフォーマンス アナライザーなどのツールを使用して、問題の原因を特定します。 残念ながら、ほとんどの状況で、リソース消費量カウンターには頻繁かつ大幅な変動があるため、このデータは根本原因の特定には役立ちません。 このような状況では、データを読み取って、報告された問題に関連付けることが困難になります。

注意

ユーザー入力遅延カウンターが対応しているのは、以下のみです。

  • Windows Server 2019 以降
  • Windows 10 バージョン 1809 以降

ユーザー入力遅延カウンターは、エンド ユーザーのリモート デスクトップ パフォーマンスの不適切なエクスペリエンスの根本原因をすばやく特定するのに役立ちます。 このカウンターは、マウスやキーボードの使用状況などのユーザー入力が、プロセスに選択される前にキューに留まる時間を測定します。 このカウンターは、ローカルとリモートの両方のセッションに適用されます。

次の図は、クライアントからアプリケーションへのユーザー入力フローを大まかに示したものです。

Diagram of user input flows from the users Remote Desktop client to the application.

ユーザー入力遅延カウンターは、入力がキューに入れられたときから、従来のメッセージ ループ内でアプリによって取得されたときとの最大デルタ (時間間隔内) を測定します。 従来のメッセージ ループを次のフロー チャートに示します。

Diagram of user input Delay performance counter flow.

このカウンターの 1 つの重要な詳細な内容は、構成可能な間隔内での最大のユーザー入力遅延を報告しているという点です。 この遅延は、入力がアプリケーションに到達するまでにかかる最長の時間であり、タイピングなどの重要で目に見えるアクションの速度に影響する場合があります。

たとえば、次の表では、ユーザー入力遅延はこの間隔内で 1,000 ミリ秒として報告されます。 カウンターは、その間隔で最も遅いユーザー入力遅延を報告します。 ユーザーの "遅い" という感覚は、すべての入力合計の平均速度ではなく、ユーザーが経験する最も遅い入力時間 (最長) によって決まるため、このカウンターではこの遅延が報告されます。

Number 0 1 2
遅延 16 ミリ秒 20 ミリ秒 1,000 ミリ秒

新しいパフォーマンス カウンターを有効にして使用する

これらの新しいパフォーマンス カウンターを使用するには、最初に次のコマンドを実行してレジストリ キーを有効にする必要があります。

reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v "EnableLagCounter" /t REG_DWORD /d 0x1 /f

注意

Windows 10 バージョン 1809 以降または Windows Server 2019 以降を使用している場合は、レジストリ キーを有効にする必要はありません。

次にサーバーを再起動します。 続いて、パフォーマンス モニターを開き、次のスクリーン ショットに示すように、プラス アイコン (+) を選択します。

Screenshot showing how to add the User input Delay performance counter.

次に、[カウンターの追加] ダイアログが表示され、ここでは [User Input Delay per Process] (プロセスあたりのユーザー入力遅延) か [User Input Delay per Session] (セッションあたりのユーザー入力遅延) を選択できます。

Screenshot showing how to add the User input Delay per session.

Screenshot showing how to add the User input Delay per process.

[User Input Delay per Process] (プロセスあたりのユーザー入力遅延) を選択した場合、選択したオブジェクトのインスタンス (つまりプロセス) が SessionID:ProcessID <Process Image> の形式で表示されます。

たとえば、電卓アプリがセッション ID 1 で実行している場合、1:4232 <Calculator.exe> と表示されます。

注意

すべてのプロセスが含まれるわけではありません。 SYSTEM として実行しているプロセスは表示されません。

カウンターは、ユーザー入力遅延を追加するとすぐに報告し始めます。 既定では最大目盛りは 100 (ms) に設定されています。

Screenshot of an example of activity for the User Input Delay per process in the Performance Monitor.

次に、[セッションあたりのユーザー入力遅延] を見てください。 セッション ID ごとにインスタンスがあり、そのカウンターは、指定されたセッション内のすべてのプロセスのユーザー入力遅延を示します。 さらに、"最大値" (全セッションでのユーザー入力遅延の最大値) と "平均" (全セッションでの平均値) という 2 つのインスタンスがあります。

次の表に、これらのインスタンスの表示例を示します。 レポート グラフの種類に切り替えることにより、同じ情報を取得できます。

カウンターの種類 [インスタンス名] 報告される遅延 (ミリ秒)
プロセスあたりのユーザー入力遅延 1:4232 <Calculator.exe> 200
プロセスあたりのユーザー入力遅延 2:1000 <Calculator.exe> 16
プロセスあたりのユーザー入力遅延 1:2000 <Calculator.exe> 32
セッションあたりのユーザー入力遅延 1 200
セッションあたりのユーザー入力遅延 2 16
セッションあたりのユーザー入力遅延 平均 108
セッションあたりのユーザー入力遅延 最大 200

過負荷状態のシステムで使用されるカウンター

次に、アプリのパフォーマンスが低下した場合にレポートで何が表示されるかを見てみましょう。 次のグラフは、Microsoft Word でリモートで作業しているユーザーの測定値を示しています。 この場合、ユーザーのリモートでのサインインが増えると、パフォーマンスが時間と共に低下しています。

Screenshot of an example performance graph for the RDSH server running Microsoft Word.

グラフの各線の読み取り方を次に示します。

  • ピンクの線は、サーバーにサインインしたセッション数を示します。
  • 赤の線は、CPU 使用率です。
  • 緑の線は、すべてのセッションで最大のユーザー入力遅延です。
  • 青の線 (このグラフでは黒として表示) は、すべてのセッションのユーザー入力遅延の平均を表します。

CPU スパイクとユーザー入力遅延には相関関係があります。 CPU の使用率が増えると、ユーザー入力遅延が増加します。 また、より多くのユーザーがシステムに追加されると、CPU 使用率が 100% に近づき、ユーザー入力遅延が頻繁に急増することになります。 このカウンターは、サーバーがリソース不足になった場合に有効ですが、特定のアプリケーションに関連するユーザー入力遅延も追跡できます。

構成オプション

このパフォーマンス カウンターを使用するときに注意すべき重要な点は、既定では 1,000 ミリ秒の間隔でユーザー入力遅延をレポートするということです。 次のスクリーンショットに示すように、パフォーマンス カウンターのサンプリング間隔プロパティを別の値に設定した場合、報告された値は正しくありません。

Screenshot of the Performance Monitor Properties dialog.

この問題を修正するには、使用する間隔 (ミリ秒単位) に一致するように次のレジストリ キーを設定できます。 たとえば、1 秒ごとのサンプリングから、5 秒ごとのサンプリングに変更した場合、このキーを 5000 ミリ秒に設定する必要があります。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]

"LagCounterInterval"=dword:00005000

注意

Windows 10 バージョン 1809 以降または Windows Server 2019 以降を使用している場合は、パフォーマンス カウンターを修正するために LagCounterInterval を設定する必要はありません。

同じレジストリ キーの下に、役立つと思われるキーもいくつか追加しました。

LagCounterImageNameFirst — このキーを DWORD 1 に設定します (既定値は 0、つまりキーが存在しません)。 このキーは、カウンター名を "Image Name <SessionID:ProcessId>" に変更します (例: "explorer <1:7964>")。 この変更は、イメージ名で並べ替えを行う場合に役立ちます。

LagCounterShowUnknown — このキーを DWORD 1 に設定します (既定値は 0、つまりキーが存在しません)。 このキーは、サービスまたは SYSTEM システムとして実行しているすべてのプロセスを表示します。 一部のプロセスは、セッションが "?" と設定されて表示されます。

次の図は、両方のキーがオンの場合に表示される内容を示しています。

Screenshot of the performance monitor with both keys on.

Microsoft 以外のツールで新しいカウンターを使用する

監視ツールは、パフォーマンス カウンターを使用することで、このカウンターを使用できます。

フィードバックをお待ちしております

フィードバック Hub から、この機能に関するフィードバックを送信できます。 [アプリ] > [その他すべてのアプリ] を選択し、投稿のタイトルに "RDS パフォーマンス カウンター—パフォーマンス モニター" を含めます。