システムの動作状態を記録するには、パフォーマンス・カウンタの値を定期的に収集して保存しておけばよい。typeperfコマンドを利用すると、一定時間間隔でカウンタの値を収集、記録できる。記録されたデータはパフォーマンス・モニタにロードしたり、グラフ化ツールなどで解析すればよい。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象OS:Windows XP/Windows Server 2003/Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2
TIPS「パフォーマンス・モニタの使い方(基本編)」では、管理ツールのパフォーマンス・モニタを使って、システム内の各部に用意されたさまざまな「パフォーマンス カウンタ」の値を収集し、リアルタイムにグラフ化して表示する方法を紹介した。例えばCPUやメモリ、ネットワークの利用率、ディスクの入出力データ量などをグラフ化して、システムの動作状態をモニタしたり、ボトルネックとなっている部分を調査したりできる。
だが先のTIPSの方法では、グラフはリアルタイムに表示されるだけなので、長期に渡ってシステムの状態を監視したり、過去のある時点のデータを後で解析するといった用途には向かない。そのような場合は、カウンタの値を長期に渡って収集し、ログ・ファイルやデータベース・ファイルなどに保存しておくとよい。
カウンタの値を定期的に収集し、ログ・ファイルに記録するにはいくつかの方法があるが、本TIPSでは、Windows XP以降のWindows OSに用意されている「typeperf.exe」コマンドを使う方法を紹介する。収集したデータはパフォーマンス・モニタで表示させるか(TIPS「収集したカウンタ・データをパフォーマンス・モニタで表示させる」参照)、(CSV形式などで出力して)表計算ソフトウェアなどで解析すればよい。スケジュールを組んで収集させる方法についてはTIPS「パフォーマンス・カウンタのデータをスケジュールに従って収集する(Windows XP/Windows Server 2003編)」を参照していただきたい。
typeperf.exeは、Windows XP以降のWindows OSに用意されているコマンドである(Windows 2000 Resource Kitに含まれていたtypeperfコマンドがベースになっているが、これとは使い方が少し異なる)。これはコマンド・プロンプト上で利用するツールであり、指定されたパフォーマンス・カウンタのデータを収集して、その値を表示/保存するという機能を持つ。収集するカウンタを指定してコマンドを起動すると、一定時間間隔ごとにデータを収集し(デフォルトでは1秒ごと)、その結果をCSV形式で標準出力へ表示する(CSV以外の形式でも出力可能)。使い方は「typeperf -?」で表示される。
C:\>typeperf -? ……ヘルプの表示
Microsoft(R) TypePerf.exe (5.1.2600.0)
(C) Microsoft Corporation. All rights reserved.
Typeperf は、パフォーマンス データをコマンド ウィンドウまたはログ ファイルに書き込みます。Typeperf を停止するには、Ctrl+C キーを押します。
使い方:
typeperf { <カウンタ [カウンタ ...]> | -cf <ファイル名> | -q [オブジェクト] | -qx [オブジェクト] } [オプション]
パラメータ:
<カウンタ [カウンタ ...]> モニタするパフォーマンス カウンタです。
オプション:
-? 状況に応じたヘルプを表示します。
-f <CSV|TSV|BIN|SQL> 出力ファイルの形式です。既定は CSV です。
-cf <ファイル名> モニタするパフォーマンス カウンタを含んでいるファイルです。1 行に 1 カウンタです。
……(以下省略)……
typeperfでカウンタの値を収集するには、まずどのようなカウンタが存在し、どうやってそれを指定するかを把握しなければならない。システムに存在するカウンタ・オブジェクトと、そのインスタンスの一覧を知るには、「typeperf -q」や「typeperf -qx」コマンドを実行すると表示される(-qはカウンタ・オブジェクトの一覧を、-qxはインスタンスも含めたカウンタ・オブジェクトの一覧を表示する)。
※カウンタ・オブジェクトの一覧の表示
C:\>typeperf -q
\ServiceModelEndpoint 3.0.0.0\Calls
\ServiceModelEndpoint 3.0.0.0\Calls Per Second
\ServiceModelEndpoint 3.0.0.0\Calls Outstanding
\ServiceModelEndpoint 3.0.0.0\Calls Failed
……(以下省略)……
特定のカウンタだけを表示するには、そのオブジェクト名を指定する。例えばプロセッサに関するカウンタならProcessor、ネットワーク・インターフェイスならNetwork Interface、ディスクならLogicalDiskやPhysicalDiskを指定する。
C:\>typeperf -q Processor ……プロセッサ・カウンタだけを表示させる
\Processor(*)\% Processor Time
\Processor(*)\% User Time
\Processor(*)\% Privileged Time
……(以下省略)……
C:\>typeperf -qx "Network Interface" ……ネットワーク・インターフェイスのインスタンスも表示させる
\Network Interface(Marvell Yukon 88E8001_8003_8010 PCI Gigabit Ethernet Controller - \Network Interface(VMware Virtual Ethernet Adapter for VMnet1)\Bytes Total/sec
\Network Interface(VMware Virtual Ethernet Adapter for VMnet8)\Bytes Total/sec
……(以下省略)……
-qや-qxオプションで収集したいカウンタ・オブジェクトの名前が分かったら、次は、そのカウンタ名を引数にしてtypeperfコマンドを実行すればよい。カウンタの指定方法は、基本的には上のコマンドで表示された文字列をダブルクオート記号で囲んで列挙すればよい(スペースで区切る)。実行すると次のように、CSV形式で(先頭行はヘッダ)、1秒ごとに1データずつ表示される。実行を停止するには、[Ctrl]+[C]キーで中断する。
C:\>typeperf "\Processor(*)\% Processor Time" ……CPU使用率データの収集
"(PDH-CSV 4.0)","\\XPPC21\Processor(0)\% Processor Time","\\XPPC21\Processor(1)\% Processor Time","\\XPPC21\Processor(_Total)\% Processor Time"
"11/11/2009 15:21:24.546","7.692898","7.692898","7.692898"
"11/11/2009 15:21:25.562","51.562810","28.125460","39.844135"
"11/11/2009 15:21:26.562","70.312690","31.250440","50.781565"
"11/11/2009 15:21:27.562","73.437670","43.750360","58.594015"
……(以下省略)……
この例ではカウンタを1つだけ指定しているが、複数のオブジェクトやインスタンスを指す場合は、「*」を使ってもよい。例えばProcessorに関するカウンタをすべてまとめて指定する場合は「"Processor(*)\*"」というふうに指定する。
C:\>typeperf "\Processor(*)\*" ……CPU使用率関連のすべてのデータの収集
リモートのサーバを指定する場合は、先頭にサーバ名を付け、「"\\server001\Processor(*)\*"」のようにする。
上のコマンドを実行すると、デフォルトでは1秒おきにCSV形式で標準出力(つまりコンソール画面)へ出力されるが、通常は出力をリダイレクトして適当なテキスト・ファイルに保存しておく。ただしリダイレクトで作成したファイルをパフォーマンス・モニタにロードするとエラーになる。先頭に余計な空行が1行入るからだ。パフォーマンス・モニタにロードする予定なら、後述の-oや-fオプションでファイルへ保存するのがよい。
データの表示間隔は「-si <hh:mm:ss>」で指定できるし(デフォルトは1秒)、最大サンプリング数は「-sc <データ数>」で指定できる(デフォルトでは強制中断させるまでずっと表示する)。収集させたいカウンタ・オブジェクトの数が多ければ、テキスト・ファイルに記述しておいて(1行につき1つのカウンタ名を記述する。先の-qや-qxオプションの結果をリダイレクトして作成/編集するとよい)、「-cf <カウンタ名ファイル>」として指定してもよい。
出力するファイル形式を変更するには、「-f csv」や「-f tsv」「-f bin」などを指定する。CSVはカンマ区切りのテキスト・ファイル、TSVはタブ区切りのテキスト・ファイル、BINはパフォーマンス・モニタ用のバイナリ・データ・ファイル(推奨される拡張子は.blg)である。-fオプションを付けた場合、デフォルトではoutput.csvやoutput.tsv、output.blgなどのファイルに出力されるが、「-o <ファイル名>」として出力先のファイル名を指定することもできる。
※1分ごとに、1日分収集する例
C:\>typeperf -cf counters.txt -si 60 -sc 1440 -f bin -o counters.blg
収集したデータは、CSV形式ならそのまま表計算ソフトウェアやグラフ化ツールなどで処理すればよいし、バイナリ形式ならパフォーマンス・モニタにロードして表示させるとよい(TIPS「収集したカウンタ・データをパフォーマンス・モニタで表示させる」も参照のこと)。またrelog.exeコマンドを使うと、データをマージ/分割/(フィルタ指定による)抽出したり、データ形式の変換などが行える(今後別TIPSで紹介する予定)。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.