SlideShare a Scribd company logo
perfを使ったPostgreSQLの解析
                                                          〜~前編

                                                      2012年年9⽉月29⽇日(⼟土)




Copyright © 2012 NTT DATA Corporation
Agenda



 u 前編
            1.  はじめに
            2.  プロファイリングとは?
            3.  perfとは
            4.  perfの仕組み
            5.  perfと他のパフォーマンス解析ツールとの⽐比較
            6.  perfの導⼊入と使い⽅方
            7.  perfを使ってみよう
            8.  まとめ


Copyright © 2012NTT DATA Corporation       2
Agenda



 u 後編
            1.  前編の復復習
            2.  perfを使ったプロファイリングの流流れ
            3.  PostgreSQLをプロファイリングしてみよう
            4.  perfの使いどころ
            5.  まとめ




Copyright © 2012NTT DATA Corporation       3
1.  はじめに




Copyright © 2012 NTT DATA Corporation              4
あらためまして⾃自⼰己紹介

                        ⽒氏名                                       所属

                                                                 NTTデータ  
                江川  ⼤大地                                          基盤システム事業本部
                   Twitter                                       システム⽅方式技術ビジネスユニット
                @daiti0804

          やっていたこと

                                   年年代                           やったこと
                                       -‐‑‒2009   歴史のお勉強(⼤大学時代)
                         2009-‐‑‒2011             Webシステム開発(Javaなど)

                         2011-‐‑‒現在               PostgreSQL関係

                      近況

                                                    沖縄に⾏行行ってました。
Copyright © 2011 NTT© 2012 CORPORATION	
           Copyright DATA NTT DATA Corporation                                       5
本⽇日のお題



         お題                             perfを使ったPostgreSQLの解析(前編)

 今⽇日説明
                                        perfの仕組みや使い⽅方
 すること




Copyright © 2012 NTT DATA Corporation                               6
参考資料料


 n  本⽇日の講演に当たって参考にした資料料等
            n  perf  ソースコード
                       ̶—  [Linuxカーネルソースのルート]/tools/perf配下
            n  perf  ドキュメント
                       ̶—  [Linuxカーネルソースのルート]/tools/perf/Documentation
            n  perf  wiki
                       ̶—  https://perf.wiki.kernel.org/index.php/Main_̲Page
            n  『Linuxカーネル  Hacks
                         ―パフォーマンス改善、開発効率率率向上、省省電⼒力力化のためのテクニック』
                          ⾼高橋  浩和  (監修),  池⽥田  宗広,  ⼤大岩  尚宏,  島本  裕志,  ⽵竹部  晶雄,  平松  雅⺒巳
                                                                                     (著)




Copyright © 2012NTT DATA Corporation                                                       7
2.  プロファイリングとは?




Copyright © 2012 NTT DATA Corporation                     8
トラブルシューティングとは?



障害発⽣生                                               解析                        対処

                                        現状把握       切切り分け      原因特定       暫定対処      根本解決

                                        運⽤用中に取得し   運⽤用中に取得し   問題がなぜ起き    障害を避けるた   同様の障害が発
                                        た情報や顧客か    た情報や、シス    たのか、どう     めに暫定的な対   ⽣生しないように
                                        らのヒアリング    テムのログ、シ    いった処理理が原   処を実施する。   根本的な対処を
                                        を通して、実際    ステムが出すそ    因かを特定する。             ⾏行行う。
                                        に何が起きてい    の他の情報を元
                                        るのかを把握す    に、どこに問題
                                        る。         があるのかを特
                                                   定する。




Copyright © 2012 NTT DATA Corporation                                                         9
トラブルシューティングとは?



障害発⽣生                                               解析                        対処

                                        現状把握       切切り分け      原因特定       暫定対処      根本解決

                                        運⽤用中に取得し   運⽤用中に取得し   問題がなぜ起き    障害を避けるた   同様の障害が発
                                        た情報や顧客か    た情報や、シス    たのか、どう     めに暫定的な対   ⽣生しないように
                                        らのヒアリング    テムのログ、シ    いった処理理が原   処を実施する。   根本的な対処を
                                        を通して、実際    ステムが出すそ    因かを特定する。             ⾏行行う。
                                        に何が起きてい    の他の情報を元
                                        るのかを把握す    に、どこに問題
                                        る。         があるのかを特
                                                   定する。


                                               perfを使うタイミング




Copyright © 2012 NTT DATA Corporation                                                         10
解析とは?


n 解析とは
           ̶— ログやエラーメッセージなどシステムから得られる情報から、何が起きている
              かを把握し、どこに問題があるのかを特定し、その原因を突き⽌止めること。


n なぜ解析をするのか
           ̶— やみくもに対策を打っても、弾があたらないため。原因を特定することで、適
              切切な対策を打つために実施する。

n 解析⼿手法の例例
           ̶— ログ解析
           ̶— プロファイリング




Copyright © 2012 NTT DATA Corporation               11
プロファイリングとは


n プロファイリングとは
           ̶— プログラムのどの部分がボトルネックとなって処理理に時間がかかっているのか
              など、障害の原因を特定すること。




Copyright © 2012 NTT DATA Corporation                12
3.  perfとは




Copyright © 2012 NTT DATA Corporation                13
perfとは

n    perf(Performance  Counters  for  Linux)とは?
                       -  Linuxカーネル上の統合パフォーマンスツール
                       -  イベント数計測にCPUに内蔵されているレジスタを使⽤用
                       -  perf  tools  (ツールの集合体、サブコマンド群)

n    イベントとは??
                       -  perfの計測対象




Copyright © 2012 NTT DATA Corporation                      14
イベントの分類

分類                                      説明              具体例例

Hardware  event                         プロッセサで計測されるイ    cpu-‐‑‒cycles,  cache-‐‑‒missesなど
                                        ベント。

Software  event                         カーネルのカウンタで計測    cpu-‐‑‒clock,  page-‐‑‒faultsなど
                                        されるイベント。


Hardware  cache  event プロッセサで計測されるイ                     L1-‐‑‒dcache-‐‑‒load-‐‑‒misses,  
                       ベント。                             branch-‐‑‒loadsなど


Tracepoint  event                       カーネルの処理理を記録する   sched:sched_̲stat_̲runtime,  
                                        ためにカーネルに埋め込ま    syscalls:sys_̲enter_̲socket
                                        れたトレースポイント。     など




Copyright © 2012 NTT DATA Corporation                                                       15
プロファイラとしてありたい姿

  WHAT  DO  WE  CARE?

•  The  Linux  Performance  Events  Subsystem  provides  a  
low  overhead  way  to  measure  the  workloads  of  a  single  
application  or  the  full  system

