BT

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

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。