SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
はじめての DTrace(2)
“簡単なことからコツコツと”

shojih
 本日の学習目標

 DTrace とはどのようなもの?
 DTrace を使うと何が便利?
 何から学習するといいだろうか?
 Dプログラムの紹介
 Dプログラムの実例紹介

Dプログラムの紹介
 と、その前に参考本の紹介


 ●  タイトル/著者
     ● DTrace: Dynamic Tra-

       cing in Oracle Solaris,
       Mac OSX and FreeBSD
     ● Brendan Gregg/Jim

       Mauro
     ● ISBN-10:0132091518

     ● 発売日: 2011/4/1

     ● 4,579 (参考Amazon)

 ● dtracebook.com から本で

 紹介されているサンプルDプロ
 グラムを入手可能
Dプログラムの紹介-特長(1)
●   C言語によく似た言語仕様になっています
     ● 制御構造のサブセット

     ● 拡張されたデータ構造

        ● 文字列型、連想配列、集積体

        ● 組み込み関数、組み込み変数

        ● スレッド固有変数、節固有変数

        ● 構造体、共用体、多次元配列、ポインタも使用可能です

        ● 無効なポインタアクセスはDTrace実行環境が検出

     ● ANSI C演算子

●   カーネルCデータ型への完全なアクセスが可能です
Dプログラムの紹介-特長(2)
●   バッファー機能
    ● トレースアクションがデータを記録

       ● trace(式)

●   集積関数
    ● 集計を行う際に便利です

    ● awk(1)やPerlによる後処理が不要になります

    ● count, sum, avg, min, max, lquantize, quantize

    ● 結果は集積体に保存します

        ●   @name[ keys ] = aggfunc( args );
Dプログラムの紹介-書式
●   複数のプローブ節によって構成
    ● プローブ節の標準形式


    プロバイダ : モジュール : 関数             : 名前
    Provider : Module : Function : Name


         プローブ
         / 述語 /
         {
             アクション文
         }


     ●   awk(1)やPerlに似た形式
書式の詳細、変数、組み込
み関数については次回以降
に紹介します。今日は雰囲
気だけご理解ください。
Dプログラムの紹介-超簡単な例


# dtrace -n BEGIN -n END
dtrace: description 'BEGIN' matched 1 probe
dtrace: description 'END' matched 1 probe
CPU ID    FUNCTION:NAME
    0        1                :BEGIN
^C
    0        2                   :END
#
Dプログラムの紹介-バッファ使用例
/* Hello.d */
BEGIN
{
 trace(“Hello, world”);
}

# dtrace ­s Hello.d
dtrace: script 'Hello.d' matched 1 probe
CPU ID       FUNCTION:NAME
    0       1                  :BEGIN                Hello, world
#
Dプログラムの紹介-書式付き出力(1)
/* trussrw.d */
syscall::read:entry, syscall::write:entry
/pid == $1 /
{
  printf(“%s(%d, %x, %d)”, probefunc, arg0,
arg1, arg2);
}

syscall::read:return, syscall::write:return
/pid == $1 /
{
  printf(“tt = %dn”, arg1 );
}
Dプログラムの紹介-書式付き出力(2)
 # dtrace -q -s trussrw.d 12345

              = 1
 write(2,  0x8089e48,          1)   =
 1
 read(63, 0x8090a38,    1024) = 0
 read(63, 0x8090a38,    1024) = 0
 write(2, 0x8089e48,      52) = 52
 read(0, 0x8089878,       1)    = 1
 write(2, 0x8089e48,      1) = 1
 read(63, 0x8090a38,    1024) = 0
 read(63, 0x8090a38,    1024)^C
 #
Dプログラムの紹介-集積関数 (さわりだけ。。)
@name[keys] = aggfunc(args);
● '@' keys で集積された結果 
● keys カンマで区切られた D の変数のリスト
● aggfunc の例
  ●   count() 引数はなく、呼ばれた回数を返す
  ●   sum() 引数で与えられた値の合計値を返す
  ●   avg()   引数で与えられた値の平均値を返す
  ●   min(expr)/max(expr) 引数で与えられた値のうち最小値/最大値を返す
  ●   lquantize()
           第1引数で与えられた値を、第2, 3, 4 引数で与えられたリニア(線形)の単位にけて回数を
              集計し、結果をグラフで出力
  ●   quantize()
           引数で与えられた値を2の累乗の単位に分けて集計し、結果をグラフで出力