•  Itʼ’s  at  least  an  order  of  magnitude  faster  than  an  
instrumenting  profiler

•  It  provides  far  more  information  compared  to  statistical  
profiler

Roberto  A.  Vitillo  (ローレンス・バークレー国⽴立立研究所)の“Future  computing  in  particle  
physics”カンファレンスにおける講演資料料「PERFORMANCE  TOOLS  DEVELOPMENTS」  
(2011年年6⽉月16⽇日)より。

Copyright © 2012 NTT DATA Corporation                                           16
プロファイラとしてありたい姿
§ 低いオーバヘッド
                      -  解析対象のシステムは既に何らかのオーバヘッドが発⽣生している
                         ことが多い。そこにさらに負荷がかかるツールを使おうとしても、
                         ツールが動かなかったり、システムがダウンする可能性もある。
§ 多くの情報
                      -  トラブルの原因はいっぱい考えられるから。
§ ⾒見見やすい表⽰示(多くの情報の中から取捨選択が可能)
                      -  なにがどう書いてあるのか分からないと、トラブルの原因が表⽰示
                         されていても⾒見見落落とす可能性もある。




Copyright © 2012 NTT DATA Corporation                     17
perfについて〜~その他

§   いつLinuxカーネルに統合されたの?
       -  Linuxカーネル  2.6.31  

§ 誰が作ったの?
                       -  Ingo  Molnar⽒氏が中⼼心となって開発が進められた。

§   メンテナは?
       -  Ingo  Molnar⽒氏(Red  Hat)
                       -  Arnaldo  Carvelho  de  Melo⽒氏(Red  Hat)  




Copyright © 2012 NTT DATA Corporation                                 18
4.  perfの仕組み




Copyright © 2012 NTT DATA Corporation                  19
perfのフロー  〜~イベントの指定


        ユーザ                             #  perf  stat  XX

“perf_̲event_̲open”(
システムコール)で処
理理を依頼
                                                  カーネル

                                                  Software  eventの場合




                                                                       カウンタ

                                              Hardware  event
                                              の場合
                                                                  レジスタに取得するイベントを設定
                                         ハードウェア(レジスタ)
                                           イベント指定レジスタ
                                            カウンタレジスタ

Copyright © 2012 NTT DATA Corporation                                                20
perfのフロー  〜~データの保存


        ユーザ                             #  perf  stat  XX




                                                  カーネル

                                                  Software  eventの場合




                                                                       カウンタ

                                              Hardware  event
                                              の場合
                                                                レジスタから値を取得。
                                         ハードウェア(レジスタ)
                                           イベント指定レジスタ
                                            カウンタレジスタ

Copyright © 2012 NTT DATA Corporation                                         21
perfのフロー  〜~データの保存


        ユーザ                             #  perf  stat  XX


                                                            加⼯工して値を返す。

                                                  カーネル




                                                                  カウンタ


                                                               レジスタから値を取得。
                                         ハードウェア(レジスタ)
                                           イベント指定レジスタ
                                            カウンタレジスタ

Copyright © 2012 NTT DATA Corporation                                        22
perfの仕組み
          perfでは、perf_̲event_̲openというシステムコールを利利⽤用し
          てカーネルから値を取ってきている。
          ■  include/linux/syscalls.h  より
                :
                :
          asmlinkage  long  sys_̲perf_̲event_̲open(
                                          struct  perf_̲event_̲attr  _̲_̲user  *attr_̲uptr,
                                          pid_̲t  pid,  int  cpu,  int  group_̲fd,  unsigned  long  flags);
                :
                :  
         ■  tools/perf/perf.h  より
               :
               :
         sys_̲perf_̲event_̲open(struct  perf_̲event_̲attr  *attr,
                                                     pid_̲t  pid,  int  cpu,  int  group_̲fd,
                                                     unsigned  long  flags)
         {
                         attr-‐‑‒>size  =  sizeof(*attr);
                         return  syscall(_̲_̲NR_̲perf_̲event_̲open,  attr,  pid,  cpu,
                                                       group_̲fd,  flags);
         }
               :
               :  
Copyright © 2012 NTT DATA Corporation                                                                        23
5.  perfと他のパフォーマンス解析ツールとの⽐比較




Copyright © 2012 NTT DATA Corporation                                  24
解析ツールってどんなものがある?

§ 解析ツール
                       -      Oprofile
                       -      ftrace
                       -      System  tap
                       -      …  




Copyright © 2012 NTT DATA Corporation       25
他のツールとの⽐比較

                                        perf   Oprofile   SystemTap

        オーバヘッド                          低      低         スクリプト次第
                                                         (漏漏れなく追跡する)

        情報量量                            多      中         多


        情報の取捨選択                         可能     可能        可能




Copyright © 2012 NTT DATA Corporation                                  26
他のツールとの⽐比較

                                        perf          Oprofile      SystemTap

        オーバヘッド                          低             低            ⾼高
                                                                   (漏漏れなく追跡する)

        情報の取捨選択                         可能            可能           不不可能


        動的監視                            可能            不不可能         可能


        指向性                             中             低            ⾼高
                                        (システム全体も処理理   (システム全体のプロ   (アドホックなプロ
                                        個別のプロファイリ     ファイリング向き)    ファイリング向き)
                                        ングも可能)

        危険性                             低             低            ⾼高
                                                                   (スクリプト暴暴⾛走の可
                                                                   能性)




Copyright © 2012 NTT DATA Corporation                                             27
6.  perfの導⼊入と使い⽅方




Copyright © 2012 NTT DATA Corporation                       28
今回の講演に当たって使⽤用した環境
    ソフトウェア名                             バージョン               備考
    Ubuntu                              12.04
    Linux  kernel                       3.2.0
    VirtualBox                          4.1.22              仮想化ソフト



                              VirtualBox
                                                                 n  VirtualBox上のサーバ
                                                                 OS:Ununtu  12.04
                                                                 カーネル:Linux  kernel3.2.0




                                                 Macbook  Air


Copyright © 2012 NTT DATA Corporation                                                      29
【参考】perfがサポートされているかの確認


 §  カーネルバージョンの確認
                       -  Linux  kernel  2.6以上でサポートされている
 ※コマンドによっては、より新しいバージョンのみにしか対応していないものもある。



 §  コンフィギュアオプションの確認
                       -  CONFIG_̲PERF_̲xxxx  というオプションが
                         有効になっていれば、perf  がサポートされている。

 ※コンフィギュアオプションの確認⽅方法
            /boot配下の”  config-‐‑‒<カーネルバージョン>-‐‑‒generic-‐‑‒pae”ファイルを確認。




