2019-07-19T10:30:04Z kzstock [Event ID 1020] Perflib:拡張パフォーマンスカウンターエラーの修復手順|Local Session Manager(LSM)とlagcounterdef.ini
Scrap 2nd.
3

[Event ID 1020] Perflib:拡張パフォーマンスカウンターエラーの修復手順|Local Session Manager(LSM)とlagcounterdef.ini

1st:
検証:Windows 10 Pro May 2019 Update, v1903.18362.239
ログの名前 Application
ソース Perflib
イベントID 1020
レベル エラー

Windows 10 May 2019 Update, version 1903 へアップデートしたタイミングでイベントログに記録されるようになった [イベントID1020] Perflibエラーについて書いています。

イベントログに記録されたメッセージを読むと、次のキーワードが修復へのカギです。

  • Perflib: Performance counter library
  • LSM: Local Session Manager
  • perfts.dll

Perflibエラーは、パフォーマンスカウンターライブラリ (perflib) に何らかの不具合が発生していることを通知するもので、WindowsサービスのLSMが関係しています。


LSM
Local Session Manager

ローカル ユーザー セッションを管理するコア Windows サービスです。このサービスを停止したり無効にしたりすると、システムが不安定になります。

Windowsサービスを起動してLSMの状態を確認したところ、サービスの状態は「実行中」だったのでLSMは正常に動作していました。

従って、perfts.dllの問題です。

イベントログのステータスレベルが [レベル:エラー] なので、私的には積極的に修復しておきたいエラーです。

[ソース:Perflib] に関するイベントログはこれまでも修復した実績があるので、これまでと同様に次の手順を実行したところ、イベントビューアーから EVENT ID 1020 が消えました。

  1. パフォーマンスカウンターを再構築する
  2. perfts.dllを再構築する


イベントビューアーのメッセージ

イベントログに記録されたメッセージは次の通りです。
イベントビューアーのメッセージ
メッセージ 必要なバッファー サイズが、"LSM" サービスの "C:\Windows\System32\perfts.dll" 拡張可能カウンター DLL の Collect 関数に渡されたバッファー サイズを超えています。指定されたバッファー サイズは 27696、必要なサイズは 35616 でした。
ログの名前 Application
ソース Perflib
イベントID 1020
レベル エラー
ユーザー SYSTEM

修復手順

私が実行した二つの手順は次の通りです。

  1. パフォーマンスカウンターを再構築する
  2. perfts.dllを再構築する

それぞれの具体的な手順は次の通りです。

手順A
イベントログにPerflibエラーや警告が記録される時は、パフォーマンスカウンターを再構築すると改善する可能性があります。

管理者モードで起動したコマンドプロンプトまたは、Windows PowerShellで次のコマンドを実行します。

>lodctr /R
>_
管理者:Windows PowerShellー □ × 
PS C:\WINDOWS\system32> lodctr /R

情報: パフォーマンス カウンターの設定をシステムのバックアップ ストアから正常に再構築しました
手順B
perfts.dllを再構築するにはPerfIniFileが必要です。

レジストリエディターでperfts.dllを検索すると \LSM\Performance で lagcounterdef.ini を見つけることができました。

PerfIniFile=lagcounterdef.ini



LODCTRコマンドの引数にlagcounterdef.iniを設定してperfts.dllを再構築(初期化)します。

>LODCTR perfts.ini
>_
管理者:Windows PowerShellー □ × 
PS C:\WINDOWS\system32> lodctr C:\Windows\INF\LSM\0411\lagcounterdef.ini

エラーメッセージが表示されなければperfts.dllの再構築は成功しています。

例えば、以下のメッセージが表示されたときはINIファイルの場所を確認しましょう。
初期化ファイル ...\lagcounterdef.ini が見つかりません

あとがき

イベントログに [ソース:Perflib] と記録されている時は、パフォーマンスカウンターが破損している可能性があります。

イベントログのレベルが警告であれば放置する選択肢もありますが、エラーは可能であれば修復しておきたいところです。

拡張パフォーマンスカウンターを再構築するためのINIファイルは、次の手順で探すことができます。

  1. レジストリエディターを起動する
  2. DLLファイル名で検索する(例:perfts.dll)
  3. PerfIniFileの値を確認する(例:lagcounterdef.ini)

今回のようにDLLとINIのファイル名が異なる時は、次の法則を参考にして探すことができます。

C:\Windows\INF\<ServiceName>\0411\xxx.ini

レジストリエディターで検索した時のスナップショットは次の通りです。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LSM\Performance



おわり
次の投稿 前の投稿 ホーム

0 件のコメント:

コメントを投稿

にゃんつくばっと