sIMple51

身も心も文系エンジニアの徒然。ときどき技術、よくよくガジェット。

Windows 7 64bitでperfmonbarを動作させた

以前、XPマシンを使っていたとき、気に入って使っていたフリーウェアのperfmonbar

いつの間にか職場のPCがWindows7 64bitになり、一度頑張って調べて導入して、
またPCが壊れ、交換し、、、と繰り返していたら、導入方法すら忘れて、
先日やっと再導入したのでメモ。

ソフト自体の紹介

 参照:http://www.gigafree.net/utility/refresh/perfmonbar.html
 

CPU 使用率 / メモリ使用量(コミットサイズ) / ハードディスクの空き容量 /
TCP 接続数 / データの送受信量... 等の情報を、タスクバー上で直接確認できるようにします。
これらパフォーマンス情報の表示は、リアルタイムに変更されます。表示させる項目、
テキストのフォントや色、スタイル は自由に変更することができたりします。

という紹介文にあるように、リアルタイムにPCの負荷状態を追いかけ、
重くなった時には何のリソースが逼迫しているのか、切り分けの一歩となるソフト。

導入でハマったポイント

1.64bit OSだと、通常のPerfMonBarは動作しない
 公式サイトのバイナリだと、64bitOSでは動作しない。
 インストールしても、タスクバー右クリック > ツールバー > ・・・の候補に出てこない。
 
 回避するには、有志が修正・公開してくれているモジュールを使う。

2.ネットワークインターフェースの名称指定が難しい
 デフォルトで用意されている設定ファイル(config.xml)には、[counter]と呼ばれる、
 特定のリソース状態を見るためのコマンドが予め列挙されている。
 

<counters>
    <counter name="cpu" value="\Processor(_Total)\% Processor Time" />
    <counter name="diskread" value="\LogicalDisk(_Total)\Disk Read Bytes/sec"/>
    <counter name="diskwrite" value="\LogicalDisk(_Total)\Disk Write Bytes/sec"/>
    <counter name="mem" value="\Memory\Committed Bytes" />
    <counter name="netin" value="\Network Interface(Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller)\Bytes Received/sec" />
    <counter name="netout" value="\Network Interface(Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller)\Bytes Sent/sec" />
    <counter name="freediskC" value="\LogicalDisk(C:)\Free Megabytes" />
  </counters>

詳しく調べると、Windows標準コマンドである"typeperf"*1コマンドを参照しているよう。
 
しかし、僕のPCのネットワークインターフェースカードは、Intel製だった。
上に記載したカウンター(netin,netout)のままでは動かないし、デバイスマネージャー上に
出てくる「Intel(R) Ethernet Connection I217-LM」を指定してもダメ。

このデバイス名に含まれる(R)が曲者で、以下のコマンドで調べた結果、判明。
 

 C:>typeperf -qx|find "\Network Interface"
  \Network Interface(Intel[R] Ethernet Connection I217-LM)\Bytes Total/sec

 参考:
  https://github.com/XhmikosR/perfmonbar/issues/5#issuecomment-45622957
  http://www.atmarkit.co.jp/fwin2k/win2ktips/1235typeperf/typeperf.html
  

ということで、ちょっとした試行錯誤の末、無事動いた。
タスクバーが縦なのは、好みです。

f:id:nori_51:20151127213053p:plain

*1:システム性能を監視するためのパフォーマンス・カウンタ