本記事はマイクロソフト社員によって公開されております。
こんにちは、Windows サポートチームの栗木です。
本記事では、Windows の標準機能であるパフォーマンス モニターによるシステムのパフォーマンス情報を常時取得する方法をご紹介します。紹介しているコマンドは、すべて管理者として起動したコマンドプロンプトで実行してください。
適用対象の OS
- すべての Windows OS
パフォーマンス モニター
パフォーマンス モニターは OS のパフォーマンスの推移を総合的に確認できるツールです。このツールによるパフォーマンス ログ取得は、負荷も小さく、Windows OS で常時仕掛けてご取得いただけるログになります。ログのサイズは、取得するパフォーマンスカウンタの数、サンプリング間隔、システムの使用環境に依存しますので、テストして確認をお願いします。
設定手順
手順を1~5に分けてパフォーマンス ログを常時取得するための設定手順をご紹介します。
短期間のログ収集をする場合にはログファイルによる容量ひっ迫や再起動を考慮する必要がないので手順4と手順5は省略していただいても問題ありません。
1. パフォーマンス カウンター 設定ファイルの準備
ログを取得したいパフォーマンス カウンタがリストされているテキストファイルを作成します。次の基本的なパフォーマンス カウンタをリストしたテキストファイルを Perfmon-config.txt という名称で作成します。
1 | \Cache\* |
必要なカウンタを追加したり、必要のないカウンタを削除できますので、メモリとプロセスの状況のみ解析したい場合は、以下のテキストファイルでも問題ありません。
1 | \Memory\* |
参考として、 Windows OS のパフォーマンス解析を行う際に、有用なパフォーマンス カウンタをリストしたファイル(Perfmon-config.txt)を用意しました。網羅的にパフォーマンス情報を取得したい場合にはこちらをご活用ください。
2. データ コレクタ セットを作成
手順1で、作成した設定ファイル(Perfmon-config.txt)をオプションに指定して、logman create counter コマンド を実行します。このコマンドにより、サンプリング間隔が15秒で24時間ごとにログ ファイルを分けて出力するデータ コレクタ セットが作成されます。
1 | logman create counter "PerfLogging" -cf "Perfmon-config.txt" -f bincirc -si 00:00:15 -cnf 24:00:00 -v NNNNNN -o "C:\PerfLogs\Admin\PerfLogging\PerfLogging" |
サンプリング間隔を変更したい場合は、si オプションの値を変更してください。サンプリング間隔を5分間にしたい場合は、-si 00:05:00
に変更します。
「コマンドは、正しく完了しました。」と表示されたらデータ コレクタ セットの作成が成功しています。また、logman query コマンド やパフォーマンス モニターからも作成できたことは確認できます。
3. ログ収集開始
手順2で作成したデータ コレクター セットの名前をオプションに指定し、logman start コマンド でログ収集を開始させます。
1 | logman start "PerfLogging" |
4. 古いパフォーマンス ログを自動削除
手順2で、出力フォルダに指定したフォルダをオプションに指定して、保存日数を過ぎたログを自動削除するタスクを schtasks コマンド で作成します。このタスクは、8日前に作成されたログ ファイルを毎日午前1時に削除します。
1 | schtasks /create /tn "\Microsoft\Windows\PLA\AutoDeletePerfLogs" /sc DAILY /st 01:00 /NP /tr "forfiles /p C:\PerfLogs\Admin\PerfLogging /d -8 /c \"cmd /c del @file\"" /ru system /rl highest |
保存日数を変更したい場合は、d オプションの値を変更してください。保存日数を30日にしたい場合は、/d -30
に変更します。
5. システム起動時の自動開始
パフォーマンス モニターによるログ収集は、システム起動に自動的に開始しません。つまり、再起動を実施するとログ収集が停止してしまいます。そのため、起動時にログ収集が自動的に開始するタスクを schtasks コマンド で作成します。
1 | schtasks /create /tn "\Microsoft\Windows\PLA\PerfLogOnStart" /sc onstart /tr "logman start PerfLogging" /ru system |
tr オプションで指定するコマンドは、手順3で実行するコマンドと同じになります。
リモートで設定
設定手順2~5でご紹介したコマンドは、s オプションでコンピュータ名を指定すればリモートで設定、ログ収集開始が権限があればできます。以下にまとめましたので実行する際には “ComputerName” をログ収集設定したいコンピュータ名に変更してください。
1 | logman create counter "PerfLogging" -s "ComputerName" -cf "Perfmon-config.txt" -f bincirc -si 00:00:15 -cnf 24:00:00 -v NNNNNN -o "C:\PerfLogs\Admin\PerfLogging\PerfLogging" |
設定の削除方法
ログ収集を停止し、すべての設定を削除したい場合は、以下のコマンドを実行してください。
1 | # ローカル |
ログ出力形式の注意点
今回ご紹介したコマンドでは、拡張子が .blg であるバイナリ形式でパフォーマンス ログが出力されます。コマンド オプションを変更することで、CSV形式でもログを出力できますが、手順2でログ収集を開始した後に起動したプロセスのパフォーマンス情報が取得できない仕様になっていますので、バイナリ形式 (.blg) で出力することを推奨します。
CSV形式でログを保存したい場合は、バイナリ形式として出力した後に、relog コマンド を使用して、バイナリ形式からCSV形式に変換できますので、こちらをご検討ください。
1 | relog "binaryfile.blg" -f csv -o "csvfile.csv" |
参考 URL
変更履歴
- 2021/06/07 : 本 Blog の公開