kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Performance AnalyzerとPerfView

Windows Platform SDKにはPerfomance Analyzerというツールがついていますが、ダウンロードセンターにPerfViewが登場しています。
Download PerfView from Official Microsoft Download Center
軽く使ってみましたが、GUIが特定用途に特化している感じで、こちらのほうが分かりやすいでしょう。しかも単体でダウンロードできるので、Platform SDKからわざわざぬいてこなくてもいいです。
@ITさんで書いたこの記事でPerformance Analyzerを紹介していますので、ご参考に。
OS機能によるアプリのパフォーマンス測定 − @IT
まずは簡単にプログラム実行して、採取済みの状態。

表示したい項目を選択します。アイコンによって何が表示されるかわかりやすくなります。htmlファイルのアイコンはレポート結果がhtmlで表示されます。Windows Formくさいアイコンは詳細なチャートが出てきます。
たとえば、CPU Statusを選択すると、調べる対象のプロセスを選択します。

この方が分かりやすいですね。プロセスを選択すると、スタックが壊れている場合は教えてくれます。おそらくどのツールでもたぶん同じです。壊れているスタックはBROKENと表示されているようです。3%未満の場合は無視していいそうです(ヘルプより)。
同じくヘルプからですが、32bitプロセスが64bit OS上で正しく取れない(dropしてしまう)という挙動は次のOS(Windows 8(仮))で直すと書かれています。
同じく64bitプロセスでのstack walk(スタック追跡)ですが、.NETとのJITとの都合でうまく動いていません。これもWindows 8(仮)で何とかするそうです。この辺のことをやりたかったらWindows 8(仮)のほうがいいのかもしれませんね。
生成済みのアプリケーションでもcorflags.exeを使えば変更できるので、どうしてもってときはどうぞ。
CorFlags.exe (CorFlags 変換ツール)

さて、調査対象を選択するとこんな感じですね。When列は実際にそのタイミングでの状態を表すようです。0だと0%から10%の間とかそんな感じ。数字が大きくなっていくと不可が高いと判断できるようです。2CPUならば200%が上限ということになるようです。

あとは負荷が高いところとかを調べてみてください。簡単ですがこんな感じでPerfViewの紹介でした。
(1/10追記)
PerfViewとPerformance Analyzerの使い分けとしては、特定のプログラムを調べるときはPefView、ある時間帯でどんなプログラムが起動していて、何が性能に影響を及ぼしているか調べるためにはPerformance Analyzerとするといいと思います。