Copyright © 2012NTT DATA Corporation                                     30
perfの導⼊入

          n  perfをインストールするには、以下の2つの⽅方法がある。


             1.  apt-‐‑‒get,  yumを使う⽅方法

             2.  ソースからインストールする⽅方法




Copyright © 2012 NTT DATA Corporation         31
perfの導⼊入〜~1.apt-‐‑‒getによるインストール

             §  準備
                                   -  linux-‐‑‒tools-‐‑‒commonが必要




Copyright © 2012 NTT DATA Corporation                               32
perfの導⼊入〜~1.apt-‐‑‒getによるインストール

§   perfのインストール
        -  以下のコマンドを⼊入⼒力力
          #  sudo  apt-‐‑‒get  install  linux-‐‑‒tools-‐‑‒3.2.0-‐‑‒30
                       :
          以下のパッケージが新たにインストールされます:
               linux-‐‑‒tools-‐‑‒3.2.0-‐‑‒30
                       :
               linux-‐‑‒tools-‐‑‒3.2.0-‐‑‒30  (3.2.0-‐‑‒30.48)を設定しています...
                       :




Copyright © 2012 NTT DATA Corporation                                       33
perfの導⼊入〜~2.ソースからのインストール

             §  準備
                  -  libdw-‐‑‒dev  or  elfutils-‐‑‒libelf-‐‑‒devel  が必要




Copyright © 2012 NTT DATA Corporation                                     34
perfの導⼊入〜~2.ソースからのインストール

§   perfのインストール
        -  以下のコマンドを⼊入⼒力力
          #  sudo  apt-‐‑‒get  install  linux-‐‑‒source
                         :
          以下のパッケージが新たにインストールされます:
              linux-‐‑‒source  linux-‐‑‒source-‐‑‒3.2.0
                         :
              linux-‐‑‒source-‐‑‒3.2.0を設定しています…
                         :
          #  tar  xjf  linux-‐‑‒source-‐‑‒3.2.0.tar.bz2  
          #  cd  <カーネルソースのルート>/tools/perf
          #  make
          #  make  install




Copyright © 2012 NTT DATA Corporation                       35
動作確認

§   動作確認
       -  以下のコマンドを⼊入⼒力力
          #  perf  list
          List  of  pre-‐‑‒defined  events  (to  be  used  in  -‐‑‒e):
              cpu-‐‑‒cycles  OR  cycles                                                                             [Hardware  event]
              stalled-‐‑‒cycles-‐‑‒frontend  OR  idle-‐‑‒cycles-‐‑‒frontend   [Hardware  event]
              stalled-‐‑‒cycles-‐‑‒backend  OR  idle-‐‑‒cycles-‐‑‒backend   [Hardware  event]
              instructions                                                                                                           [Hardware  event]
                :
                :
              cpu-‐‑‒clock                                                                                                           [Software  event]
              task-‐‑‒clock                                                                                                       [Software  event]
                :
                :  



                                              perfで利利⽤用可能なプロファイルイベントの
                                              ⼀一覧が、表⽰示されれば、ok!!
Copyright © 2012 NTT DATA Corporation                                                                                                                    36
perf  の使い⽅方


§ perfの使い⽅方
          #  perf  <コマンド>  [オプション]



§ 代表的なコマンド
             コマンド                       説明
             perf  annotate             perf  recordで作成したperfのデータを読み込み、  関数で呼び出した命令令レベ
                                        ルのトレース結果を表⽰示する。

             perf  probe                新たに動的なトレースポイント(イベント)を定義する。

             perf  record               イベントの記録を⾏行行う。

             perf  report               perf  recordで記録したイベントをプロンプトに表⽰示する。


             perf  script               perf  recordで作成したperfのデータを読み込み、  トレース結果を表⽰示する。

             perf  stat                 引数に指定したコマンドのパフォーマンスカウンタの値を表⽰示する。

             perf  top                  Linuxコマンドの”top”のように動的にシステム監視を⾏行行う。

Copyright © 2012 NTT DATA Corporation                                                    37
イベントの指定

perf  では、1回の実⾏行行ごとに単⼀一のもしくは、複数のイベント指定が可能で
ある。以下のように、-‐‑‒eオプションに続いて、イベント名を記述する。


n 単⼀一イベント指定
#  perf  stat    -‐‑‒e  cycles  dd  if=/dev/zero  of=/dev/null  count=100000



n 複数イベント指定
#  perf  stat  -‐‑‒e  cycles:uk  –e  faults    dd  if=/dev/zero  of=/dev/null  count=100000




Copyright © 2012 NTT DATA Corporation                                                         38
7.  perfを使ってみよう




Copyright © 2012 NTT DATA Corporation                     39
perf  stat
perf  statは、指定したコマンドのパフォーマンスカウンタの値を表⽰示できる。
perf  record/reportと違い、指定したコマンドの総合的な統計情報を得るこ
とが可能である。

n  こんな時に便便利利
     ̶—  あるコマンドについて、総合的な(複数のイベントにまたがった)性能測
         定情報が知りたい。
     ̶—  性能の悪い処理理について、何が原因なのか知りたい。
     ̶—  性能改善(暫定対処、本格対処)を⾏行行うにあたっての数値⽬目標を出したい。




Copyright © 2012 NTT DATA Corporation            40
perf  stat  〜~オプション


§ 代表的なオプション
        コマンド                            説明
        -‐‑‒e                           イベントを指定する。

        -‐‑‒p                           プロセスIDを指定する。

        -‐‑‒t                           スレッドIDを指定する。

        -‐‑‒a                           全CPU上のプロセスを指定する。

        -‐‑‒C                           特定のCPU上のプロセスを指定する。

        -‐‑‒B                           計測結果にカンマを⼊入れて表⽰示する。(ex.1,000)




Copyright © 2012 NTT DATA Corporation                                   41
perf  stat  〜~実⾏行行例例

          n  perf  stat  の実⾏行行例例を以下に⽰示す。
          #  perf  stat  -‐‑‒B  dd  if=/dev/zero  of=/dev/null  count=1000000

          1000000+0  レコード⼊入⼒力力
          1000000+0  レコード出⼒力力
          512000000  バイト  (512  MB)  コピーされました、  0.433087  秒、  1.2  GB/秒

            Performance  counter  stats  for  'dd  if=/dev/zero  of=/dev/null  count=1000000':

                          436.626492  task-‐‑‒clock                                #        0.957  CPUs  utilized                    
                                          24  context-‐‑‒switches                    #        0.000  M/sec                                    
                                            0  CPU-‐‑‒migrations                        #        0.000  M/sec                                    
                                        252  page-‐‑‒faults                              #        0.001  M/sec                                    
                <not  supported>  cycles                                    
                <not  supported>  stalled-‐‑‒cycles-‐‑‒frontend  
                <not  supported>  stalled-‐‑‒cycles-‐‑‒backend    
                <not  supported>  instructions                        
                <not  supported>  branches                                
                <not  supported>  branch-‐‑‒misses                      

                        0.456183302  seconds  time  elapsed



          ※  特にイベント指定しなければ、  perf  stat  は上記のイベントの集計をする
