最近のDTrace

最新のnevadaでDTraceを試しているのですが、いくつかのupdateがされているようです。
最近のprovider
1)fsinfo providerの追加
[root@noto03.jp.iforce.net]$ dtrace -l  | awk '{print $2}' | sort -u
PROVIDER
dtrace
fbt
fpuinfo
fsinfo
io
libCrun1238
lockstat
mib
plockstat1238
proc
profile
sched
sdt
syscall
sysinfo
vminfo


下記のようなコマンドで、writeされるかがわかります。
[root@noto03.jp.iforce.net]$ dtrace -n 'fsinfo:::write{@[pid,probefunc,execname]=count();}'
dtrace: description 'fsinfo:::write' matched 1 probe
\^C

     8653  fop_write                                           mkfile
                           129

詳しくは、dtrace -l -P fsinfoをご覧ください。

2)mod,func,sym,umod, ufunc, usymユーザー関数トレース追加
CPUのuser%が高い場合によく使う方法には、やはりprofileをとる必要があります。
dtrace profile providerにて、profileする方法があります。
下記のように、profileプロバイダーのarg0は、kernelの値、arg1は、user値を取ります。
下記のように、arg1で分岐をとって、user stackをとるのが一般的ですが、
[root@noto03.jp.iforce.net]$ dtrace -n 'profile-997/arg1/{@[ustack(),execname]=count ( ) }'
dtrace: description 'profile-997' matched 1 probe
\^C


              libc.so.1`queue_alloc+0x74
              libc.so.1`queue_lock+0x1c
              libc.so.1`cond_sleep_queue+0x2c
              libc.so.1`cond_wait_queue+0x28
              libc.so.1`cond_wait_common+0x2b4
              libc.so.1`_cond_reltimedwait+0x1c
              libc.so.1`cond_reltimedwait+0x14
              libc.so.1`pthread_cond_reltimedwait_np+0xc
              libdtrace.so.1`dtrace_sleep+0x15c
              dtrace`main+0x1cf4
              dtrace`_start+0x17c
  dtrace                                                            3
[root@noto03.jp.iforce.net]$ dtrace -n 'profile-997/arg0/{@[stack(),execname]=count ( );}'
dtrace: description 'profile-997' matched 1 probe
  sched                                                           109

              unix`disp_getwork+0x8c
              unix`idle+0xd0
              unix`thread_start+0x4
  sched                                                           124

              unix`disp_getwork+0x98
              unix`idle+0xd0
              unix`thread_start+0x4
  sched                                                           131

usymを使うと、何も考えずuser symがトレースできてしまいます
[root@noto03.jp.iforce.net]$ dtrace -n 'profile-997{@[usym ( arg1 ) ,execname]=count ( ) }'
dtrace: description 'profile-997' matched 1 probe
\^C

  0x0                                                 picld
                    1
  libc.so.1`mutex_unlock                              fmd
                    1
  libc_psr.so.1`memcpy                                dtrace
                    1
  libc.so.1`memcpy                                    dtrace
                    1
この次は、system symをみてみましょう。
[root@noto03.jp.iforce.net]$ dtrace -n 'profile-997{@[sym(arg0),execname]=count ( );}'
dtrace: description 'profile-997' matched 1 probe
\^C

  unix`utl0                                           dtrace
                    1
  unix`ktl0                                           sched
                    1
  unix`pp_load_tlb                                    dtrace
                    1
  unix`lock_set                                       sched
                    1
  unix`mutex_enter                                    fsflush
                    1
  unix`syscall_trap                                   dtrace
                    1
  unix`kstat_zone_find                                intrd

あらら、便利ですね。。。
他にもたくさんupdateされているようなので、これからじっくりと。。。
http://www.opensolaris.org/os/community/dtrace/;jsessionid=4EE9337460506B0E6C02BE172B9B7903


Comments:

fsinfoプロバイダーを使ってみましたよ!
なんというか、簡単ですね。
何か設定ファイル(Dスクリプト?)を用意しなければいけないのかと思っていたのですが・・・。
拍子抜けでした。
しかも、これは役に立つproviderですね。

dtraceコマンドを初めて実行しましたが、一行コマンドをコピペするだけで動く、と思ってない人が多いと思いますよ。
俺だけじゃないと思います。
『初めてのDTrace (まずは触ってみなヨー)』みたいな記事があると、みんなの興味を引くと思いますです。

Posted by かどわき on December 28, 2006 at 05:42 AM JST #

かどわきさん、 初コメントありがとうございます。 そうですね。まずは、そんな記事もいいのかもしれませんね。ちょっと時間あるときに書いてみます。fsinfo onlyで。。。

Posted by katohisa on December 30, 2006 at 05:32 AM JST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

This blog is talked about OpenSolaris Community Activity and Bencmarking Test, which are my job.

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today