パフォーマンスカウンタのエラー

パフォーマンスカウンタを起動するとエラーが発生します

イベントビュアーで参照したときに、”Windows ログ”に対して次のようなイベントが書き込まれます

  • イベント 3001, LoadPerf
    レジストリのパフォーマンス カウンタ名文字列の値が正しくフォーマットされていません。問題の文字列は n です。この文字列に対するインデックス値は、データ セクションの最初の DWORD に含まれ、最後の有効なインデックス値は、データ セクションの n 番目と n+1 番目の DWORD に含まれています。
  • イベント 3006, Search
    カウンタが読み込まれていないか、共有メモリ オブジェクトを開けなかったため、パフォーマンス モニタを初期化できませんでした。これによって影響されるのは、パフォーマンス モニタのカウンタの使用可能性のみです。コンピュータを再起動してください。
  • イベント 3006, Search
    カウンタが読み込まれていないか、共有メモリ オブジェクトを開けなかったため、Gatherer オブジェクトのパフォーマンス モニタを初期化できませんでした。これによって影響されるのは、パフォーマンス モニタのカウンタの使用可能性のみです。コンピュータを再起動してください。コンテキスト: アプリケーション、 SystemIndex カタログ
  • イベント 10021, Search
    WSearchIdxPi のインスタンス のパフォーマンス カウンタ レジストリを取得できませんでした。次のエラーが発生しました: この操作を正しく終了しました。 0x0。
  • イベント 8317, MSSQL$SQLEXPRESSレジストリ キー ‘HKLM\SYSTEM\CurrentControlSet\Services\MSSQL$SQLEXPRESS\Performance’ に関連付けられている値 ‘First Counter’ をクエリできません。SQL Server パフォーマンス カウンタが無効です。
  • イベント 3009, LoadPerf
    サービス .NETFramework () のパフォーマンス カウンターの文字列をインストールできませんでした。エラー コードがデータ セクションの最初の DWORD に含まれています。
  • イベント 2007, LoadPerf
    .NETFramework サービスのパフォーマンス カウンターを修復できません。LODCTR ツールを使用してパフォーマンス カウンターを手動で再インストールしてください。

イベント 3001, LoadPerf について n は1846の場合が多いようです。

イベント 3009, LoadPerf のサービスについて .NET CLR Data, .NET CLR Networking, .NET Data Provider for Oracle, .NET Data Provider for SqlServer, aspnet_state, Remote Access, UGHTRSVC, usbhub, WSearch, WSearchIdxPi, WSService においても同様のメッセージが書き込まれることがあります。

  • イベント 2001, usbperf
    usbperf\Performance キーの “First Counter” 値を読み取れません。ステータス コードはデータで戻されました。
  • イベント 1008, perflib
    サービス “RemoteAccess” (DLL “C:\Windows\System32\rasctrs.dll”) の Open プロシージャに失敗しました。このサービスのパフォーマンス データは利用できません。データ セクションの最初の 4 バイト (DWORD) に、エラー コードが含まれています。
  • イベント 2001, perflib
    サービス “W3SVC” (DLL “C:\WINDOWS\system32\inetsrv\w3ctrs.dll”) の Open プロシージャに失敗しました。このサービスのパフォーマンス データは利用できません。データ セクションの最初の 4 バイト (DWORD) に、エラー コードが含まれています。
  • イベント 2002, IIS-W3SVC-PerfCounters
    Web サービス カウンターの設定に失敗しました。Web サービス カウンターが正しく登録されていません。

イベント 1008, perflib に関しては、ほかに aspnet_state, ASP.NET_4.0.30319, ASP.NET, .NETFramework も同様のエラーが発生する場合があります。

  • lodctr /R を実行すると エラー 2 が発生します。
  • lodctr /R を実行すると 「パフォーマンス カウンターの設定をシステムのバックアップストアから再構築できませんでした。エラーコードは 5 です。」と表示される。エラー 80078005 が発生します。
  • perfmon /report でエラー:レポートを作成する際に、エラーが発生します。
    アクセスが拒否されました。
  • Windows 8.1 で perfmon /report を実行すると「レポートを作成しようとしてエラーが発生しました。 オペレーターまたは管理者が要求を拒否しました。」 The operator or administrator has refused the request.
    この件については Event 513, CAPI2 の記事を参照してください。

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\(Service name)\Performance に First Counter, First Help, Last Counter, Last Help の値が存在しない、または正しく設定されていない場合に発生します。
  • %SystemRoot%\Inf\.NET CLR Data, WmiApRpl などのフォルダーに iniファイルが含まれていない場合に発生します(特にイベント 3009, LoadPerf)。

修復の手順

1. iniファイルのコピー

