Hisayoshi Kato's weblog at Sun Solution Center

pageicon Wednesday Oct 18, 2006

最近の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 01:42 PM JST #

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

Posted by katohisa on December 30, 2006 at 01:32 PM JST #

Post a Comment:
  • HTML Syntax: NOT allowed


Hisayoshi Kato
I'm Customer Benchmark Engineer at Sun Solution Center.
My interest are Solaris and Oracle.
We're working on Commercial Benchmarking with Sun's customers.
Also I work as OpenSolaris Evangelist in Japan.
Recently my focus is to build OpenSolaris Community in Japan.
Photo By Jim Grisanzio


OpenSolaris.org


Tokyo OpenSolaris User Group


Tokyo Linux User Group


Sun Solution Center



Weblog menu


« November 2009
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

Recent Entries

Search this blog

Links

Sun Solution Center Links

Japan OpenSolaris User Blog Links

Japan OpenSolaris Distro

Visitor

Locations of visitors to this page

Tags