はじめての DTrace(2)“簡単なことからコツコツと”shojih
 本日の学習目標 DTrace とはどのようなもの? DTrace を使うと何が便利? 何から学習するといいだろうか? Dプログラムの紹介 Dプログラムの実例紹介
Dプログラムの紹介
 と、その前に参考本の紹介 ●  タイトル/著者     ● DTrace: Dynamic Tra-       cing in Oracle Solaris,       Mac OSX and FreeBSD     ● Brendan ...
Dプログラムの紹介-特長(1)●   C言語によく似た言語仕様になっています     ● 制御構造のサブセット     ● 拡張されたデータ構造        ● 文字列型、連想配列、集積体        ● 組み込み関数、組み込み変数    ...
Dプログラムの紹介-特長(2)●   バッファー機能    ● トレースアクションがデータを記録       ● trace(式)●   集積関数    ● 集計を行う際に便利です    ● awk(1)やPerlによる後処理が不要になります ...
Dプログラムの紹介-書式●   複数のプローブ節によって構成    ● プローブ節の標準形式    プロバイダ : モジュール : 関数             : 名前    Provider : Module : Function : Na...
書式の詳細、変数、組み込み関数については次回以降に紹介します。今日は雰囲気だけご理解ください。
Dプログラムの紹介-超簡単な例# dtrace -n BEGIN -n ENDdtrace: description BEGIN matched 1 probedtrace: description END matched 1 probeCPU...
Dプログラムの紹介-バッファ使用例/* Hello.d */BEGIN{ trace(“Hello, world”);}# dtrace ­s Hello.ddtrace: script Hello.d matched 1 probeCPU I...
Dプログラムの紹介-書式付き出力(1)/* trussrw.d */syscall::read:entry, syscall::write:entry/pid == $1 /{  printf(“%s(%d, %x, %d)”, probefu...
Dプログラムの紹介-書式付き出力(2) # dtrace -q -s trussrw.d 12345              = 1 write(2,  0x8089e48,          1)   = 1 read(63, 0x8090...
Dプログラムの紹介-集積関数 (さわりだけ。。)@name[keys] = aggfunc(args);● @ keys で集積された結果 ● keys カンマで区切られた D の変数のリスト● aggfunc の例  ●   count() ...
Dプログラムの紹介-集積関数(1)/* quantize.d */syscall::write:entry{  self->ts = timestamp;}syscall::write:return/self->ts/{  @time[exec...
Dプログラムの紹介-集積関数(2)vi           value  ­­­­­­­­­­­­­ Distribution ­­­­­­­­­­­­­ count            8192 |                     ...
Dプログラムの紹介-サンプルツール●   /usr/dtrace/DTT (Oracle Solaris 11 の場合)●   /opt/DTT (OpenIndianaの場合)     ● そのまま解析ツールとして使える便利なツールキット集●...
Dプログラム実例紹介~ DTrace本と DTrace Tool Kit(DTT)のサンプルプログラムからDTrace初心者でも開発未経験者でも、ちょっと使って見ようかなと思われそうなDプログラムを実演します~
次は何を学習しましょうか?    次回にづづく!
Upcoming SlideShare
Loading in …5
×

DTrace for biginners part(2)

1,075 views

Published on

DTrace for biginners part(2) Japanese lang only

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,075
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

DTrace for biginners part(2)

  1. 1. はじめての DTrace(2)“簡単なことからコツコツと”shojih
  2. 2.  本日の学習目標 DTrace とはどのようなもの? DTrace を使うと何が便利? 何から学習するといいだろうか? Dプログラムの紹介 Dプログラムの実例紹介
  3. 3. Dプログラムの紹介
  4. 4.  と、その前に参考本の紹介 ● タイトル/著者 ● 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プロ グラムを入手可能
  5. 5. Dプログラムの紹介-特長(1)● C言語によく似た言語仕様になっています ● 制御構造のサブセット ● 拡張されたデータ構造 ● 文字列型、連想配列、集積体 ● 組み込み関数、組み込み変数 ● スレッド固有変数、節固有変数 ● 構造体、共用体、多次元配列、ポインタも使用可能です ● 無効なポインタアクセスはDTrace実行環境が検出 ● ANSI C演算子● カーネルCデータ型への完全なアクセスが可能です
  6. 6. Dプログラムの紹介-特長(2)● バッファー機能 ● トレースアクションがデータを記録 ● trace(式)● 集積関数 ● 集計を行う際に便利です ● awk(1)やPerlによる後処理が不要になります ● count, sum, avg, min, max, lquantize, quantize ● 結果は集積体に保存します ● @name[ keys ] = aggfunc( args );
  7. 7. Dプログラムの紹介-書式● 複数のプローブ節によって構成 ● プローブ節の標準形式 プロバイダ : モジュール : 関数 : 名前 Provider : Module : Function : Name プローブ / 述語 / { アクション文 } ● awk(1)やPerlに似た形式
  8. 8. 書式の詳細、変数、組み込み関数については次回以降に紹介します。今日は雰囲気だけご理解ください。
  9. 9. Dプログラムの紹介-超簡単な例# dtrace -n BEGIN -n ENDdtrace: description BEGIN matched 1 probedtrace: description END matched 1 probeCPU ID FUNCTION:NAME 0 1 :BEGIN^C 0 2 :END#
  10. 10. Dプログラムの紹介-バッファ使用例/* Hello.d */BEGIN{ trace(“Hello, world”);}# dtrace ­s Hello.ddtrace: script Hello.d matched 1 probeCPU ID FUNCTION:NAME    0       1                  :BEGIN                Hello, world#
  11. 11. 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 );}
  12. 12. 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 #
  13. 13. Dプログラムの紹介-集積関数 (さわりだけ。。)@name[keys] = aggfunc(args);● @ keys で集積された結果 ● keys カンマで区切られた D の変数のリスト● aggfunc の例 ● count() 引数はなく、呼ばれた回数を返す ● sum() 引数で与えられた値の合計値を返す ● avg() 引数で与えられた値の平均値を返す ● min(expr)/max(expr) 引数で与えられた値のうち最小値/最大値を返す ● lquantize() 第1引数で与えられた値を、第2, 3, 4 引数で与えられたリニア(線形)の単位にけて回数を 集計し、結果をグラフで出力 ● quantize() 引数で与えられた値を2の累乗の単位に分けて集計し、結果をグラフで出力
  14. 14. Dプログラムの紹介-集積関数(1)/* quantize.d */syscall::write:entry{ self->ts = timestamp;}syscall::write:return/self->ts/{ @time[execname] = quantize(timestamp - self->ts); self->ts = 0;}
  15. 15. Dプログラムの紹介-集積関数(2)vi           value  ­­­­­­­­­­­­­ Distribution ­­­­­­­­­­­­­ count            8192 |                                         0           16384 |@@@@@@@@@@@@@@@@@@@@                     1           32768 |@@@@@@@@@@@@@@@@@@@@                     1           65536 |                                         0  dtrace           value  ­­­­­­­­­­­­­ Distribution ­­­­­­­­­­­­­ count           32768 |                                         0           65536 |@@@@@@@@@@@@@@@@@@@@@@@@@  1          131072 |                                         0
  16. 16. Dプログラムの紹介-サンプルツール● /usr/dtrace/DTT (Oracle Solaris 11 の場合)● /opt/DTT (OpenIndianaの場合) ● そのまま解析ツールとして使える便利なツールキット集● /usr/demo/dtrace (Solaris 10の場合) ● マニュアルに記載されている約80個のDスクリプト ● 文法の解説 ● 各プロバイダの解説 ● システム調査ツールの例として利用可能 ● ユーザープロセスの追跡例
  17. 17. Dプログラム実例紹介~ DTrace本と DTrace Tool Kit(DTT)のサンプルプログラムからDTrace初心者でも開発未経験者でも、ちょっと使って見ようかなと思われそうなDプログラムを実演します~
  18. 18. 次は何を学習しましょうか? 次回にづづく!

×