troushoo

Linux 上の.NET アプリのCPU パフォーマンスをPerfView を用いて解析

概要

Linux 上の.NET アプリのCPU パフォーマンスを、PerfView を用いて解析する方法を紹介します。

内容

Linux の準備
Linux に必要なモジュールのインストールをします。

1. シェルスクリプトを以下のコマンドでダウンロードします。

curl -OL http://aka.ms/perfcollect


2. ダウンロードしたシェルスクリプトに実行権限を与えます。
chmod +x perfcollect


3. 必要なモジュール (Perf.exe、LTTng) を、ダウンロードしたシェルスクリプトを用いてインストールします。
sudo ./perfcollect install


4. zip コマンドをインストールします。
sudo apt-get install zip


パフォーマンスの採取
以下のコマンドを用いてCPU のパフォーマンス情報を採取します。

1. 環境変数を設定し、シンボル情報を出力するようにします。
export COMPlus_PerfMapEnabled=1


2. 新たなウィンドウを起動し、以下のコマンドでパフォーマンスの採取を開始します。
sudo ./perfcollect collect FILENAME


3. パフォーマンス測定を行いたいアプリを起動します。
起動の際、環境変数を設定したウィンドウから起動してください。

4. パフォーマンス測定は「Ctrl + C」で停止できます。


5. パフォーマンス測定の結果が格納された、FILENAME.trace.zip が出来上がります。


パフォーマンス解析
PerfView を用いてパフォーマンス解析を行います。
1. Windows のマシンにFILENAME.trace.zip をコピーします。

2. PerfView を開き、FILENAME.trace.zip をダブルクックします。


3. パフォーマンス情報が確認できます。
以下の例では、Main から呼ばれているmymethod(int 64) でCPU 負荷が高かったことがわかります。


今回利用したサンプルコード
今回用いたサンプルコードは以下です。
GitHub にも公開しました。
using System;
 
namespace ConsoleApplication
{
    public class Program
    {
        static void mymethod(long l){
           long l1 = 1;
           long l2 = 2;
           long l3;
 
           while(true){
              l3 = l1 + l2;
              l1 = l2 * l3;
              l2 = l2 + l3;
           }
        }
        public static void Main(string[] args)
        {
            mymethod(1);
        }
    }
}


情報元
Analyzing CPU traces from Linux with PerfView (英語)
It is very easy to get started with .NET Core on your platform of choice. (英語)

関連記事
PerfView:パフォーマンス調査時に便利なMicrosoft 公開のフリーツール


  1. 2016/03/05(土) 22:55:24|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0
<<Linux 上のPython アプリケーションをVisual Studio からリモートデバッグ | ホーム | Visual Studio を使用してファイルの比較・マージ:vsDiffMerge.exe>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/278-a951dd42
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (23)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する