Copyright © 2012 NTT DATA Corporation                                                                                                                42
perf  top
perf  topは、リアルタイムでのプロファイリングが可能にするコマンドであ
る。Linuxコマンドの  top  のように動的にシステム監視を⾏行行うことができる。


n  こんな時に便便利利
     ̶—  システム全体のプロファイリングを⾏行行いたい。
     ̶—  リアルタイムで監視を⾏行行いたい。




Copyright © 2012 NTT DATA Corporation          43
perf  top〜~使⽤用例例

          n  perf  topの実⾏行行例例を以下に⽰示す。
          #  perf  top




Copyright © 2012 NTT DATA Corporation    44
perf  top〜~オプション


§ 代表的なオプション
        コマンド                            説明
        -‐‑‒e                           イベントを指定する。

        -‐‑‒p                           プロセスIDを指定する。

        -‐‑‒t                           スレッドIDを指定する。

        -‐‑‒a                           全CPU上のプロセスを指定する。

        -‐‑‒C                           特定のCPU上のプロセスを指定する。




Copyright © 2012 NTT DATA Corporation                        45
perf  record  &  perf  report
perf  recordは、イベントの記録を⾏行行う。記録したデータは、データファイル
(デフォルト名はperf.data)として保存される。そのデータファイルは、
perf  reportで⾒見見ることができる。

n  こんな時に便便利利
     ̶—  あるコマンドについての動作を詳細に記録したい。
     ̶—  怪しい処理理について、詳細に解析したい。
     ̶—  性能の悪い処理理について、何が原因なのか知りたい。




Copyright © 2012 NTT DATA Corporation         46
perf  report〜~オプション


§ 代表的なオプション
        コマンド                            説明
        -‐‑‒e                           イベントを指定する。

        -‐‑‒o                           出⼒力力ファイル名を指定する(デフォルトは”perf.data”)

        -‐‑‒p                           プロセスIDを指定する。

        -‐‑‒t                           スレッドIDを指定する。

        -‐‑‒a                           全CPU上のプロセスを指定する。

        -‐‑‒C                           特定のCPU上のプロセスを指定する。




Copyright © 2012 NTT DATA Corporation                                       47
perf  record〜~オプション


§ 代表的なオプション
        コマンド                            説明
        -‐‑‒i                           ⼊入⼒力力ファイル名を指定する(⼊入⼒力力しないとカレンとディレクトリ
                                        の”perf.data”を⼊入⼒力力ファイルとする)

        -‐‑‒s                           pidなどでソートする。




Copyright © 2012 NTT DATA Corporation                                         48
perf  record  &  perf  report  〜~使⽤用例例

          n  perf  recordの実⾏行行例例を以下に⽰示す。
          #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s
          stress:  info:  [5843]  dispatching  hogs:  4  cpu,  2  io,  2  vm,  0  hdd
          stress:  info:  [5843]  successful  run  completed  in  10s
          [  perf  record:  Woken  up  1  times  to  write  data  ]
          [  perf  record:  Captured  and  wrote  0.247  MB  perf.data  (~∼10775  samples)  ]

          #  ls
          perf.data




Copyright © 2012 NTT DATA Corporation                                                                        49
perf  record  &  perf  report  〜~使⽤用例例

    n  perf  reportの実⾏行行例例を以下に⽰示す。
オーバヘッド コマンドオブジェクト名 シンボル名




   Copyright © 2012 NTT DATA Corporation     50
perf  record  &  perf  report  〜~Tips

          n  perf  recoerdで得られるデータファイル(perf.data)は、同名のファイルが
              あっても、上書きされずに、古いファイルを”perf.data.old”として対⽐比して
              くれる。ただし、”perf.data.old”までは退避処理理をしてくれないので注意。
          #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s
          stress:  info:  [5843]  dispatching  hogs:  4  cpu,  2  io,  2  vm,  0  hdd
          stress:  info:  [5843]  successful  run  completed  in  10s
          [  perf  record:  Woken  up  1  times  to  write  data  ]
          [  perf  record:  Captured  and  wrote  0.247  MB  perf.data  (~∼10775  samples)  ]

          #  ls
          perf.data

          #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s
                :
                :
          #  ls
          perf.data  perf.data.old

          #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s
                :
                :
          #  ls
          perf.data  perf.data.old


Copyright © 2012 NTT DATA Corporation                                                                        51
8.  まとめ




Copyright © 2012 NTT DATA Corporation             52
まとめ


n perfの概要
n perfの導⼊入、使い⽅方
n perfの各種コマンドについて




Copyright © 2012 NTT DATA Corporation   53
後編について


n プロファイリングのネタ




Copyright © 2012 NTT DATA Corporation   54
Copyright © 2011 NTT DATA Corporation




Copyright © 2012 NTT DATA Corporation

More Related Content

What's hot (20)

PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
XIDを周回させてみよう
XIDを周回させてみようXIDを周回させてみよう
XIDを周回させてみよう
Akio Ishida
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
Masahiko Sawada
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
 
データ基盤に関わる問い合わせ対応を仕組みで解決する
データ基盤に関わる問い合わせ対応を仕組みで解決するデータ基盤に関わる問い合わせ対応を仕組みで解決する
データ基盤に関わる問い合わせ対応を仕組みで解決する
株式会社MonotaRO Tech Team
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
Preferred Networks
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
XIDを周回させてみよう
XIDを周回させてみようXIDを周回させてみよう
XIDを周回させてみよう
Akio Ishida
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
Masahiko Sawada
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
データ基盤に関わる問い合わせ対応を仕組みで解決する
データ基盤に関わる問い合わせ対応を仕組みで解決するデータ基盤に関わる問い合わせ対応を仕組みで解決する
データ基盤に関わる問い合わせ対応を仕組みで解決する
株式会社MonotaRO Tech Team
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 

Viewers also liked (8)

[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
Insight Technology, Inc.
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
NTT DATA OSS Professional Services
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
Daichi Egawa
 
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
Insight Technology, Inc.
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)
kasaharatt
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
Insight Technology, Inc.
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
Daichi Egawa
 
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
Insight Technology, Inc.
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)
kasaharatt
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
Ad