Dプログラムの紹介-集積関数(1)

/* quantize.d */
syscall::write:entry
{
  self->ts = timestamp;
}

syscall::write:return
/self->ts/
{
  @time[execname] = quantize(timestamp - self-
>ts);
  self->ts = 0;
}
Dプログラムの紹介-集積関数(2)
vi
           value  ­­­­­­­­­­­­­ Distribution ­­­­­­­­­­­­­ count
            8192 |                                         0
           16384 |@@@@@@@@@@@@@@@@@@@@                     1
           32768 |@@@@@@@@@@@@@@@@@@@@                     1
           65536 |                                         0
  dtrace
           value  ­­­­­­­­­­­­­ Distribution ­­­­­­­­­­­­­ count
           32768 |                                         0
           65536 |@@@@@@@@@@@@@@@@@@@@@@@@@  1
          131072 |                                         0
Dプログラムの紹介-サンプルツール
●   /usr/dtrace/DTT (Oracle Solaris 11 の場合)
●   /opt/DTT (OpenIndianaの場合)
     ● そのまま解析ツールとして使える便利なツールキット集

●   /usr/demo/dtrace (Solaris 10の場合)
     ● マニュアルに記載されている約80個のDスクリプト

     ● 文法の解説

     ● 各プロバイダの解説

        ● システム調査ツールの例として利用可能

     ● ユーザープロセスの追跡例
Dプログラム実例紹介
~ DTrace本と DTrace Tool Kit(DTT)の
サンプルプログラムからDTrace初心者で
も開発未経験者でも、ちょっと使って見よう
かなと思われそうなDプログラムを実演し
ます~
次は何を学習しましょうか?


    次回にづづく!

Weitere ähnliche Inhalte

Was ist angesagt?

[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章Haruki Eguchi
 
Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門Yasunobu Ikeda
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんYoichi Toyota
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うTatsumi Naganuma
 
怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01nagachika t
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装Ryosuke Okuta
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Takashi J OZAKI
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
人工無脳バトル 1st STEP 回答と解説
人工無脳バトル 1st STEP 回答と解説人工無脳バトル 1st STEP 回答と解説
人工無脳バトル 1st STEP 回答と解説JustSystems Corporation
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半Tetsuya Morimoto
 
Boost.B-tree introduction
Boost.B-tree introductionBoost.B-tree introduction
Boost.B-tree introductionTakayuki Goto
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~Fujio Kojima
 
研究生のためのC++ no.3
研究生のためのC++ no.3研究生のためのC++ no.3
研究生のためのC++ no.3Tomohiro Namba
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 

Was ist angesagt? (19)

[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章
 
Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
機械学習
機械学習機械学習
機械学習
 
20180123 power shell
20180123 power shell20180123 power shell
20180123 power shell
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
 
Enshu8
Enshu8Enshu8
Enshu8
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
人工無脳バトル 1st STEP 回答と解説
人工無脳バトル 1st STEP 回答と解説人工無脳バトル 1st STEP 回答と解説
人工無脳バトル 1st STEP 回答と解説
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
 
Python opt
Python optPython opt
Python opt
 
Boost.B-tree introduction
Boost.B-tree introductionBoost.B-tree introduction
Boost.B-tree introduction
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
 
研究生のためのC++ no.3
研究生のためのC++ no.3研究生のためのC++ no.3
研究生のためのC++ no.3
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 

Ähnlich wie DTrace for biginners part(2)

Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Springanyakichi
 
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用de:code 2017
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPNSaitoNmiri
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案yushin_hirano
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装Shinya Akiba
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
 
R言語勉強会#4.pdf
R言語勉強会#4.pdfR言語勉強会#4.pdf
R言語勉強会#4.pdfTakuya Kubo
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンYuya Unno
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンJubatusOfficial
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例tecopark
 

Ähnlich wie DTrace for biginners part(2) (20)

Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
 
R言語勉強会#4.pdf
R言語勉強会#4.pdfR言語勉強会#4.pdf
R言語勉強会#4.pdf
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例
 

DTrace for biginners part(2)