システムのパフォーマンスを確認するときは、Windows に標準で入っているパフォーマンス モニターを使います。CPU やメモリ、ディスクなどのパフォーマンス カウンターを選んで、値をリアルタイムにグラフで確認できます。
また、データ コレクター セットを使うと、決めた間隔でパフォーマンス カウンターの値を集めてファイルに保存し、あとから分析できます。この記事では、パフォーマンス モニターでのリアルタイム監視と、データ コレクター セットでのデータ取得、タスク スケジューラーを使った取得の自動化を確認します。
- パフォーマンス モニターにカウンターを追加して、CPU 使用率をリアルタイムに見る
- データ コレクター セットを作り、カウンターの値をログ ファイルに保存する
- タスク スケジューラーと 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追加されたカウンター |
|
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 使用可能なカウンター | Processor を開き、% Processor Time(CPU 使用率)を選ぶ |
| 2 | インスタンス | <すべてのインスタンス> を選んで[追加 >>]。_Total は全 CPU の合計、0〜3 は各 CPU |
| 3 | 追加されたカウンター | % Processor Time が追加されたことを確かめて[OK] |
これで、CPU 使用率がリアルタイムにグラフに表示されます。
| スケール | カウンター | インスタンス | 親 | オブジェクト |
|---|---|---|---|---|
| 1.0 | 1% Processor Time | _Total | — | Processor |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | % Processor Time(_Total) | グラフに表示しているカウンター。この例では、一時的に CPU 使用率が 100% 近くまで上がっている |
使えるカウンターは大量にあります。監視しているシステムやアプリケーションに関係するカウンターを選ぶことが、パフォーマンスの問題を特定して改善につなげるうえで大切です。
データコレクターセットによるパフォーマンスデータ取得
データ コレクター セットは、決めた間隔でカウンターの値を集めてログ ファイルに保存します。問題がいつ起きるか分からない場合でも、記録しておけばあとから分析できます。
データコレクターセットを作る
パフォーマンス モニターで データ コレクター セット ›› ユーザー定義 を右クリック ›› 新規作成 ›› データ コレクター セット を選びます。ウィザードで次のとおり設定します。
| 1名前 | CPU_Monitoring |
| 作成方法 | ○ テンプレートから作成する(推奨)◉ 手動で作成する(詳細) |
| 2データ ログを作成する | ☑ パフォーマンス カウンター ☐ イベント トレース データ ☐ システム構成情報 |
| 3パフォーマンス カウンター | \Processor(*)\% Processor Time 追加… |
| 4サンプルの間隔 | 15 秒 |
| 5ルート ディレクトリ | %systemdrive%\PerfLogs\Admin\CPU_Monitoring |
| 別のユーザーとして実行 | <既定> |
| 6作成後の動作 | ○ このデータ コレクター セットのプロパティを開く ○ このデータ コレクター セットをすぐに開始する ◉ 保存して閉じる |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前・作成方法 | 任意の名前(ここでは CPU_Monitoring)を入れ、「手動で作成する(詳細)」を選ぶ |
| 2 | データの種類 | 「パフォーマンス カウンター」にチェックを入れる |
| 3 | パフォーマンス カウンター | [追加]を押し、図2 と同じ手順で Processor ›› % Processor Time(すべてのインスタンス)を追加する |
| 4 | サンプルの間隔 | 既定の 15 秒のまま。値を記録する間隔 |
| 5 | ルート ディレクトリ | ログ ファイルの保存場所。既定のまま |
| 6 | 作成後の動作 | 「保存して閉じる」のまま[完了] |
サンプルの間隔を短くすると細かい変化を追えますが、そのぶんログ ファイルが大きくなります。長時間記録する場合は、期間とファイルの大きさを考えて間隔を決めます。
データの取得を開始・停止する
作成したデータ コレクター セットは、ユーザー定義の下に状態「停止」で登録されます。取得を始めるには CPU_Monitoring を右クリック ›› 開始 を選びます。
| 名前 | 状態 |
|---|---|
| 1CPU_Monitoring | 実行中 |
| Server Manager Performance M… | 停止 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | CPU_Monitoring 実行中 | データの取得が始まった(開始前は「停止」) |
取得中は、保存場所にログ ファイル(.blg)が作られます。開始するたびに、コンピューター名と日付の付いたフォルダーが作られます。
PC › ローカル ディスク (C:) › PerfLogs › Admin › CPU_Monitoring › AD-1_20230417-0000011 DataCollector01.blg 2023/04/17 20:48 パフォーマンス モニター…
| No. | 表示 | 意味 |
|---|---|---|
| 1 | DataCollector01.blg | カウンターの値を記録するバイナリ形式のログ ファイル |
取得を止めるには CPU_Monitoring を右クリック ›› 停止 を選びます。保存したログ ファイルをダブルクリックすると、パフォーマンス モニターで記録した期間のグラフを確認できます。
| スケール | カウンター | インスタンス | オブジェクト | コンピューター |
|---|---|---|---|---|
| 10.0 | 1% Processor Time | _Total | Processor | \\AD-1 |
| 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 |
| 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/stop | Windows Server 2019 などでは[スケジュール]タブの代わりに使う |
コメント