Similar to perfを使ったPostgreSQLの解析(前編) (20)

PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
Toshiyuki Shimono
 
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
Dell TechCenter Japan
 
RWC2012(松江市&テクノプロジェクト)
RWC2012(松江市&テクノプロジェクト)RWC2012(松江市&テクノプロジェクト)
RWC2012(松江市&テクノプロジェクト)
Techno Project Co., Ltd.
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
Developers Summit
 
Postgresql安定運用のご提案
Postgresql安定運用のご提案Postgresql安定運用のご提案
Postgresql安定運用のご提案
拓也 岸本
 
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
de:code 2017
 
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
Naoki (Neo) SATO
 
tut_pfi_2012
tut_pfi_2012tut_pfi_2012
tut_pfi_2012
Preferred Networks
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
C22 Oracle Database を監視しようぜ! by 山下正/内山義夫
C22 Oracle Database を監視しようぜ! by 山下正/内山義夫C22 Oracle Database を監視しようぜ! by 山下正/内山義夫
C22 Oracle Database を監視しようぜ! by 山下正/内山義夫
Insight Technology, Inc.
 
2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)
Takahiro Shinagawa
 
システムパフォーマンス勉強会#1
システムパフォーマンス勉強会#1システムパフォーマンス勉強会#1
システムパフォーマンス勉強会#1
shingo suzuki
 
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #HadoopLarge Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Koichi Hamada
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
NTT DATA Technology & Innovation
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
 
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
Insight Technology, Inc.
 
I-C-I Webセキュリティサービスのご紹介
I-C-I Webセキュリティサービスのご紹介I-C-I Webセキュリティサービスのご紹介
I-C-I Webセキュリティサービスのご紹介
Mitsuhiro Kouta
 
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
Daisuke Ikeda
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
Toshiyuki Shimono
 
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
Dell TechCenter Japan
 
RWC2012(松江市&テクノプロジェクト)
RWC2012(松江市&テクノプロジェクト)RWC2012(松江市&テクノプロジェクト)
RWC2012(松江市&テクノプロジェクト)
Techno Project Co., Ltd.
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
Developers Summit
 
Postgresql安定運用のご提案
Postgresql安定運用のご提案Postgresql安定運用のご提案
Postgresql安定運用のご提案
拓也 岸本
 
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
de:code 2017
 
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
Naoki (Neo) SATO
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
C22 Oracle Database を監視しようぜ! by 山下正/内山義夫
C22 Oracle Database を監視しようぜ! by 山下正/内山義夫C22 Oracle Database を監視しようぜ! by 山下正/内山義夫
C22 Oracle Database を監視しようぜ! by 山下正/内山義夫
Insight Technology, Inc.
 
2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)
Takahiro Shinagawa
 
システムパフォーマンス勉強会#1
システムパフォーマンス勉強会#1システムパフォーマンス勉強会#1
システムパフォーマンス勉強会#1
shingo suzuki
 
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #HadoopLarge Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Koichi Hamada
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
NTT DATA Technology & Innovation
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
 
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
Insight Technology, Inc.
 
I-C-I Webセキュリティサービスのご紹介
I-C-I Webセキュリティサービスのご紹介I-C-I Webセキュリティサービスのご紹介
I-C-I Webセキュリティサービスのご紹介
Mitsuhiro Kouta
 
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
Daisuke Ikeda
 
Ad

