【Windows】パフォーマンスモニターとデータコレクターセット

システムのパフォーマンスを確認するときは、Windows に標準で入っているパフォーマンス モニターを使います。CPU やメモリ、ディスクなどのパフォーマンス カウンターを選んで、値をリアルタイムにグラフで確認できます。

また、データ コレクター セットを使うと、決めた間隔でパフォーマンス カウンターの値を集めてファイルに保存し、あとから分析できます。この記事では、パフォーマンス モニターでのリアルタイム監視と、データ コレクター セットでのデータ取得、タスク スケジューラーを使った取得の自動化を確認します。

この記事でわかること
  1. パフォーマンス モニターにカウンターを追加して、CPU 使用率をリアルタイムに見る
  2. データ コレクター セットを作り、カウンターの値をログ ファイルに保存する
  3. タスク スケジューラーと logman で、データ取得の開始と停止を自動化する

パフォーマンスモニターとデータコレクターセット

パフォーマンス モニターとデータ コレクター セットは、どちらもパフォーマンス カウンターの値を扱います。違いは、値をその場で見るか、ファイルに残してあとで見るかです(図1)。

パフォーマンス カウンター \Processor(*)\% Processor Time パフォーマンス モニター グラフでリアルタイムに表示 (保存しない) データ コレクター セット 15 秒ごとにサンプリング 開始〜停止の間を記録 .blg ログ ファイル あとで 開く 開始・停止:手動/logman
図1 パフォーマンス モニターとデータ コレクター セットの違い

パフォーマンス カウンターは \オブジェクト(インスタンス)\カウンター の形で表します。たとえば \Processor(*)\% Processor Time は、Processor オブジェクトの % Processor Time(CPU 使用率)を、すべてのインスタンス(各 CPU と合計の _Total)について取るという意味です。

パフォーマンスモニターによるリアルタイム監視

パフォーマンス モニターでは、システム全体のパフォーマンスやアプリケーション固有の情報など、さまざまなカウンターを選んで表示できます。問題に関係するカウンターを表示することで、パフォーマンスの問題を絞り込めます。

カウンターを追加して表示する

Windows キー+R で「ファイル名を指定して実行」を開き、perfmon と入力して[OK]を押します。左ペインで パフォーマンス ›› モニター ツール ›› パフォーマンス モニター を選ぶと、グラフが表示されます。

グラフの上で 右クリック ›› カウンターの追加 を選び、取得したいカウンターを追加します。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

カウンターの追加画面イメージ
次のコンピューターからカウンターを選んでください<ローカル コンピューター>
1使用可能なカウンターProcessor% C1 Time
% DPC Time
% Idle Time
% Interrupt Time
% Privileged Time
% Processor Time
2選択したオブジェクトのインスタンス_Total
<すべてのインスタンス>0
1
2
3
3追加されたカウンター
カウンター親インスタンスコンピューター
Processor
 % Processor Time
