Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

2018-04-08

Netflix のオープンソース可視化ツール FlameScope を使ってみた

Brendan Gregg らの所属する Netflix の cloud performance engineering team が FlameScope というパフォーマンス可視化ツールオープンソースで公開した。詳しくは Netflix Tech Blog 参照。

flame graphs は瞬間的なスパイクを分析しづらかったが、FlameScope により1秒未満のヒートマップでイベント発生回数の多い時間帯が可視化されピンポイントで特定期間の flame graph を表示できるようになった。Oracle Database でいうと AWR/Statspack レポートだけでなく ASH 的な分析、さらに1秒未満のCPU時間の内訳のプロファイリングまで Craig Shallahamer の fulltime.sh でズームアップできるイメージ*1

FlameScope は Pyhton(フレームワークFlask) で書かれた Web アプリで、Perf で取得したデータを、ブラウザでアクセスして flame graph を分析するツールです。


Brendan Gregg は性能分析の大家でバックグラウンドは以下の通り。

Flame Graphs の作者の Brendan Gregg は Sun、Oracle、Joyent でカーネル、パフォーマンスのエンジニアとして活躍し、現在は Netflix(北米インターネットトラフィックの32.3%を占める。YouTubeは17.1%)*2シニア・パフォーマンス・アーキテクトです。ZFS L2ARC や DTrace Toolkit の開発者で、Solaris Performance and ToolsDTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD の著者で、LinuxConFreeBSD SummitOaktable WorldAWS re:Invent などのイベントで幅広く活動されています。是非 Brendan Gregg’s Homepage をご覧ください。

perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog

FlameScope の見方

x軸が秒単位、y軸が1秒未満の時系列になっていて、赤いセルほどイベント発生回数が多い(CPU負荷が高い)。密度を高めるため2次元にしていると思われる。

f:id:yohei-a:20180408180622p:image:w360

実際のスクリーンショットはこんな感じで、x軸が秒単位、y軸が1秒未満の単位になっていて、

f:id:yohei-a:20180408180626p:image:w360

選択範囲の FlameGraph を表示することができる。

f:id:yohei-a:20180408180632p:image:w360

flame graph の見方は以下の通り。詳しくはこちら

  • 関数名で左から右にソートされている
  • コールスタックは上に行くほど深い
  • 最もコールスタックが深くて横幅が長いのがCPUを最も使っている関数

FlameScope を使ってみる

macOS に FlameScope をインストールして、Linux で perf で取得した性能情報をダウンロードして、FlameScope で可視化してみた。

f:id:yohei-a:20180408230316p:image:w360 f:id:yohei-a:20180408230323p:image:w360 f:id:yohei-a:20180408230329p:image:w360


環境

インストール
$ sudo yum -y install perf
$ git clone https://github.com/Netflix/flamescope
$ cd flamescope
$ sudo pip install -r requirements.txt

使ってみる
  • EC2 で perf で性能情報を取得しつつ openssl で負荷をかける
    • perf で性能情報を収集する
$ sudo perf record -F 49 -a -g -- sleep 120
$ sudo perf script --header > stacks.openssl.2018-04-07_01
$ gzip stacks.openssl.2018-04-07_01
$ ls -lh stacks.openssl.2018-04-07_01.gz
-rw-rw-r-- 1 ec2-user ec2-user 389K Apr  8 13:45 stacks.openssl.2018-04-07_01.gz
$ openssl speed -multi 4
  • macOS で FlameScope を起動する。
    • FlameScope を起動する
$ python run.py

スタックのリストが表示されるので、stacks.openssl.2018-04-07_01.gz をクリックする。

f:id:yohei-a:20180408230316p:image:w640

ヒートマップを表示すると綺麗に2分間計測したうち1分経過後から30秒間が赤くなっている。

f:id:yohei-a:20180408230323p:image:w640

範囲を選択してクリックすると flame graph を見ることができる。

f:id:yohei-a:20180408230329p:image:w640


参考


関連

*1:細かすぎて伝わらない例えかもしれない。。。

*2http://wazanova.jp/post/62392993571/30-netflix-amzazon

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yohei-a/20180408/1523196368