2008年8月3日

まずは一覧

どこか適当なディレクトリを $TOP と定義する。

$TOP/native_blg/

ディレクトリ下に、blgファイルが全部置いてある、としよう。そして、cygwin が「全部インストール」してあると仮定しよう。bash も使い放題だ。Perl もCPANモジュールが適宜インストールできる、とする。

% ls $TOP/native_blg/
A_Jul15.blg
A_Jul16.blg
A_Jul17.blg
A_Jul18.blg
B_Jul15.blg
B_Jul16.blg
B_Jul17.blg
B_Jul18.blg
:

[マシン名]_日付.blg というファイル名フォーマットらしい。

まず、最初にするべきなのは、各 blg ファイルに含まれているエントリを全部引き出す事だ。Printer情報だのProcess情報だのと、結構それぞれ異なっているはずなので、一覧を取り出して、不要なものをある程度削らなくてはいけないし、Excelに食わせられるように200個ぐらいづつに切り分けるための一覧表が必要になる。

relog.exe というプログラムが .blg ファイルを CSV や TSV (Tab Separated Values)フォーマットに変換してくれる。 これには -q というオプションがあって、このカウンタの一覧を引っ張り出してくれる:

% relog A_Jul15.blg -q -o A_Jul15.lst
% cat A_Jul15.lst
\\A\LogicalDisk(C:)\Avg. Disk Bytes/Write
\\A\LogicalDisk(E:)\Avg. Disk Bytes/Write
\\A\LogicalDisk(F:)\Avg. Disk Bytes/Write
\\A\LogicalDisk(_Total)\Avg. Disk Bytes/Write
\\A\LogicalDisk(C:)\% Idle Time
\\A\LogicalDisk(E:)\% Idle Time
\\A\LogicalDisk(F:)\% Idle Time
\\A\LogicalDisk(_Total)\% Idle Time
\\A\LogicalDisk(C:)\Disk Reads/sec
:


すでに後悔の念バリバリな分量が出てくる。うわ、必要なんだかなんだか判らないものだらけ…。中にこれが見つかるはずだ。

\\A\Processor(_Total)\% Idle Time


これがCPUがIdleになっている割合を示すカウンターだと思われる。\\A\の部分までは「マシンを指定する」ためのものなので、こいつの出力と、その他の出力とのr2を求めればいいわけだ。

とりあえず、全部のファイルについて、このカウンターリストを作る。

% cd $TOP
% mkdir 00nativelist
% pushd 00nativelist
% cat filter.sh
for i in ../native_blg/*.blg; do
j=`echo $i | sed 's/..\/native_blg\///g' | sed 's/\.blg$/.lst/g'`;
relog $i -q -o $j
done
% bash filter.sh
% popd

これで $TOP/00nativelist/ の下に、各 blg ファイルのカウンター一覧ファイルが出来た。今回は Printer Queue は関係なさそうなので、削り落とそう。

% cd $TOP
% mkdir 01PQRlst
% pushd 01PQRlst
% cat filter.sh
for i in ../00nativelst/*.lst; do
j=`echo $i | sed 's/..\/00nativelst\///g'`;
egrep -v '^\\\\\w+\\Print Queue.*\\' $i > $j;
done
% bash filter.sh
% popd


これで、不要な要素をカウンターリストから削る事ができた。