次の方法で共有


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

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

Note

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

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

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

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

ユーザーのリモート デスクトップ クライアントからアプリケーションへのユーザー入力フローの図。

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

ユーザー入力遅延パフォーマンス カウンター フローの図。

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

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

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

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

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

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

Note

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

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

パフォーマンス カウンター [User Input Delay](ユーザーによる入力の延期期間) の追加方法を示すスクリーンショット。

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

セッションごとのユーザー入力遅延を追加する方法を示したスクリーンショット。

プロセスごとのユーザー入力遅延を追加する方法を示したスクリーンショット。

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

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

Note

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

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

パフォーマンス モニターにおけるプロセスあたりのユーザー入力遅延のアクティビティの例のスクリーンショット。

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

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

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

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

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

Microsoft Word を実行している RDSH サーバーのパフォーマンス グラフの例のスクリーンショット。

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

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

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

構成オプション

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

[パフォーマンス モニターのプロパティ] ダイアログのスクリーンショット。

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

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

"LagCounterInterval"=dword:00005000

Note

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

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

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

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

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

両方のキーを有効にしたパフォーマンス モニターのスクリーンショット。

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

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

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

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