perfを使ったPostgreSQLの解析(前編)

  • 1. perfを使ったPostgreSQLの解析 〜~前編 2012年年9⽉月29⽇日(⼟土) Copyright © 2012 NTT DATA Corporation
  • 2. Agenda u 前編 1.  はじめに 2.  プロファイリングとは? 3.  perfとは 4.  perfの仕組み 5.  perfと他のパフォーマンス解析ツールとの⽐比較 6.  perfの導⼊入と使い⽅方 7.  perfを使ってみよう 8.  まとめ Copyright © 2012NTT DATA Corporation 2
  • 3. Agenda u 後編 1.  前編の復復習 2.  perfを使ったプロファイリングの流流れ 3.  PostgreSQLをプロファイリングしてみよう 4.  perfの使いどころ 5.  まとめ Copyright © 2012NTT DATA Corporation 3
  • 4. 1.  はじめに Copyright © 2012 NTT DATA Corporation 4
  • 5. あらためまして⾃自⼰己紹介 ⽒氏名 所属 NTTデータ   江川  ⼤大地 基盤システム事業本部 Twitter システム⽅方式技術ビジネスユニット @daiti0804 やっていたこと 年年代 やったこと              -‐‑‒2009 歴史のお勉強(⼤大学時代) 2009-‐‑‒2011 Webシステム開発(Javaなど) 2011-‐‑‒現在 PostgreSQL関係 近況 沖縄に⾏行行ってました。 Copyright © 2011 NTT© 2012 CORPORATION Copyright DATA NTT DATA Corporation 5
  • 6. 本⽇日のお題 お題 perfを使ったPostgreSQLの解析(前編) 今⽇日説明 perfの仕組みや使い⽅方 すること Copyright © 2012 NTT DATA Corporation 6
  • 7. 参考資料料 n  本⽇日の講演に当たって参考にした資料料等 n  perf  ソースコード ̶—  [Linuxカーネルソースのルート]/tools/perf配下 n  perf  ドキュメント ̶—  [Linuxカーネルソースのルート]/tools/perf/Documentation n  perf  wiki ̶—  https://perf.wiki.kernel.org/index.php/Main_̲Page n  『Linuxカーネル  Hacks  ―パフォーマンス改善、開発効率率率向上、省省電⼒力力化のためのテクニック』 ⾼高橋  浩和  (監修),  池⽥田  宗広,  ⼤大岩  尚宏,  島本  裕志,  ⽵竹部  晶雄,  平松  雅⺒巳 (著) Copyright © 2012NTT DATA Corporation 7
  • 9. トラブルシューティングとは? 障害発⽣生 解析 対処 現状把握 切切り分け 原因特定 暫定対処 根本解決 運⽤用中に取得し 運⽤用中に取得し 問題がなぜ起き 障害を避けるた 同様の障害が発 た情報や顧客か た情報や、シス たのか、どう めに暫定的な対 ⽣生しないように らのヒアリング テムのログ、シ いった処理理が原 処を実施する。 根本的な対処を を通して、実際 ステムが出すそ 因かを特定する。 ⾏行行う。 に何が起きてい の他の情報を元 るのかを把握す に、どこに問題 る。 があるのかを特 定する。 Copyright © 2012 NTT DATA Corporation 9
  • 10. トラブルシューティングとは? 障害発⽣生 解析 対処 現状把握 切切り分け 原因特定 暫定対処 根本解決 運⽤用中に取得し 運⽤用中に取得し 問題がなぜ起き 障害を避けるた 同様の障害が発 た情報や顧客か た情報や、シス たのか、どう めに暫定的な対 ⽣生しないように らのヒアリング テムのログ、シ いった処理理が原 処を実施する。 根本的な対処を を通して、実際 ステムが出すそ 因かを特定する。 ⾏行行う。 に何が起きてい の他の情報を元 るのかを把握す に、どこに問題 る。 があるのかを特 定する。 perfを使うタイミング Copyright © 2012 NTT DATA Corporation 10
  • 11. 解析とは? n 解析とは ̶— ログやエラーメッセージなどシステムから得られる情報から、何が起きている かを把握し、どこに問題があるのかを特定し、その原因を突き⽌止めること。 n なぜ解析をするのか ̶— やみくもに対策を打っても、弾があたらないため。原因を特定することで、適 切切な対策を打つために実施する。 n 解析⼿手法の例例 ̶— ログ解析 ̶— プロファイリング Copyright © 2012 NTT DATA Corporation 11
  • 12. プロファイリングとは n プロファイリングとは ̶— プログラムのどの部分がボトルネックとなって処理理に時間がかかっているのか など、障害の原因を特定すること。 Copyright © 2012 NTT DATA Corporation 12
  • 13. 3.  perfとは Copyright © 2012 NTT DATA Corporation 13
  • 14. perfとは n   perf(Performance  Counters  for  Linux)とは? -  Linuxカーネル上の統合パフォーマンスツール -  イベント数計測にCPUに内蔵されているレジスタを使⽤用 -  perf  tools  (ツールの集合体、サブコマンド群) n   イベントとは?? -  perfの計測対象 Copyright © 2012 NTT DATA Corporation 14
  • 15. イベントの分類 分類 説明 具体例例 Hardware  event プロッセサで計測されるイ cpu-‐‑‒cycles,  cache-‐‑‒missesなど ベント。 Software  event カーネルのカウンタで計測 cpu-‐‑‒clock,  page-‐‑‒faultsなど されるイベント。 Hardware  cache  event プロッセサで計測されるイ L1-‐‑‒dcache-‐‑‒load-‐‑‒misses,   ベント。 branch-‐‑‒loadsなど Tracepoint  event カーネルの処理理を記録する sched:sched_̲stat_̲runtime,   ためにカーネルに埋め込ま syscalls:sys_̲enter_̲socket れたトレースポイント。 など Copyright © 2012 NTT DATA Corporation 15
  • 16. プロファイラとしてありたい姿 WHAT  DO  WE  CARE? •  The  Linux  Performance  Events  Subsystem  provides  a   low  overhead  way  to  measure  the  workloads  of  a  single   application  or  the  full  system •  Itʼ’s  at  least  an  order  of  magnitude  faster  than  an   instrumenting  profiler •  It  provides  far  more  information  compared  to  statistical   profiler Roberto  A.  Vitillo  (ローレンス・バークレー国⽴立立研究所)の“Future  computing  in  particle   physics”カンファレンスにおける講演資料料「PERFORMANCE  TOOLS  DEVELOPMENTS」   (2011年年6⽉月16⽇日)より。 Copyright © 2012 NTT DATA Corporation 16
  • 17. プロファイラとしてありたい姿 § 低いオーバヘッド -  解析対象のシステムは既に何らかのオーバヘッドが発⽣生している ことが多い。そこにさらに負荷がかかるツールを使おうとしても、 ツールが動かなかったり、システムがダウンする可能性もある。 § 多くの情報 -  トラブルの原因はいっぱい考えられるから。 § ⾒見見やすい表⽰示(多くの情報の中から取捨選択が可能) -  なにがどう書いてあるのか分からないと、トラブルの原因が表⽰示 されていても⾒見見落落とす可能性もある。 Copyright © 2012 NTT DATA Corporation 17
  • 18. perfについて〜~その他 §   いつLinuxカーネルに統合されたの? -  Linuxカーネル  2.6.31   § 誰が作ったの? -  Ingo  Molnar⽒氏が中⼼心となって開発が進められた。 §   メンテナは? -  Ingo  Molnar⽒氏(Red  Hat) -  Arnaldo  Carvelho  de  Melo⽒氏(Red  Hat)   Copyright © 2012 NTT DATA Corporation 18
  • 19. 4.  perfの仕組み Copyright © 2012 NTT DATA Corporation 19
  • 20. perfのフロー  〜~イベントの指定 ユーザ #  perf  stat  XX “perf_̲event_̲open”( システムコール)で処 理理を依頼 カーネル Software  eventの場合 カウンタ Hardware  event の場合 レジスタに取得するイベントを設定 ハードウェア(レジスタ) イベント指定レジスタ カウンタレジスタ Copyright © 2012 NTT DATA Corporation 20
  • 21. perfのフロー  〜~データの保存 ユーザ #  perf  stat  XX カーネル Software  eventの場合 カウンタ Hardware  event の場合 レジスタから値を取得。 ハードウェア(レジスタ) イベント指定レジスタ カウンタレジスタ Copyright © 2012 NTT DATA Corporation 21
  • 22. perfのフロー  〜~データの保存 ユーザ #  perf  stat  XX 加⼯工して値を返す。 カーネル カウンタ レジスタから値を取得。 ハードウェア(レジスタ) イベント指定レジスタ カウンタレジスタ Copyright © 2012 NTT DATA Corporation 22
  • 23. perfの仕組み perfでは、perf_̲event_̲openというシステムコールを利利⽤用し てカーネルから値を取ってきている。 ■  include/linux/syscalls.h  より      :      : asmlinkage  long  sys_̲perf_̲event_̲open(                                struct  perf_̲event_̲attr  _̲_̲user  *attr_̲uptr,                                pid_̲t  pid,  int  cpu,  int  group_̲fd,  unsigned  long  flags);      :      :   ■  tools/perf/perf.h  より      :      : sys_̲perf_̲event_̲open(struct  perf_̲event_̲attr  *attr,                                            pid_̲t  pid,  int  cpu,  int  group_̲fd,                                            unsigned  long  flags) {                attr-‐‑‒>size  =  sizeof(*attr);                return  syscall(_̲_̲NR_̲perf_̲event_̲open,  attr,  pid,  cpu,                                              group_̲fd,  flags); }      :      :   Copyright © 2012 NTT DATA Corporation 23
  • 25. 解析ツールってどんなものがある? § 解析ツール -  Oprofile -  ftrace -  System  tap -  …   Copyright © 2012 NTT DATA Corporation 25
  • 26. 他のツールとの⽐比較 perf Oprofile SystemTap オーバヘッド 低 低 スクリプト次第 (漏漏れなく追跡する) 情報量量 多 中 多 情報の取捨選択 可能 可能 可能 Copyright © 2012 NTT DATA Corporation 26
  • 27. 他のツールとの⽐比較 perf Oprofile SystemTap オーバヘッド 低 低 ⾼高 (漏漏れなく追跡する) 情報の取捨選択 可能 可能 不不可能 動的監視 可能 不不可能 可能 指向性 中 低 ⾼高 (システム全体も処理理 (システム全体のプロ (アドホックなプロ 個別のプロファイリ ファイリング向き) ファイリング向き) ングも可能) 危険性 低 低 ⾼高 (スクリプト暴暴⾛走の可 能性) Copyright © 2012 NTT DATA Corporation 27
  • 29. 今回の講演に当たって使⽤用した環境 ソフトウェア名 バージョン 備考 Ubuntu 12.04 Linux  kernel 3.2.0 VirtualBox 4.1.22 仮想化ソフト VirtualBox n  VirtualBox上のサーバ OS:Ununtu  12.04 カーネル:Linux  kernel3.2.0 Macbook  Air Copyright © 2012 NTT DATA Corporation 29
  • 30. 【参考】perfがサポートされているかの確認 §  カーネルバージョンの確認 -  Linux  kernel  2.6以上でサポートされている ※コマンドによっては、より新しいバージョンのみにしか対応していないものもある。 §  コンフィギュアオプションの確認 -  CONFIG_̲PERF_̲xxxx  というオプションが   有効になっていれば、perf  がサポートされている。 ※コンフィギュアオプションの確認⽅方法 /boot配下の”  config-‐‑‒<カーネルバージョン>-‐‑‒generic-‐‑‒pae”ファイルを確認。 Copyright © 2012NTT DATA Corporation 30
  • 31. perfの導⼊入 n  perfをインストールするには、以下の2つの⽅方法がある。 1.  apt-‐‑‒get,  yumを使う⽅方法 2.  ソースからインストールする⽅方法 Copyright © 2012 NTT DATA Corporation 31
  • 32. perfの導⼊入〜~1.apt-‐‑‒getによるインストール §  準備 -  linux-‐‑‒tools-‐‑‒commonが必要 Copyright © 2012 NTT DATA Corporation 32
  • 33. perfの導⼊入〜~1.apt-‐‑‒getによるインストール §   perfのインストール -  以下のコマンドを⼊入⼒力力 #  sudo  apt-‐‑‒get  install  linux-‐‑‒tools-‐‑‒3.2.0-‐‑‒30        : 以下のパッケージが新たにインストールされます: linux-‐‑‒tools-‐‑‒3.2.0-‐‑‒30        : linux-‐‑‒tools-‐‑‒3.2.0-‐‑‒30  (3.2.0-‐‑‒30.48)を設定しています...        : Copyright © 2012 NTT DATA Corporation 33
  • 34. perfの導⼊入〜~2.ソースからのインストール §  準備 -  libdw-‐‑‒dev  or  elfutils-‐‑‒libelf-‐‑‒devel  が必要 Copyright © 2012 NTT DATA Corporation 34
  • 35. perfの導⼊入〜~2.ソースからのインストール §   perfのインストール -  以下のコマンドを⼊入⼒力力 #  sudo  apt-‐‑‒get  install  linux-‐‑‒source        : 以下のパッケージが新たにインストールされます:    linux-‐‑‒source  linux-‐‑‒source-‐‑‒3.2.0        :    linux-‐‑‒source-‐‑‒3.2.0を設定しています…        : #  tar  xjf  linux-‐‑‒source-‐‑‒3.2.0.tar.bz2   #  cd  <カーネルソースのルート>/tools/perf #  make #  make  install Copyright © 2012 NTT DATA Corporation 35
  • 36. 動作確認 §   動作確認 -  以下のコマンドを⼊入⼒力力 #  perf  list List  of  pre-‐‑‒defined  events  (to  be  used  in  -‐‑‒e):    cpu-‐‑‒cycles  OR  cycles                                                                             [Hardware  event]    stalled-‐‑‒cycles-‐‑‒frontend  OR  idle-‐‑‒cycles-‐‑‒frontend   [Hardware  event]    stalled-‐‑‒cycles-‐‑‒backend  OR  idle-‐‑‒cycles-‐‑‒backend   [Hardware  event]    instructions                                                                                   [Hardware  event]      :      :    cpu-‐‑‒clock                                                                                                           [Software  event]    task-‐‑‒clock                                                                                                       [Software  event]      :      :   perfで利利⽤用可能なプロファイルイベントの ⼀一覧が、表⽰示されれば、ok!! Copyright © 2012 NTT DATA Corporation 36
  • 37. perf  の使い⽅方 § perfの使い⽅方 #  perf  <コマンド>  [オプション] § 代表的なコマンド コマンド 説明 perf  annotate perf  recordで作成したperfのデータを読み込み、  関数で呼び出した命令令レベ ルのトレース結果を表⽰示する。 perf  probe 新たに動的なトレースポイント(イベント)を定義する。 perf  record イベントの記録を⾏行行う。 perf  report perf  recordで記録したイベントをプロンプトに表⽰示する。 perf  script perf  recordで作成したperfのデータを読み込み、  トレース結果を表⽰示する。 perf  stat 引数に指定したコマンドのパフォーマンスカウンタの値を表⽰示する。 perf  top Linuxコマンドの”top”のように動的にシステム監視を⾏行行う。 Copyright © 2012 NTT DATA Corporation 37
  • 38. イベントの指定 perf  では、1回の実⾏行行ごとに単⼀一のもしくは、複数のイベント指定が可能で ある。以下のように、-‐‑‒eオプションに続いて、イベント名を記述する。 n 単⼀一イベント指定 #  perf  stat    -‐‑‒e  cycles  dd  if=/dev/zero  of=/dev/null  count=100000 n 複数イベント指定 #  perf  stat  -‐‑‒e  cycles:uk  –e  faults    dd  if=/dev/zero  of=/dev/null  count=100000 Copyright © 2012 NTT DATA Corporation 38
  • 39. 7.  perfを使ってみよう Copyright © 2012 NTT DATA Corporation 39
  • 40. perf  stat perf  statは、指定したコマンドのパフォーマンスカウンタの値を表⽰示できる。 perf  record/reportと違い、指定したコマンドの総合的な統計情報を得るこ とが可能である。 n  こんな時に便便利利 ̶—  あるコマンドについて、総合的な(複数のイベントにまたがった)性能測 定情報が知りたい。 ̶—  性能の悪い処理理について、何が原因なのか知りたい。 ̶—  性能改善(暫定対処、本格対処)を⾏行行うにあたっての数値⽬目標を出したい。 Copyright © 2012 NTT DATA Corporation 40
  • 41. perf  stat  〜~オプション § 代表的なオプション コマンド 説明 -‐‑‒e イベントを指定する。 -‐‑‒p プロセスIDを指定する。 -‐‑‒t スレッドIDを指定する。 -‐‑‒a 全CPU上のプロセスを指定する。 -‐‑‒C 特定のCPU上のプロセスを指定する。 -‐‑‒B 計測結果にカンマを⼊入れて表⽰示する。(ex.1,000) Copyright © 2012 NTT DATA Corporation 41
  • 42. perf  stat  〜~実⾏行行例例 n  perf  stat  の実⾏行行例例を以下に⽰示す。 #  perf  stat  -‐‑‒B  dd  if=/dev/zero  of=/dev/null  count=1000000 1000000+0  レコード⼊入⼒力力 1000000+0  レコード出⼒力力 512000000  バイト  (512  MB)  コピーされました、  0.433087  秒、  1.2  GB/秒  Performance  counter  stats  for  'dd  if=/dev/zero  of=/dev/null  count=1000000':                436.626492  task-‐‑‒clock                                #        0.957  CPUs  utilized                                                    24  context-‐‑‒switches                    #        0.000  M/sec                                                                      0  CPU-‐‑‒migrations                        #        0.000  M/sec                                                                  252  page-‐‑‒faults                              #        0.001  M/sec                                          <not  supported>  cycles                                          <not  supported>  stalled-‐‑‒cycles-‐‑‒frontend        <not  supported>  stalled-‐‑‒cycles-‐‑‒backend          <not  supported>  instructions                              <not  supported>  branches                                      <not  supported>  branch-‐‑‒misses                                    0.456183302  seconds  time  elapsed ※  特にイベント指定しなければ、  perf  stat  は上記のイベントの集計をする Copyright © 2012 NTT DATA Corporation 42
  • 43. perf  top perf  topは、リアルタイムでのプロファイリングが可能にするコマンドであ る。Linuxコマンドの  top  のように動的にシステム監視を⾏行行うことができる。 n  こんな時に便便利利 ̶—  システム全体のプロファイリングを⾏行行いたい。 ̶—  リアルタイムで監視を⾏行行いたい。 Copyright © 2012 NTT DATA Corporation 43
  • 44. perf  top〜~使⽤用例例 n  perf  topの実⾏行行例例を以下に⽰示す。 #  perf  top Copyright © 2012 NTT DATA Corporation 44
  • 45. perf  top〜~オプション § 代表的なオプション コマンド 説明 -‐‑‒e イベントを指定する。 -‐‑‒p プロセスIDを指定する。 -‐‑‒t スレッドIDを指定する。 -‐‑‒a 全CPU上のプロセスを指定する。 -‐‑‒C 特定のCPU上のプロセスを指定する。 Copyright © 2012 NTT DATA Corporation 45
  • 46. perf  record  &  perf  report perf  recordは、イベントの記録を⾏行行う。記録したデータは、データファイル (デフォルト名はperf.data)として保存される。そのデータファイルは、 perf  reportで⾒見見ることができる。 n  こんな時に便便利利 ̶—  あるコマンドについての動作を詳細に記録したい。 ̶—  怪しい処理理について、詳細に解析したい。 ̶—  性能の悪い処理理について、何が原因なのか知りたい。 Copyright © 2012 NTT DATA Corporation 46
  • 47. perf  report〜~オプション § 代表的なオプション コマンド 説明 -‐‑‒e イベントを指定する。 -‐‑‒o 出⼒力力ファイル名を指定する(デフォルトは”perf.data”) -‐‑‒p プロセスIDを指定する。 -‐‑‒t スレッドIDを指定する。 -‐‑‒a 全CPU上のプロセスを指定する。 -‐‑‒C 特定のCPU上のプロセスを指定する。 Copyright © 2012 NTT DATA Corporation 47
  • 48. perf  record〜~オプション § 代表的なオプション コマンド 説明 -‐‑‒i ⼊入⼒力力ファイル名を指定する(⼊入⼒力力しないとカレンとディレクトリ の”perf.data”を⼊入⼒力力ファイルとする) -‐‑‒s pidなどでソートする。 Copyright © 2012 NTT DATA Corporation 48
  • 49. perf  record  &  perf  report  〜~使⽤用例例 n  perf  recordの実⾏行行例例を以下に⽰示す。 #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s stress:  info:  [5843]  dispatching  hogs:  4  cpu,  2  io,  2  vm,  0  hdd stress:  info:  [5843]  successful  run  completed  in  10s [  perf  record:  Woken  up  1  times  to  write  data  ] [  perf  record:  Captured  and  wrote  0.247  MB  perf.data  (~∼10775  samples)  ] #  ls perf.data Copyright © 2012 NTT DATA Corporation 49
  • 50. perf  record  &  perf  report  〜~使⽤用例例 n  perf  reportの実⾏行行例例を以下に⽰示す。 オーバヘッド コマンドオブジェクト名 シンボル名 Copyright © 2012 NTT DATA Corporation 50
  • 51. perf  record  &  perf  report  〜~Tips n  perf  recoerdで得られるデータファイル(perf.data)は、同名のファイルが あっても、上書きされずに、古いファイルを”perf.data.old”として対⽐比して くれる。ただし、”perf.data.old”までは退避処理理をしてくれないので注意。 #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s stress:  info:  [5843]  dispatching  hogs:  4  cpu,  2  io,  2  vm,  0  hdd stress:  info:  [5843]  successful  run  completed  in  10s [  perf  record:  Woken  up  1  times  to  write  data  ] [  perf  record:  Captured  and  wrote  0.247  MB  perf.data  (~∼10775  samples)  ] #  ls perf.data #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s : : #  ls perf.data  perf.data.old #  perf  record  -‐‑‒e  cpu-‐‑‒clock  stress  -‐‑‒c  4  -‐‑‒i  2  -‐‑‒m  2  -‐‑‒-‐‑‒timeout  10s : : #  ls perf.data  perf.data.old Copyright © 2012 NTT DATA Corporation 51
  • 52. 8.  まとめ Copyright © 2012 NTT DATA Corporation 52
  • 55. Copyright © 2011 NTT DATA Corporation Copyright © 2012 NTT DATA Corporation