WMIPRVSEによるCpu使用率が高い。WINDOWSで一定の間隔でEXEプロセス

  • 11/16/2020
  • 3分読み取り
    • D
    • x

この資料では、cpu使用率が高い問題の回避策を提供します。WMIPRVSE.EXEプロセスを一定の間隔で実行します。,

元の製品バージョン:Windows Server2019、Windows Server2016、Windows Server2012R2、Windows10-すべてのエディション
元のKB番号:4483874

現象

Windowsベースのコンピューターを使用すると、WINDOWS Management Instrumentation(WMI)プロバイダーホスト(WmiPrvSE.exe)プロセスは、高いCPU容量(100パーセントに近い)を15-20分ごとに数分間使用しています。

問題が発生した場合は、タスクマネージャーを使用してWMIPRVSEのプロセス識別子(PID)を識別します。高いCPUを消費しているEXEプロセス。, 次に、管理者特権でコマンドプロンプトを開き、次のコマンドを実行します。

tasklist /m wmiperfclass.dll

WMIPRVSEのリスト。このモジュールをロードしたEXEプロセスが表示されます。 通常は唯一の工程を掲載しています。 しかし、両方を有する者は、32-bitおよび64ビットお客様でお見かけすることがある二つのプロセス。 これは出力例です:

イメージ名PIDモジュール
========== ======== ==========================
WmiPrvSE.exe2140WmiPerfClass.,dll

リストされたプロセスのPIDがタスクマネージャーで見つかったプロセスと一致する場合は、この資料で説明されている問題が発生している

原因

この問題は、次のいずれかの要因によって引き起こされる可能性があります。

一つ以上のプロセスが多数のハンドルを使用しています

すべてのハンドルはカーネル構造\BaseNamedObjectsに格納されています。 のWMIPerfClassプロバイダをスキャンこの構造の作成に際し、性能クラスに関連する仕事のオブジェクト。,

ハンドル数が多いためにこの構造が肥大化すると、操作はCPU使用率が高くなり、通常よりも時間がかかります。

プロセスが約30,000以上のハンドルを使用している場合、またはシステム上のハンドルの総数が50,000を超える場合、この状態に影響が予想される場

サポートされているオペレーティングシステムバージョンの月2020にリリースされる更新プログラムには、いくつかのパフォーマンスの最適化 Windowsのバージョンに適用される更新プログラムの詳細については、Windowsの更新履歴を参照してください。,

システム上で実行されている一つ以上のプロセスが大量のメモリを使用しています

実行中の各プロセスのメモリ領域を照会する必要があるため、これはプロセスパフォーマンスクラスの作成に影響します。 プロセスによって使用されるメモリは断片化される可能性があり、これにより操作がよりリソース集約的になります。 これは、WMIPerfClassが”高価な”パフォーマンスカウンターも照会しているために発生します。,

次のPowerShellコマンドを実行することで、コストのかかるパフォーマンスカウンタが有効になっているかどうかを確認できます。

‎ (gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"} 

コマンドが結果を返す場合、これは有効になっているコストのかかるパフォーマンスカウンタを示します。,d=”77921f1d55″>

Win32_PerfFormattedData_PerfProc_fullimage_costly
Win32_PerfRawData_PerfProc_FullImage_costly
Win32_PerfFormattedData_PerfProc_image_costly
Win32_PerfRawData_PerfProc_Image_costly
Win32_PerfFormattedData_PerfProc_processaddressspace_costly
Win32_PerfRawData_PerfProc_Processaddressspace_costly
Win32_PerfFormattedData_PerfProc_threaddetails_costly
Win32_PerfRawData_PerfProc_Threaddetails_costly

回避策

この問題を解決するには、多数のハンドルまたは大量のメモリを使用しているプロセスを特定します。, のプロセスにしてメモリリークやハンドル漏えい問題です。 回避策として、プロセスを再起動します。

windows Server2016以降のバージョンのWindowsを使用している場合、デフォルトでは、コストのかかるパフォーマンスカウンターは、次の累積的な更新プログラムから無効になります。

  • Windows Server2016/Windows10version1607(RS1)
    October18,2018—KB4462928(OS Build14393.2580)
  • Windows10version1703(RS2)
    July24,2018—KB4338827(OS Build15063.1235)
  • windows10バージョン1709(rs3)
    july24,2018—kb4338817(osビルド16299.,579)
  • Windows10version1803(RS4)
    July16,2018—KB4345421(OS Build17134.167)

累積的な更新プログラムのインストール後、コストのかかるパフォーマンスカウンターに関連するクラスが必要な場合は、次のレジストリサブキーの下でコストのかかるプロバイダーを有効にする値を1(DWORD)に設定して、再び使用できるようにします。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem

プロセスが多数のハンドルを使用している場合、累積的な更新プログラムは動作に影響しません。

この問題は、クライアントがパフォーマンスクラスを照会しているときに発生します。, これは通常、監視アプリケーションです。

回避策として、監視アプリケーションを無効にして、パフォーマンスクラスの作成を防ぐこともできます。

詳細情報

WMIには、いくつかのパフォーマンスクラスが用意されています。 詳細については、”パフォーマンスカウンタクラ

これらのクラスは、システムで使用可能なパフォーマンスカウンターに基づいて動的に作成されます。 クエリされているクラスだけでなく、すべてのクラスが同時に作成されます。,

WMIPerfClassは、WMIクライアントがこれらのクラスのいずれかを照会したり、使用可能なクラスを列挙したりするときに、これらのクラスの作成を処理するモ

これらのパフォーマンスクラスは、15分から20分後に無効化されるキャッシュに格納されます。 どのキャッシュを無効化し、性能クラスを作成した場合は再度、クライアントが要求します。

パフォーマンスクラスを作成することは、WMIPerfClassであることを意味します。dllモジュールはWMIPRVSE内にロードする必要があります。EXEプロセスと実行される関連コード。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です