—*
追加 >>削除 <<OKキャンセル
図2 カウンターの追加(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1使用可能なカウンターProcessor を開き、% Processor Time(CPU 使用率)を選ぶ
2インスタンス<すべてのインスタンス> を選んで[追加 >>]。_Total は全 CPU の合計、0〜3 は各 CPU
3追加されたカウンター% Processor Time が追加されたことを確かめて[OK]

これで、CPU 使用率がリアルタイムにグラフに表示されます。

パフォーマンス モニター画面イメージ
パフォーマンス ›› モニター ツール ›› パフォーマンス モニター
10050023:59:5623:59:0023:59:55
スケールカウンターインスタンス親オブジェクト
1.01% Processor Time_Total—Processor
図3 CPU 使用率のリアルタイム表示(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1% Processor Time(_Total)グラフに表示しているカウンター。この例では、一時的に CPU 使用率が 100% 近くまで上がっている

使えるカウンターは大量にあります。監視しているシステムやアプリケーションに関係するカウンターを選ぶことが、パフォーマンスの問題を特定して改善につなげるうえで大切です。

データコレクターセットによるパフォーマンスデータ取得

データ コレクター セットは、決めた間隔でカウンターの値を集めてログ ファイルに保存します。問題がいつ起きるか分からない場合でも、記録しておけばあとから分析できます。

データコレクターセットを作る

パフォーマンス モニターで データ コレクター セット ›› ユーザー定義 を右クリック ›› 新規作成 ›› データ コレクター セット を選びます。ウィザードで次のとおり設定します。

新しいデータ コレクター セットを作成します。画面イメージ
この新しいデータ コレクター セットの作成方法を選択してください。
1名前CPU_Monitoring
作成方法○ テンプレートから作成する(推奨)◉ 手動で作成する(詳細)
含めるデータの種類を選択してください。
2データ ログを作成する☑ パフォーマンス カウンター ☐ イベント トレース データ ☐ システム構成情報
記録するパフォーマンス カウンターを選択してください。
3パフォーマンス カウンター\Processor(*)\% Processor Time 追加…
4サンプルの間隔15 秒
データの保存場所を選択してください。
5ルート ディレクトリ%systemdrive%\PerfLogs\Admin\CPU_Monitoring
データ コレクター セットを作成しますか?
別のユーザーとして実行<既定>
6作成後の動作○ このデータ コレクター セットのプロパティを開く
○ このデータ コレクター セットをすぐに開始する
◉ 保存して閉じる
次へ完了キャンセル
図4 データ コレクター セットの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1名前・作成方法任意の名前(ここでは CPU_Monitoring)を入れ、「手動で作成する(詳細)」を選ぶ
2データの種類「パフォーマンス カウンター」にチェックを入れる
3パフォーマンス カウンター[追加]を押し、図2 と同じ手順で Processor ›› % Processor Time(すべてのインスタンス)を追加する
4サンプルの間隔既定の 15 秒のまま。値を記録する間隔
5ルート ディレクトリログ ファイルの保存場所。既定のまま
6作成後の動作「保存して閉じる」のまま[完了]
補足

サンプルの間隔を短くすると細かい変化を追えますが、そのぶんログ ファイルが大きくなります。長時間記録する場合は、期間とファイルの大きさを考えて間隔を決めます。

データの取得を開始・停止する

作成したデータ コレクター セットは、ユーザー定義の下に状態「停止」で登録されます。取得を始めるには CPU_Monitoring を右クリック ›› 開始 を選びます。

パフォーマンス モニター画面イメージ
データ コレクター セット ›› ユーザー定義
名前状態
1CPU_Monitoring実行中
Server Manager Performance M…停止
図5 データの取得中(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1CPU_Monitoring 実行中データの取得が始まった(開始前は「停止」)

取得中は、保存場所にログ ファイル(.blg)が作られます。開始するたびに、コンピューター名と日付の付いたフォルダーが作られます。

エクスプローラー画面イメージ
PC › ローカル ディスク (C:) › PerfLogs › Admin › CPU_Monitoring › AD-1_20230417-0000011  DataCollector01.blg    2023/04/17 20:48    パフォーマンス モニター…
図6 保存されたログ ファイル(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1DataCollector01.blgカウンターの値を記録するバイナリ形式のログ ファイル

取得を止めるには CPU_Monitoring を右クリック ›› 停止 を選びます。保存したログ ファイルをダブルクリックすると、パフォーマンス モニターで記録した期間のグラフを確認できます。

パフォーマンス モニター(DataCollector01.blg)画面イメージ
10050020:48:0320:50:3320:53:49
スケールカウンターインスタンスオブジェクトコンピューター
10.01% Processor Time_TotalProcessor\\AD-1
図7 ログ ファイルで確認した CPU 使用率(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1% Processor Time(\\AD-1)開始から停止までに記録した AD-1 の CPU 使用率

パフォーマンスデータ取得のスケジューリング

データ コレクター セットのプロパティには[スケジュール]タブがあり、ここで開始の日時を決められます。ただし、Windows Server 2019 や Windows 10 バージョン 1703〜1909 では、ユーザー定義のデータ コレクター セットがスケジュールどおりに動かない問題があります。スケジュールのタスク自体は「正常に実行された」と記録されますが、データは取得されません。

そこで、タスク スケジューラーに開始用と停止用のタスクを登録し、logman コマンドでデータ コレクター セットを開始・停止します。ここでは、Windows Server 2019 で毎日 9 時に取得を始め、12 時に止める例を確認します。

現在の状況

この問題は、Windows 10・Windows Server のバージョン 2004 以降で修正されています。Windows Server 2022 などでは、データ コレクター セットの[スケジュール]タブの設定で動きます。影響を受けるバージョンでは、この記事の方法のほか、データ コレクター セット用に作られたタスク(タスク スケジューラ ライブラリ ›› Microsoft ›› Windows ›› PLA)の操作を直す回避策もあります。

開始用のバッチファイルを用意する

データ コレクター セットを開始するバッチ ファイルを作ります。logman start の後ろに、データ コレクター セットの名前を指定します。

C:\task\CPU_Monitering-start.bat

logman start CPU_Monitoring

停止用のバッチ ファイルも同じように作ります。中身は logman stop CPU_Monitoring です。

タスクスケジューラーにタスクを登録する

タスク スケジューラーを開き、タスク スケジューラ ライブラリ を右クリック ›› タスクの作成 を選びます。各タブを次のとおり設定します。

タスクの作成画面イメージ
[全般]タブ
1名前CPU_Monitoring_Start
タスクの実行時に使うユーザー アカウント(伏せています)
2セキュリティ オプション○ ユーザーがログオンしているときのみ実行する
◉ ユーザーがログオンしているかどうかにかかわらず実行する
☑ 最上位の特権で実行する
構成Windows Server 2019
[トリガー]タブ ›› 新規
タスクの開始スケジュールに従う
3設定◉ 毎日 開始 2023/04/17 9:00:00 間隔 1 日
有効☑
[操作]タブ ›› 新規
操作プログラムの開始
4プログラム/スクリプトC:\task\CPU_Monitering-start.bat
OKキャンセル
図8 開始用のタスク(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1名前CPU_Monitoring_Start
2セキュリティ オプション・構成サインインしていなくても動くよう「ユーザーがログオンしているかどうかにかかわらず実行する」を選び、管理者の権限で logman を実行するため「最上位の特権で実行する」にチェックを入れる。構成は Windows Server 2019
3トリガー毎日 9:00:00 に実行し、「有効」にチェックを入れる
4プログラム/スクリプト開始用のバッチ ファイル C:\task\CPU_Monitering-start.bat

[OK]を押すとタスクが保存されます。「ユーザーがログオンしているかどうかにかかわらず実行する」を選んだため、タスクを実行するアカウントの資格情報を求められるので、入力して[OK]を押します。

同じ手順で、12 時に停止用のバッチ ファイル(logman stop CPU_Monitoring)を実行するタスクも作ります。これで、毎日 9 時から 12 時までのデータが自動で記録されます。

スケジューリングについては、Microsoft のサポート ブログの記事も参考になります。

>> 参考記事:パフォーマンス カウンタをシステム起動時から自動的に開始する方法について (Windows Server 2008 / Windows Server 2008 R2)

まとめ

パフォーマンス モニターで今の値をグラフで確かめ、データ コレクター セットで値をファイルに残して、あとから分析しました。データ コレクター セットの開始と停止は、logman コマンドでも操作できるので、タスク スケジューラーと組み合わせて自動化できます。

やりたいこと使うものポイント
今のパフォーマンスを見るパフォーマンス モニター(perfmon)グラフ上で右クリック ›› カウンターの追加
値を記録してあとで見るデータ コレクター セットサンプルの間隔は既定 15 秒。.blg をダブルクリックで表示
決まった時間だけ記録するタスク スケジューラー+logman start/stopWindows Server 2019 などでは[スケジュール]タブの代わりに使う

コメント