BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース F# WMIタイププロバイダでパフォーマンスカウンタを調べる

F# WMIタイププロバイダでパフォーマンスカウンタを調べる

原文(投稿日:2016/06/08)へのリンク

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,タイムゾーンなどのプロバイダも含まれている。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT