Windows の LSAISO プロセスでの CPU 使用率が高い

適用対象: Windows 10, version 1909Windows Server, version 1909 (Datacenter, Standard)Windows 10, version 1809

現象


LSAISO (LSA分離プロセス)では、Windows 10、Windows Server 2016、Windows Server 2019、または Windows サーバー バージョン 1909 を実行しているコンピューターで高い CPU 使用率が発生します。

原因


Windowsでは、LSAISOプロセスは、仮想セキュア モード (VSM) と呼ばれる新しいセキュリティ環境で分離ユーザー モード (IUM) プロセスとして実行されます。

IUM プロセスに DLL を読み込もうとしたり、スレッドを挿入したり、ユーザー モード APC を提供したりするアプリケーションとドライバーは、システム全体を不安定にする可能性があります。この不安定化には、「現象」に記載されている高LSAISO CPU シナリオが含まれる場合があります。

解決方法


この問題を解決するには、以下のいずれかの方法を使用します。

方法 1: 消去プロセスを使用する

一部のアプリケーション (ウイルス対策プログラムなど) では、LSAISO プロセスに DLL またはキュー APC を挿入するのが一般的です。これにより、LSAISOプロセスで CPU 使用率が高くなります。

トラブルシューティングのために、IUM プロセスにツールをアタッチすることはできません。これにより、LSAISO CPU スパイク中に Windows デバッグ ツールまたは WPA\XPERF を使用してスタック トレースをキャプチャできなくなります。したがって、このシナリオで最善のトラブルシューティング方法は、「排除のプロセス」の方法論を使用することです。これを行うには、CPU スパイクが軽減されるまでアプリケーションとドライバーを無効にします。問題の原因となっているソフトウェアを特定したら、ソフトウェアの更新についてベンダに問い合わせてください。次の MSDN トピックに記載されている ISV の推奨事項を参照できます。

分離ユーザー モード (IUM) プロセス

注: この方法では、CPU スパイクのテスト中に、疑わしいソフトウェアとドライバーを無効にした後に再起動が必要になる場合があります。

方法 2: キューに入れられた APC を確認する

Windows 用の無料のデバッグ ツール (WinDbg、KD、CDB、NTSD) をダウンロードします。これらのツールは、Windows ドライバー キット (WDK) と Windows ドライバー キット (WDK) の両方に含まれています。次に、次の手順に従って、APC から LSAISO にキューイングしているドライバを特定します。

  1. CPU スパイクを再現しながら、次の Sysinternals Web サイトの NotMyFault.exe などのツールを使用してカーネル メモリ ダンプを生成します。

    システムズ スイート

    メモシステムで VSM が有効になっている場合は復号化が必要になるため、完全なメモリ ダンプはお勧めしません。カーネル ダンプを有効にするには、次の手順を実行します。  
    1. コントロール パネルの[システム]を開き、[システムの詳細設定]を選択します。
    2. [システムのプロパティ]ダイアログ ボックスの [詳細設定]タブで、[起動と回復]領域の[設定]を選択します。
    3. [起動と回復]ダイアログ ボックスで、[デバッグ情報の書き込み]ボックスの一覧の [カーネル メモリ ダンプ]を選択します。
    4. 手順 5 で使用するダンプ ファイルの場所をメモし、[OK] を選択します。
  2. Windows 用デバッグ ツールから WinDbg.exe ツールを開きます。
  3. [ファイル]メニューの [シンボル ファイルのパス]をクリックし、[シンボルパス] ボックスに Microsoft シンボル サーバーの次のパスを追加して、[OK] をクリックします。

    https://msdl.microsoft.com/download/symbols

  4. [ファイル]メニューの [クラッシュ ダンプを開く]をクリックします。

  5. 手順 1d でメモしたカーネル ダンプ ファイルの場所を参照し、[開く]を選択します。dmp ファイルの日付を調べて、このトラブルシューティング セッション中に新しく作成されたことを確認します。

  6. コマンドウィンドウで!apcと入力し、Enter キーを押します。

    AttachFileHandler

    出力は、次のスクリーン ショットのようになります。
    apc の出力
  7. LsaIso.exeの検索結果を検索します。LsaIso.exe (手順 6 の出力のスクリーン ショットの例を参照)の下に "<ProblemDriver>.sys" という名前のドライバが表示されている場合は、ベンダに問い合わせて、「分離ユーザー モード (IUM) プロセス」トピックに記載されている推奨緩和策を参照してください。
     
    注:Lsaiso.exeの下にドライバが表示されない場合は、LSAISO プロセスにキューに入れられた APC がないことを意味します。

詳細情報


VSM は、仮想信頼レベル (VTL)と呼ばれる分離モードを使用して IUM プロセス (トラストレットとも呼ばれます) を保護します。LSAISOなどの IUM プロセスは VTL1 で実行され、他のプロセスは VTL0 で実行されます。VTL1 で実行されるプロセスのメモリ ページは、VTL0 で実行されている悪意のあるコードから保護されます。

Windows 10 および Windows Server 2016 より前のバージョンでは、ローカル セキュリティ機関サブシステム サービス (LSASS) プロセスは、ローカル システム ポリシー、ユーザー認証、および監査の管理のみを担当し、次のような機密性の高いセキュリティ データも処理していました。パスワードのハッシと Kerberos キー。

VSM のセキュリティ上の利点を使用するために、VTL1 で実行されるLSAISOトラストレットは、VTL0 で実行されているLSAISOプロセスとRPC チャネルを介して通信します。LSAISOシークレットは LSASS に送信される前に暗号化され、LSAISOのページは VTL0 で実行されている悪意のあるコードから保護されます。