対応するサービス(%SystemRoot%\Inf のサブフォルダー名)

  • .NET CLR Data
  • .NET CLR Networking
  • .NET CLR Networking 4.0.0.0
  • .NET Data Provider for Oracle
  • .NET Data Provider for SqlServer
  • .NET Memory Cache 4.0
  • .NETFramework
  • ASP.NET
  • ASP.NET State
  • ASP.NET_2.0.50727 (.ini)
  • ASP.NET_4.0.30319
  • ASP.NET_64_2.0.50727 (.ini)
  • aspnet_state
  • BITS (.ini)
  • ESENT (.ini)
  • MSDTC (.ini)
  • MSDTC Bridge 3.0.0.0
  • MSDTC Bridge 4.0.0.0
  • rdyboost (.ini)
  • RemoteAccess (.ini)
  • ServiceModelEndpoint 3.0.0.0
  • ServiceModelOperation 3.0.0.0
  • ServiceModelService 3.0.0.0
  • SMSvcHost 3.0.0.0
  • SMSvcHost 4.0.0.0
  • TAPISRV (.ini)
  • TermService
  • UGatherer (.ini)
  • UGTHRSVC (.ini)
  • usbhub (.ini)
  • Windows Workflow Foundation 3.0.0.0
  • Windows Workflow Foundation 4.0.0.0
  • WmiApRpl (.ini)
  • wsearchidxpi (.ini)

%SystemRoot%\Inf\(ServiceName) フォルダー内のiniファイルの末尾が _d.ini のファイルは 親フォルダーの ini ファイルを参照しています。ほとんどの場合 サイズが 1KByte 以下です。そしてファイルの日時が異なりますが同じ内容となっています。_d.iniファイルが存在しない場合、0409, 0411等のフォルダーのiniファイルに記述があります。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\(name)\PerformanceキーのPerfInFileにパフォーマンスカウンタに使用する.iniファイル名の記載があります。

インストールディスク、または %SystemRoot%\Winsxs のサブフォルダーから該当するファイルをコピーします。この際、下記の通りインストールしている言語パックに対応するフォルダーのみコピーを行います。コピーを行ったファイルに対してcaclsを利用してアクセス権を設定しなおします。ASP.NET_2.0.50727,  ASP.NET_64_2.0.50727, MSDTC Bridge 3.0.0.0, ServiceModelEndpoint 3.0.0.0, ServiceModelOperation 3.0.0.0, ServiceModelService 3.0.0.0, SMSvcHost 3.0.0.0, Windows Workflow Foundation 3.0.0.0 に存在するファイルに対しては行う必要はありません。

[例]
xcopy %SystemRoot%\WinSxS\amd64_netfx4-_dataperfcounters_ini_b03f5f7f11d50a3a_4.0.15522.0_none_69a84f70710ce8f7\_DataPerfCounters_d.ini %SystemRoot%\Inf\.NET CLR Data

アクセス権を変更します。

cacls (file) /S: "D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1200a9;;;BA)(A;;0x1200a9;;;SY)(A;;0x1200a9;;;BU)(A;;0x1200a9;;;AC)(A;;0x1200a9;;;S-1-15-2-2)" を実行してアクセス権を修正します。

_none は 0000, _en-us は 0409 or 0009, _ja-jp は 0411 or 0011 の対応となります。

  • 000=Neutral
  • 001=Arabic
  • 005=Czech
  • 006=Danish
  • 007=German
  • 008=Greek
  • 009=English
  • 00A=Spanish
  • 00B=Finnish
  • 00C=French
  • 00D=Hebrew
  • 00E=Hungarian
  • 010=Italian
  • 011=Japanese
  • 012=Korean
  • 013=Dutch
  • 014=Norwegian
  • 015=Polish
  • 019=Russian
  • 01D=Swedish
  • 01F=Turkish
  • 804=Chinese (PRC)
  • 404=Chinese (Taiwan)
  • 416=Portuguese (Brazil)
  • 816=Portuguese (Portugal)

ロケール ID (LCID) の一覧

フォルダーの中に ファイルが存在しない、空のフォルダーが存在すると lodctr /R を実行したときに First Counter, First Help, Last Counter, Last Help の値が正しく設定されず消去されてしまいます。空のフォルダーを削除してから実行してください。使用している言語以外の対応するフォルダーを削除します。

2. First Counter, First Help, Last Counter, Last Helpの追加

regedit.exeを開いて次のレジストリーキーを参照します。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\(name)\Performance を参照します。

(例)

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UGatherer\Performance
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmiApRpl\Performance
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbhub\Performance

First Counter, First Help, Last Counter, Last Help (REG_DWORD) を追加します。値は 0 で問題ありません。

lodctr /R を コマンドプロンプトから実行します。「情報: パフォーマンス カウンタの設定をシステムのバックアップ ストアから正常に再構築しました」が表示されます。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\(name)\Performance のFirst Counter, First Help, Last Counter, Last Help の値が正しく設定されているか確認します。

Dism /Online /Cleanup-Image /RestoreHealth を実行します。
sfc /scannow を実行します。


依然としてエラーが発生する場合は パフォーマンスカウンタのエラー(setokynet.wordpress.com) の記事を参照してください。


このエラーによるシステムへの影響

正しく構成されていないと システムが不安定になったり、OSの動作が遅くなったりします。単にパフォーマンスカウンタのエラーだけでなく、Windows Update でシステムファイルが更新されないなどの不具合につながるおそれがあります。