Windows Management Instrumentation (WMI)は,Windowsシステムを監視するための主要なデータソースである。マシン毎に利用可能なパフォーマンスカウンタがさまざまであることを考えれば,利用可能なすべてのカウンタを一覧表示するツールが必要になる。WMIタイププロバイダは,WMIのパフォーマンスカウンタを調べるための選択肢のひとつだ。
FSIを使えば,WMIを直接IDEから参照できる。次に示すクエリは,IISワーカプロセスのインスタンスのメモリとガベージコレクションメトリックを出力するものだ。
type Local = WmiProvider<"localhost">
let data = Local.GetDataContext()
[for d in data.Win32_PerfFormattedData_NETFramework_NETCLRMemory ->
d.Name, d.Gen0heapsize, d.PercentTimeinGC]
|> Seq.find (fun proc -> proc.Name.Contains("w3wp") )
WMIメトリックは,データコレクタやPowershellスクリプト,.NETコードなど,さまざまなアプリケーションから利用することができる。市販のモニタリングツールの中にも,WMIパフォーマンスカウンタに対応するものは少なくない。そのようなツールにカウンタを監視させるには,カウンタとメトリックの正式な名称が必要だ。WMIタイププロバイダは,正式な名称を持ったオブジェクトを生成する。つまり,IDEからモニタリングツールやPowershellスクリプトに直接,コピー&ペーストすることが可能になるのだ。
64ビットオペレーティングシステムで作業する場合には,この他にもいくつかの設定作業が必要な場合がある。64ビットシステム上で動作する32ビットプロセスのデータが要求された場合は,32ビットWMIプロバイダによって処理されるが,32ビットプロバイダは32ビットプロセスから収集したデータのみを返すため,これはデータ欠落の原因になる。
FSIはデフォルトではVisual Studioの32ビット版で動作するが, Tools/Options/F# Toolsオプションを選択することで,64ビット内で動作するように設定することもできる。64ビットWMIプロバイダに接続するには,これが最も簡単な方法だ。.Net 4.5.*をターゲットとするアプリケーションも,Visual Studioでは32ビットをデフォルトとしてコンパイルされる。アプリケーションを64ビット用にコンパイルするには,MsBuildターゲットのprefer32bits
属性をfalseにセットすればよい。
WMIタイププロバイダは,Githubで公開されているオープンソースプロジェクトのFSharp.Managementの一部である。このプロジェクトには他にも,ファイルシステムやレジストリ,Powershell,タイムゾーンなどのプロバイダも含まれている。
この記事を評価
- 編集者評
- 編集長アクション