BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

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

| 作者: Pierre-Luc Maheu フォローする 4 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年8月2日. 推定読書時間: 2 分 |

原文(投稿日: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

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

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

このスレッドのメッセージについてEmailでリプライする

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

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT