ディスクIOをトレースする(2)

2012/09/29
dtrace のトレース結果と、illumos のソースブラウザをリンクさせるスクリプト。


こんな感じで使う。
Read more ...

mdb写経/UFS

2012/09/28

dcmds

address ::acl

inode を指定して、acl を表示します。

> ffffff01da291d00::acl
            ADDR TAG                 PERM        WHO
ffffff01e2c22628 USER_OBJ              06          0
ffffff01e151de10 GROUP_OBJ              0          3
ffffff01e35968e8 OTHER_OBJ              0          0
ffffff01e0cca3c8 USER                  07      60004

[ address ] ::cg [-v]

cylinder group 構造体の概要を表示します。

> ::cg
 CGX               CG       NDIR     NBFREE     NIFREE     NFFREE
   3      30002d5e000       4298        798          0       8831
  40      300029f2000        190        811       5268        126
  26      30004c7e000        192        435       5444         79
   5      300029f8000       4134        441         58       3210
  49      30002d48000        196        541       4488        430
   7      30002eaa000         99        452       3462        235
  37      300037f2000          0        135       4783        122
  74      30004b96000        194        499       5098        565
  23      30003ec6000          0        225         81        476
  27      30003f78000        186        618       4760         31
  34      300045c8000          0          6         43        215
   6      30002b00000        852          1       1430       2138
 140      30002ac4000          0       1073       5824          0
  66      30004bdc000          0          0          6         53
   8      30002e86000         92        922       1448         40

> 30002d5e000::cg -v
cg 3 (0000030002d5e000)
    time:       2012 May  8 11:00:07
    ndir:       4298
    nbfree:     798
    nifree:     0
    nffree:     8831
    frsum:      114     29      35      32      80      192     982
    used inode map (0000030002d5e1e8):
        0-5823
    free block map (0000030002d5e4c0):
        1107-1111, 1168-1170, 1490-1495, 1616-1619, 3125, 3184, 3194, 3200,
        3207, 3210, 3212, 3224, 3248, 3267, 3275, 3282, 3285, 3295, 3312, 3328,
        3352, 3356, 3364, 3366, 3368, 3373, 3377, 3392, 3416, 3496, 3513, 3588,
    :
    :
        34754-34775, 34792-34815, 34829-41143
    free block positions:
        c0:     (0)      0 0 0 0 0 0 0 0
        c1:     (0)      0 0 0 0 0 0 0 0
        c2:     (0)      0 0 0 0 0 0 0 0
        c3:     (0)      0 0 0 0 0 0 0 0
        c4:     (0)      0 0 0 0 0 0 0 0
        c5:     (0)      0 0 0 0 0 0 0 0
        c6:     (0)      0 0 0 0 0 0 0 0
        c7:     (0)      0 0 0 0 0 0 0 0
        c8:     (0)      0 0 0 0 0 0 0 0
        c9:     (0)      0 0 0 0 0 0 0 0
        c10:    (2)      0 0 0 0 1 1 0 0
        c11:    (261)    31 32 33 33 33 33 33 33
        c12:    (384)    48 48 48 48 48 48 48 48
        c13:    (151)    19 19 19 19 19 19 19 18
        c14:    (0)      0 0 0 0 0 0 0 0
        c15:    (0)      0 0 0 0 0 0 0 0

address ::inode [-v]

inode_t 構造体の概要を表示します。

> 00000300038112c8::inode -v
ADDR                INUMBER T  MODE     SIZE      DEVICE FLAG
00000300038112c8          2 d  0755      200  5500000046 <REF>
  2012 Apr  3 10:50:02
  /export/home

[ address ] ::inode_cache [-d device] [-i inumber]

キャッシュされた inode_t 構造体を表示します。inode のアドレス、inode 番号、および/またはデバイスが指定されている場合は、指定した条件に一致する inode キャッシュを検索します。出力がパイプである場合、アドレス以外は出力しません。

-d device 指定したデバイスでフィルタを行います
-i inumber 指定した inode 番号でフィルタを行います
> ::inode_cache
ADDR                INUMBER          DEVICE CHAIN
00000300038112c8          2      5500000046     2
0000030000359e38          2      550000000a     2
0000030004942750          4      5500000046     4
00000300038115a8          4      550000000a     4
0000030003811438          5      550000000a     5
0000030004d5eff8      65590      550000000a    54
00000300046c08a0      16554      550000000a   170
00000300046c0730      16559      550000000a   175
0000030004055158      65807      550000000a   271
000003000465e018      65842      550000000a   306
    :
    :

> ::inode_cache -i 2
ADDR                INUMBER          DEVICE CHAIN
00000300038112c8          2      5500000046     2
0000030000359e38          2      550000000a     2

::dumphotspare

hot spare pool を表示します。

> ::dumphotspare
Hotspare Pools for set number 0

::dumpnamespace [-s setname]

SVM name space を表示します。

> ::dumpnamespace
------ Name Space for setno 0 ------
hh_header: 30000c9c358
did hh_header: 30000c9d350
hh_names: 30000375910
hh_shared: 30000375920
did hh_names: 300003758e8
did hh_shared: 300003758f8
hh_names:30000375910
  nmn_record: 30000c9c35c
    r_revision:        0
    r_alloc_size:      0
    r_used_size:       0
    r_next_recid:      3
    xr_next_rec:       0
    r_next_key:       13

  nmn_nextp 30001257400
  nmn_record: 30001379080
    r_revision:        0
    r_alloc_size:    512
    r_used_size:     432
    r_next_recid:      0
    xr_next_rec:       0
    r_next_key:        0
    r_name[0] at 30001379098
      n_key:    1
      n_count:  1
      n_minor:  8
      n_drv_key:    1007
      n_dir_key:    1008
      n_namlen: 9
      n_name:   c0t0d0s0 at 300013790b2
    r_name[1] at 300013790bc
      n_key:    2
      n_count:  1
      n_minor:  0
      n_drv_key:    1007
      n_dir_key:    1008
      n_namlen: 9
      n_name:   c0t2d0s0 at 300013790d6
    :
    :

::dumpsetaddr [-s setname]

SVM set addresse を表示します。

> ::dumpsetaddr
0 19025a0


walker

acl

指定された inode_t 構造体のアドレスの、acl コアに対して反復適用します。

> ffffff01da291d00::walk acl |::print struct acl a_perm
a_perm = 0x6
a_perm = 0
a_perm = 0
a_perm = 0x7

cg

指定された cg 構造体のセットに対して反復適用します。

> ::walk cg |::print struct cg cg_cs.cs_ndir
cg_cs.cs_ndir = 0x10ca
cg_cs.cs_ndir = 0x11c
cg_cs.cs_ndir = 0x26
cg_cs.cs_ndir = 0xbe
cg_cs.cs_ndir = 0xc0
cg_cs.cs_ndir = 0x1026
cg_cs.cs_ndir = 0xc4
cg_cs.cs_ndir = 0
cg_cs.cs_ndir = 0
    :
    :

inode_cache

指定された inode_t 構造体のセットに対して反復適用します。

> ::walk inode_cache |::print inode_t i_vnode |::vnode2path
/export/home
/
/export/home/nishioka
/export
/export/home
/usr/dt/lib/libXm.so.4
/var/sadm/install/.pkg.lock.client
/var/sadm/install/.door
    :
    :
Read more ...

システムをクラッシュさせる方法いろいろ

2012/09/27

1. break して sync

# Debugging requested; hardware watchdog suspended.
c)ontinue, s)ync, r)eset? s

panic[cpu6]/thread=2a101299c60: sync initiated

sched: trap type = 0x0
pid=0, pc=0x0, sp=0x0, tstate=0x0, context=0x0
o0-o7: 0, 0, 0, 0, 0, 0, 0, 0
g1-g7: 0, 0, 0, 0, 0, 0, 0

000002a101299350 unix:sync_handler+138 (3000943a000, 0, 10d4c00, 2a101299c60, 1, 183f800)
  %l0-3: 0000000001931400 0000000000000000 0000000001913c00 0000000000000000
  %l4-7: 000000000190d400 000003000943e000 000000000183a400 0000000000000006
000002a101299420 unix:vx_handler+94 (2a101299580, 73, 19d7000, 1, 18482f8, 18481f0)
  %l0-3: 00000000010da1e8 00000000018482f7 0000000000000001 0000000000000001
  %l4-7: 000000000183ac00 0000000001000000 0000000001000000 000000000101b830
000002a1012994d0 unix:promif_enter_mon+a8 (183d000, c, 10da1e8, 10d9e40, 183d000, 10da000)
  %l0-3: 000000000198e4d0 0000000001947000 000000000183ac00 0000000000000001
  %l4-7: 0000000000000016 0000000000000073 00000000010da000 00000000010da000
000002a101299590 unix:kern_cif_handler+24 (2a1012997a8, 0, 10dae58, 1, 183d400, 104efd0)
  %l0-3: 000000000198e4d0 0000000001947000 000000000183ac00 0000000000000001
  %l4-7: 0000000000000016 000000000000000e 0000000000000016 000000000183a400
000002a101299640 unix:client_handler+2c (104e63c, 2a1012997a8, 0, 18a7218, 1919000, 104e63c)
  %l0-3: 000000000198e4d0 0000000001947000 000000000183ac00 0000000000000001
  %l4-7: 0000000000000016 000000000000000e 0000000000000016 000000000183a400
000002a1012996f0 unix:prom_enter_mon+24 (0, 0, 18ef000, 1, 183d400, 10dae58)
  %l0-3: 000000000198e4d0 0000000001947000 0000000000000000 0000000070010580
  %l4-7: 00010084a90e02b4 0000000000000000 00000000010111c0 000000000183a400
000002a1012997c0 unix:debug_enter+10c (a, a, 1, 193f800, 183a400, 0)
  %l0-3: 000000000198e4d0 0000000001947000 0000000000000000 0000000070010580
  %l4-7: 00010084a90e02b4 0000000000000000 00000000010111c0 000000000183a400
000002a101299890 unix:abort_seq_softintr+fc (0, 0, 183a400, 2a101299d40, 2, 1)
  %l0-3: 000000000198e4d0 0000000001947000 0000000000000000 0000000070010580
  %l4-7: 00010084a90e02b4 0000000000000000 00000000010111c0 000000000183a400

syncing file systems... done
dumping to /dev/zvol/dsk/rpool/dump, offset 65536, content: kernel
 0:56 100% done
100% done: 55080 pages dumped, dump succeeded
rebooting...
Resetting...

2. reboot -d, halt -d, uadmin 5 1 コマンド

# halt -d
Apr 23 17:56:59 t2kh1ldom2 halt: initiated by root on /dev/console

panic[cpu2]/thread=30017f9aa80: forced crash dump initiated at user request

000002a102a45930 genunix:kadmin+5a0 (0, 0, 10, 125c400, 5, 0)
  %l0-3: 000000000125c3a0 000000000125c000 0000000000000004 0000000000000004
  %l4-7: 0000000000000208 0000000000000010 0000000000000004 0000000000000004
000002a102a45a00 genunix:uadmin+1c0 (0, 30013d4fd88, 0, 6d7000, ff00, 5)
  %l0-3: 000000000100958c 000002a102a45b80 0000000000000004 00000000010567a4
  %l4-7: 0000000001943350 0000000000000000 0000030017f9aa80 000002a102a45b80

syncing file systems... done
dumping to /dev/zvol/dsk/rpool/dump, offset 65536, content: kernel
 0:26 100% done
100% done: 53440 pages dumped, dump succeeded
Program terminated

# uadmin 5 1

panic[cpu5]/thread=3000b331500: forced crash dump initiated at user request

000002a102345930 genunix:kadmin+5a0 (0, 0, 10, 125c400, 5, 1)
  %l0-3: 000000000125c3a0 000000000125c000 0000000000000004 0000000000000004
  %l4-7: 0000000000000208 0000000000000010 0000000000000004 0000000000000004
000002a102345a00 genunix:uadmin+1c0 (1, 30016a94520, 0, ff34e1f4, ff1c2a40, 5)
  %l0-3: 000000000100958c 000002a102345b80 0000000000000004 00000000010567a4
  %l4-7: 0000000001943350 00000000000114b0 000003000b331500 000002a102345b80

syncing file systems... done
dumping to /dev/zvol/dsk/rpool/dump, offset 65536, content: kernel
 0:26 100% done
100% done: 54367 pages dumped, dump succeeded
rebooting...
Resetting...

3. mdb -K

# mdb -K

Welcome to kmdb
Loaded modules: [ scsi_vhci crypto mac cpc ldc neti ptm ufs unix zfs krtld sppp
hook genunix idm ip logindmux specfs nfs random arp kssl sockfs ]
[2]> $<systemdump
nopanicdebug:   0               =       0x1

panic[cpu2]/thread=30016ce0000: BAD TRAP: type=9 rp=2a1028c96a0 addr=0 mmu_fsr=0

mdb: trap type = 0x9
pid=1078, pc=0x0, sp=0x2a1028c8f41, tstate=0x80001600, context=0x7d7
g1-g7: 0, 18ef000, 81c063e0, 3000947c000, 183ac00, 16, 30016ce0000

000002a1028c93f0 unix:die+a0 (9, 2a1028c96a0, 0, 0, 0, 1841270)
  %l0-3: 0000000000000009 0000000000000009 00000300157bf018 0000000000000000
  %l4-7: 00000000010e0000 0000000000000003 00000000010d5800 000002a1028c94b0
000002a1028c94d0 unix:trap+680 (2a1028c96a0, 30017a2d800, 10000, 0, 30016ce0000, f432)
  %l0-3: 0000000000000000 0000000000000009 00000300157bf018 0000000000000000
  %l4-7: 00000000010e0000 0000000000000003 0000000000000000 0000000000010200
000002a1028c95f0 unix:ktl0+64 (0, 7004e1b8, 1400000, 70095de0, 101e898, 1841270)
  %l0-3: 000003000947c000 0000000000000010 0000000080001600 000000000101ea40
  %l4-7: 00000000010e0000 0000000000000003 0000000000000000 000002a1028c96a0
000002a1028c9740 kmdbmod:kctl_modload_activate+110 (0, 0, 70095f08, 0, 1, 70095c00)
  %l0-3: 00000000010e0230 00000000010e0000 0000000002300000 00000000edd00000
  %l4-7: 00000000010e0000 0000000000000003 0000000001400000 0000000000000800
000002a1028c97f0 kmdb:kdrv_activate+f4 (1001bb350, 0, 7b7afc00, 7b7afd48, fffffffffffffffe, 0)
  %l0-3: 0000000000000001 00000000019a7b30 000000007b7afd18 0000000000000003
  %l4-7: 0000000000000030 0000000000000003 0000030016d0d800 0000000000000800
000002a1028c98b0 genunix:fop_ioctl+c8 (3001afbdb40, db0001, 1001bb350, 202001, 30014438c48, 2a1028c9acc)
  %l0-3: 000003000b1f1768 000002a1028c9b80 0000000000002001 0000000001056628
  %l4-7: 0000000000000003 0000000000000004 0000000000db0001 0000000000000000
000002a1028c9970 genunix:ioctl+16c (4, db0001, 1001bb350, 4, 10005fae8, 23)
  %l0-3: 000003000b1f1768 000002a1028c9b80 0000000000002001 0000000001056628
  %l4-7: 0000000000000003 0000000000000004 0000030016ce0000 000002a1028c9b80

syncing file systems... done
dumping to /dev/zvol/dsk/rpool/dump, offset 65536, content: kernel
 0:30 100% done
100% done: 61680 pages dumped, dump succeeded
rebooting...
Resetting...
Read more ...

mdb写経/ファイル

2012/09/22

dcmds

process ::fd fd-num
指定された proc_t 構造体のプロセスに関連するファイル記述子 fd-num に対応する file_t 構造体のアドレスを出力します。
> 1::pid2proc |::fd 0 |::print file_t f_vnode |::vnode2path
/etc/initpipe

process ::pfiles [-fp]
指定された proc_t 構造体のプロセスがオープンしているファイルに関する情報を表示します。
-p パス名を表示します
-f file_t 構造体に関する情報を表示します
> ffffff00e264b060::pfiles
FD   TYPE            VNODE INFO
   0  CHR ffffff00cc1f6100 /devices/pseudo/mm@0:null
   1  CHR ffffff00cc1f6100 /devices/pseudo/mm@0:null
   2  CHR ffffff00cc1f6100 /devices/pseudo/mm@0:null
   3 DOOR ffffff00d8e1ab00 /system/volatile/name_service_door [door to 'nscd' (proc=ffffff00d98ce060)]
   4  CHR ffffff00dba2de00 /devices/pseudo/log@0:conslog
   5 SOCK ffffff00d9ab7300 socket: AF_INET 127.0.0.1 25
   6 SOCK ffffff00d9ab7400 socket: AF_INET6 0:1:: 25
   7 SOCK ffffff00d9ab0800 socket: AF_INET 127.0.0.1 587
   8  REG ffffff00d9ab0700 /system/volatile/sendmail.pid
> ffffff00e264b060::pfiles -f
            FILE   FD     FLAG            VNODE     OFFSET             CRED  CNT
ffffff00db7a6b98    0     2001 ffffff00cc1f6100          0 ffffff00db094850    1
ffffff00db230ce0    1     2002 ffffff00cc1f6100          0 ffffff00db094850    2
ffffff00db230ce0    2     2002 ffffff00cc1f6100          0 ffffff00db094850    2
ffffff00dac7a8c0    3     2001 ffffff00d8e1ab00          0 ffffff00db094850    1
ffffff00cd2cebf0    4        2 ffffff00dba2de00          0 ffffff00db094850    1
ffffff00db7a6d78    5        3 ffffff00d9ab7300          0 ffffff00db094850    1
ffffff00db7a6968    6        3 ffffff00d9ab7400          0 ffffff00db094850    1
ffffff00cda12000    7        3 ffffff00d9ab0800          0 ffffff00db094850    1
ffffff00db7a64b8    8     2502 ffffff00d9ab0700         33 ffffff00db094850    1

vnode ::whereopen
指定された vnode_t 構造体のアドレスを開いているプロセスの proc_t 構造体のアドレスと、関連するファイル(file_t 構造体) のアドレスを出力します。
> 0000030015f53340::whereopen
file 30016846cb0
30016b25088


walker

file
指定された proc_t 構造体のアドレスを開始点として使用して、指定されたプロセスに関連する開いているファイル (file_t 構造体) のセットに対して反復適用します。
> 60010936588::walk file |::print file_t f_vnode |::vnode2path
/etc/initpipe
/system/contract/process/pbundle
/system/contract/process/template
/system/contract/process/template

file_cache
file_cache について調査します。
> ::walk file_cache |::print file_t f_vnode |::vnode2path
/devices/pseudo/udp@0:udp
/devices/pseudo/tcp@0:tcp
/devices/ebus@1f,464000/env-monitor@3,0:fan_2
/etc/passwd
/devices/pseudo/tl@0:ticotsord
/var/run/name_service_door
/devices/pseudo/mm@0:null
/devices/ebus@1f,464000/env-monitor@3,0:mb
/var/run/name_service_door
/devices/pseudo/mm@0:null
/devices/pseudo/sysevent@0:sysevent
/devices/pseudo/clone@0:bge
/var/run/name_service_door
    :
    :
Read more ...

mdb写経/タスク待ち行列とエラー待ち行列

2012/09/22

dcmds

[ address ] ::errorq
指定されたエラー待ち行列に関連する情報の要約を表示します。アドレスを指定しないと、すべてのシステムエラー待ち行列に関連する情報が表示されます。各待ち行列のアドレス、名前、待ち行列の長さ、データ要素サイズ、および、さまざまな待ち行列統計が表示されます。
> ::errorq
ADDR        NAME             S V N  ACCEPT    DROP     LOG
300024fc540 errh_queue       +           0       0       0
300024fc7c0 ce_queue         +           0       0       0
300024fca40 ue_queue         + !         0       0       0
300024fd440 fm_ereport_queue + ! *       0       0       0
> ::errorq -v
ADDR        NAME             S V N KSTAT   QLEN   SIZE IPL             FUNC
300024fc540 errh_queue       +       |      128     48   1 errh_drain
                                     |
                                     +->   DISPATCHED 0
                                              DROPPED 0
                                               LOGGED 0
                                             RESERVED 0
                                         RESERVE FAIL 0
                                            COMMITTED 0
                                          COMMIT FAIL 0
                                            CANCELLED 0

    :
    :

address ::taskq [-atT] [-m min_maxq] [-n name]
taskq を表示します。
-a taskqs のアクティブなスレッドのみを表示します。
-t 各 taskq 内のアクティブなスレッド・スタックを表示します。
-T 各 taskq 内のスレッド・スタックをすべて表示します。
-m min_maxq動的 taskqs と、少なくとも MAXQ が min_maxq 以上の taskqs のみを表示します。
-n namename の名前が含まれている taskqs のみを示します。

> ::taskq
ADDR             NAME                             ACT/THDS Q'ED  MAXQ INST
ffffff00c8d79ab8 mdi_taskq                          0/   8    0     0    -
ffffff00c8d79988 vhci_taskq                         0/   1    0     0    -
ffffff00c8d79858 vhci_update_pathstates             0/   8    0     0    -
ffffff00cad6fd28 zio_null_issue                     0/   1    0     4    -
ffffff00cad6fe58 zio_null_intr                      0/   1    0     4    -
ffffff00ca097010 zio_read_issue                     0/   8    0     1    -
ffffff00ca097140 zio_read_intr                      0/   4    0     9    -
ffffff00ca097270 zio_write_issue                    0/   4    0   103    -
ffffff00ca0973a0 zio_write_issue_high               0/   5    0     2    -
ffffff00ca0974d0 zio_write_intr                     0/   8    0     2    -
ffffff00ca097600 zio_write_intr_high                0/   5    0     1    -
ffffff00ca097730 zio_free_issue                     0/ 100    0     0    -
ffffff00ca097860 zio_free_intr                      0/   1    0     0    -
    :
    :
ffffff00da422160 bridge_bridge                      0/   1    0     0    0
ffffff00c8d79398 callout_taskq                      0/   2    0     3    0
ffffff00cb98bd30 callout_taskq                      0/   2    0     3    1
ffffff00cb98bc00 callout_taskq                      0/   2    0     3    2
ffffff00cb98bad0 callout_taskq                      0/   2    0     3    3
ffffff00da422620 fcoe_mac                           2/   3    2     2    0
ffffff00da422750 fcoe_nexus_enum_tq                 0/   1    0     0    0
ffffff00da4224f0 FCOE_WORKER_TASKQ                  4/   4    4     4    0
    :
    :
> ffffff00c8d79ab8::taskq -T
ADDR             NAME                             ACT/THDS Q'ED  MAXQ INST
ffffff00c8d79ab8 mdi_taskq                          0/   8    0     0    -
    THREAD           STATE    SOBJ                COUNT
    ffffff0002035c20 SLEEP    CV                      8
    ffffff00020c5c20 SLEEP    CV                      -
    ffffff00020b3c20 SLEEP    CV                      -
    ffffff0002065c20 SLEEP    CV                      -
    ffffff0002059c20 SLEEP    CV                      -
    ffffff000204dc20 SLEEP    CV                      -
    ffffff0002041c20 SLEEP    CV                      -
    ffffff000203bc20 SLEEP    CV                      -
                     swtch+0x13c
                     cv_wait+0x60
                     taskq_thread_wait+0x86
                     taskq_thread+0x2a4
                     thread_start+8

address ::taskq_entry
タスク待ち行列サブシステムは、カーネル内のさまざまなクライアントに汎用の非同期タスクスケジューリング機能を提供します。指定された taskq_entry 構造体の内容を出力します。


walker

errorq
システムエラー待ち行列のリストを調べて、各エラー待ち行列のアドレスを返します。
> ::walk errorq |::print errorq_t eq_name
eq_name = [ "errh_queue" ]
eq_name = [ "ce_queue" ]
eq_name = [ "ue_queue" ]
eq_name = [ "fm_ereport_queue" ]

errorq_data
指定されたエラー待ち行列のアドレスを使用して、保留中の各エラーイベントデータバッファーのアドレスを返します。

taskq_cache
taskq_cache cache リストを調べて、taskq 構造体のアドレスを返します。
> ::walk taskq_cache |::print taskq_t tq_name
tq_name = [ "ibmf_saa_event_taskq" ]
tq_name = [ "hsched_task_1563092794" ]
tq_name = [ "lofi_taskq_1" ]
tq_name = [ "stp_1_0_679" ]
tq_name = [ "audit_taskq" ]
tq_name = [ "stp_2_0_487" ]
tq_name = [ "zil_clean" ]
    :
    :

taskq_entry
指定された taskq 構造体のアドレスを使用して、taskq_entry 構造体のリストに対して反復適用します。

taskq_thread
指定された taskq 構造体のアドレスを使用して、スレッドに対して反復適用します。
> 300062b15e0::walk taskq_thread |::threadlist
            ADDR             PROC              LWP CMD/LWPID
000002a1005f7c60          18a62c0                0 tq:system_taskq
000002a100f77c60          18a62c0                0 tq:system_taskq
000002a1023c5c60          18a62c0                0 tq:system_taskq
000002a101abbc60          18a62c0                0 tq:system_taskq
000002a1005ffc60          18a62c0                0 tq:system_taskq
000002a10013fc60          18a62c0                0 tq:system_taskq
000002a1005d7c60          18a62c0                0 tq:system_taskq
000002a10076fc60          18a62c0                0 tq:system_taskq
000002a102a2dc60          18a62c0                0 tq:system_taskq
000002a101787c60          18a62c0                0 tq:system_taskq
000002a1003a7c60          18a62c0                0 tq:system_taskq
000002a1002efc60          18a62c0                0 tq:system_taskq
Read more ...

mdb写経/ゾーンおよびリソース管理

2012/09/21

dcmds

address ::rctl [handle]
指定した rctl_t 構造体の定義を表示します。
> 0000030014dbe3f8::rctl
0000030014dbe3f8          8 : process.max-sem-nsems
        (cur) 0x200               privileged    flags=<DENY>
              0x7fff                  system    flags=<DENY,MAX>

[ address ] ::rctl_dict
システム全体のデフォルト rctl の定義を表示します。
> ::rctl_dict
ID NAME                                    ADDR    TYPE GLOBAL_FLAGS
12 process.max-port-events     0000030005cb6380 process 0x20100000
11 process.max-msg-messages    0000030005cb63d0 process 0x20100000
10 process.max-msg-qbytes      0000030005cb6420 process 0x20400000
 9 process.max-sem-ops         0000030005cb6470 process 0x20100000
 8 process.max-sem-nsems       0000030005cb64c0 process 0x20100000
 7 process.max-address-space   0000030005cb6510 process 0x62400000
 6 process.max-file-descriptor 0000030005cb6560 process 0x60100000
 5 process.max-core-size       0000030005cb65b0 process 0x62400000
 4 process.max-stack-size      0000030005cb6600 process 0x62400000
 3 process.max-data-size       0000030005cb6650 process 0x62400000
 2 process.max-file-size       0000030005cb66a0 process 0x68400000
 1 process.max-cpu-time        0000030005cb66f0 process 0x55200000
39 task.max-cpu-time           00000300062b9aa8    task 0x15a00000
38 task.max-processes          00000300062b9af8    task 0x00100000
37 task.max-lwps               00000300062b9b48    task 0x00100000
36 project.max-contracts       00000300062b9b98 project 0xa0100000
35 project.max-locked-memory   00000300062b9be8 project 0xa0400000
34 project.max-port-ids        00000300062b9c38 project 0xa0100000
33 project.max-shm-memory      00000300062b9c88 project 0xa0400000
32 project.max-shm-ids         00000300062b9cd8 project 0xa0100000
31 project.max-msg-ids         00000300062b9d28 project 0xa0100000
30 project.max-sem-ids         00000300062b9d78 project 0xa0100000
29 project.max-crypto-memory   00000300062b9dc8 project 0xa0400000
28 project.max-tasks           00000300062b9e18 project 0x80100000
27 project.max-processes       00000300062b9e68 project 0x80100000
26 project.max-lwps            00000300062b9eb8 project 0x80100000
25 project.cpu-cap             00000300062b9f08 project 0xa3180000
24 project.cpu-shares          00000300062b9f58 project 0x92180000
23 zone.max-lofi               0000030005cb6010    zone 0xa0100000
22 zone.max-swap               0000030005cb6060    zone 0xa0400000
21 zone.max-locked-memory      0000030005cb60b0    zone 0xa0400000
20 zone.max-shm-memory         0000030005cb6100    zone 0xa0400000
19 zone.max-shm-ids            0000030005cb6150    zone 0xa0100000
18 zone.max-sem-ids            0000030005cb61a0    zone 0xa0100000
17 zone.max-msg-ids            0000030005cb61f0    zone 0xa0100000
16 zone.max-processes          0000030005cb6240    zone 0x80100000
15 zone.max-lwps               0000030005cb6290    zone 0x80100000
14 zone.cpu-cap                0000030005cb62e0    zone 0xa3180000
13 zone.cpu-shares             0000030005cb6330    zone 0x92180000

address ::rctl_list [handle]
指定したプロセス(proc_t アドレス)の rctl の定義を表示します。
> 00000000018a62c0::rctl_list
00000300062bfc88          8 : process.max-sem-nsems
        (cur) 0x200               privileged    flags=<DENY>
              0x7fff                  system    flags=<DENY,MAX>
00000300062bfb38          1 : process.max-cpu-time
        (cur) 0xffffffffffffffff      system    flags=<MAX>
00000300062bfcb8          9 : process.max-sem-ops
        (cur) 0x200               privileged    flags=<DENY>
              0x7fffffff              system    flags=<DENY,MAX>
00000300062bfb68          2 : process.max-file-size
        (cur) 0x7fffffffffffffff      system    flags=<DENY,MAX>
00000300062bfce8         10 : process.max-msg-qbytes
        (cur) 0x10000             privileged    flags=<DENY>
              0xffffffffffffffff      system    flags=<DENY,MAX>
00000300062bfb98          3 : process.max-data-size
        (cur) 0xffffffffffffffff      system    flags=<DENY,MAX>
    :
    :

::zone
kernel zone を表示します。
> ::zone
            ADDR     ID STATUS        NAME                 PATH
fffffffffbcfc3c0      0 running       global               /

address ::zsd [-v] [zsd_key]
選択した zone の zone-specific-data entries を表示します。
> ::zsd -v
ZONE                              KEY            VALUE    FLAGS
global                             13 ffffff00db095fa8        0
                         Create CB:   0
                         Shutdown CB: autofs_zone_shutdown
                         Destroy CB:  autofs_zone_destructor
                                    3 ffffff00c8a92778        4
                         Create CB:   evch_zoneinit
                         Shutdown CB: 0
                         Destroy CB:  evch_zonefree
                                   10 ffffff00c8e3f150        4
                         Create CB:   core_init_zone
                         Shutdown CB: 0
                         Destroy CB:  core_free_zone
                                    1 fffffffffbcfeb60        4
                         Create CB:   log_zoneinit
                         Shutdown CB: 0
                         Destroy CB:  log_zonefree
                                    e ffffff00c923ec38        0
                         Create CB:   0
                         Shutdown CB: 0
                         Destroy CB:  0
                                    2 ffffff00c77bbdc0        4
                         Create CB:   netstack_zone_create
                         Shutdown CB: netstack_zone_shutdown
                         Destroy CB:  netstack_zone_destroy
                                    4 0000000000000000        0
    :
    :


walker

rctl_cache
rctl_cache の全ての rctl_t 構造体に対して反復適用します。
> ::walk rctl_cache |::print rctl_t rc_dict_entry
rc_dict_entry = 0x30005cb6650
rc_dict_entry = 0x30005cb6600
rc_dict_entry = 0x30005cb66a0
rc_dict_entry = 0x30005cb6650
rc_dict_entry = 0x30005cb6380
rc_dict_entry = 0x30005cb6470
    :
    :

rctl_dict_list
rctl_lists の rctl_dict_entry_t 構造体に対して反復適用します。
> ::walk rctl_dict_list |::print rctl_dict_entry_t rcd_name
rcd_name = 0x10dd5e8 "process.max-port-events"
rcd_name = 0x10dd5b8 "process.max-msg-messages"
rcd_name = 0x10dd588 "process.max-msg-qbytes"
rcd_name = 0x10dd560 "process.max-sem-ops"
rcd_name = 0x10dd530 "process.max-sem-nsems"
rcd_name = 0x10dd510 "process.max-address-space"
rcd_name = 0x10dd4f0 "process.max-file-descriptor"
    :
    :

rctl_val
指定した rctl_t の、rctl_val entries (rctl_val_t 構造体) に対して復適用します。
> ::walk rctl_cache |::walk rctl_val |::print rctl_val_t rcv_flagaction
rcv_flagaction = 0x80000002
rcv_flagaction = 0x80000002
rcv_flagaction = 0x80000003
rcv_flagaction = 0x80000002
rcv_flagaction = 0x80000002
rcv_flagaction = 0x80000002
rcv_flagaction = 0x2
rcv_flagaction = 0x80000002
rcv_flagaction = 0x2
    :
    :

rctl_val_cache
rctl_cache の全ての rctl_val_t 構造体に対して復適用します。
> ::walk rctl_val_cache |::print rctl_val_t rcv_flagaction
rcv_flagaction = 0x80000002
rcv_flagaction = 0x2
rcv_flagaction = 0x80000002
rcv_flagaction = 0x80000000
rcv_flagaction = 0x2
rcv_flagaction = 0x2
rcv_flagaction = 0x80000002
    :
    :

zone
kernel zones のリスト(zone 構造体)に対して反復適用します。
> ::walk zone |::print zone_t
{
    zone_name = 0x12b88d0 "global"
    zone_nodename = utsname+0x101 "t2kh1ldom2"
    zone_domain = srpc_domain ""
    zone_hostid = 0xffffffff
    zone_lock = {
        _opaque = [ 0 ]
    }
    zone_linkage = {
        list_next = zone_active+0x10
        list_prev = zone_active+0x10
    }
    zone_id = 0
    zone_ref = 0x3e
    zone_cred_ref = 0x5a
    zone_subsys_ref = [ 0, 0, 0, 0x1, 0x2c, 0, 0x1, 0x1 ]
    zone_ref_list = {
        list_size = 0x18
        list_offset = 0x8
        list_head = {
            list_next = 0x30017088968
            list_prev = 0x300073cfea8
        }
    }
    zone_rootvp = 0x30007095a40
    zone_rootpath = 0x12b88d8 "/"
    zone_flags = 0
    zone_status = 4 (ZONE_IS_RUNNING)
    :
    :

zsd
zone 構造体のアドレスを指定して、zsd_entry 構造体に対して反復適用します。
> 198e4d0::walk zsd |::print struct zsd_entry zsd_shutdown
zsd_shutdown = autofs_zone_shutdown
zsd_shutdown = 0
zsd_shutdown = svc_zoneshutdown
zsd_shutdown = 0
zsd_shutdown = 0
zsd_shutdown = rfs_zone_shutdown
zsd_shutdown = 0
    :
    :
Read more ...

mdb写経/ZFS

2012/09/21

dcmds

::arc
ARC の各種変数を表示します。
> ::arc
hits                      =    327944
misses                    =     11177
demand_data_hits          =    282145
demand_data_misses        =      3369
demand_metadata_hits      =     37056
demand_metadata_misses    =      2574
prefetch_data_hits        =       575
prefetch_data_misses      =      1102
prefetch_metadata_hits    =      8168
prefetch_metadata_misses  =      4132
    :
    :
::blkptr
blkptr_t 構造体の情報を表示します。
> ffffff01cf2a0f40::blkptr
DVA[0]=<0:19000:200:STD:1>
DVA[1]=<0:c0019400:200:STD:1>
DVA[2]=<0:18000d000:200:STD:1>
[L0 OBJSET] FLETCHER_4 LZJB LE contiguous unique unencrypted 3-copy
size=800L/200P birth=464L/464P fill=30
cksum=e9908a92c:5dd54a339d5:1330b65631095:2a9d07de82954b

address ::dbuf
dmu_buf_impl_t 構造体の情報を表示します。
> 0xffffff010c400010::dbuf
        addr object lvl blkid holds os
ffffff010c400010      ce6 0     bonus  1 rpool/ROOT/solaris/var

address ::dbuf_stats
dbuf の状態を表示します。
> 0xffffff010c400010::dbuf_stats
hash table has 262144 buckets, 6870 dbufs (avg 38 buckets/dbuf)

hash chain length       number of buckets
0                       255324
1                       6770
2                       50

hash chain depth        number of dbufs
0 or more               6870    100%
1 or more               50      0%

::dbufs [-O objset_t*] [-n objset_name | "mos"] [-o object | "mdn"] [-l level] [-b blkid | "bonus"]
指定した条件に一致する dmu_buf_impl_t 構造体を表示します。
> ::dbufs
0xffffff010c400010
0xffffff010c200030
0xffffff00e2400038
0xffffff010c4000f0
0xffffff010c200110
0xffffff00e2400118
0xffffff010c4001d0
0xffffff010c2001f0
0xffffff00e24001f8
0xffffff010c4002b0
0xffffff010c2002d0
0xffffff00e24002d8
    :
    :

[ address ] ::spa [-cv]
spa_t 構造体(Storage Pool Allocator)のサマリーを表示します。
> ::spa -v
ADDR                 STATE NAME
ffffff00cad4b580    ACTIVE rpool

    ADDR             STATE     AUX          DESCRIPTION
    ffffff00c77f93c0 HEALTHY   -            root
    ffffff00c77f8d40 HEALTHY   -              /dev/dsk/c3d0s0

address ::spa_config
spa_t 構造体の設定を表示します。
> ffffff00cad4b580::spa_config
version=0000000000000021
name='rpool'
state=0000000000000000
txg=000000000002c13c
pool_guid=d34b02944c39643d
timestamp=000000004fa41e62
hostid=00000000008556f7
hostname=''
vdev_children=0000000000000001
vdev_tree
    type='root'
    id=0000000000000000
    guid=d34b02944c39643d
    create_txg=0000000000000004
    children[0]
        type='disk'
        id=0000000000000000
        guid=e3f5e0f9898d7298
        path='/dev/dsk/c3d0s0'
        devid='id1,cmdk@AQEMU_HARDDISK=QM00001/a'
        phys_path='/pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0:a'
        whole_disk=0000000000000000
        metaslab_array=000000000000001b
        metaslab_shift=000000000000001e
        ashift=0000000000000009
        asize=0000001ffd980000
        is_log=0000000000000000
        create_txg=0000000000000004

address ::spa_space [-b]
spa_t 構造体の設定を表示します。
> 00000300073ce040::spa_space
dd_space_towrite = 0M 0M 0M 0M
dd_phys.dd_used_bytes = 14966M
dd_phys.dd_compressed_bytes = 14867M
dd_phys.dd_uncompressed_bytes = 14867M
ms_allocmap = 0M 0M 0M 0M
ms_freemap = 0M 0M 0M 0M
ms_map = 1418M
last synced avail = 54729M
current syncing avail = 54729M

address ::spa_vdevs
spa_t 構造体の vdev の概要を表示します。
> 000006001093c000::spa_vdevs
ADDR             STATE     AUX          DESCRIPTION                      
000006001464c640 HEALTHY   -            root
000006001464c000 HEALTHY   -              mirror
00000600147b1300 HEALTHY   -                /dev/dsk/c1t2d0s0
00000600147b1940 HEALTHY   -                /dev/dsk/c1t3d0s0

address ::vdev [-re]
vdev_t 構造体の概要を表示します。
> 00000600147b1940::vdev
ADDR             STATE     AUX          DESCRIPTION                      
00000600147b1940 HEALTHY   -            /dev/dsk/c1t3d0s0

address ::zfs_blkstats [-v]
指定した spa_t 構造体の、block type の状態を、直近の scrub を使用して表示します。
> 6001093c000::zfs_blkstats
Dittoed blocks on same vdev: 820

Blocks  LSIZE   PSIZE   ASIZE     avg    comp   %Total  Type
     1    16K      1K   3.00K   3.00K   16.00     0.00  object directory
     3  1.50K   1.50K   4.50K   1.50K    1.00     0.00  object array
     1    16K     16K   48.0K   48.0K    1.00     0.00  packed nvlist
   156   672K    180K    540K   3.46K    3.73     0.01  SPA space map
    75  1.17M    295K    604K   8.05K    4.06     0.02  DMU dnode
     1     2K     512      1K      1K    4.00     0.00  DMU objset
     4  2.50K      2K   6.00K   1.50K    1.25     0.00  DSL directory child map
     3  1.50K   1.50K   4.50K   1.50K    1.00     0.00  DSL dataset snap map
     5  33.5K   5.00K   15.0K   3.00K    6.70     0.00  DSL props
 22.3K  2.58G   2.58G   2.58G    119K    1.00    99.93  ZFS plain file
   367   730K    237K    473K   1.28K    3.08     0.01  ZFS directory
     1    512     512      1K      1K    1.00     0.00  ZFS master node
     1  6.00K     512      1K      1K   12.00     0.00  ZFS delete queue
     1     1K     512   1.50K   1.50K    2.00     0.00  DSL dataset next clones
     2     2K      1K      2K      1K    2.00     0.00  ZFS user/group used
 22.9K  2.58G   2.58G   2.58G    116K    1.00    100.0  Total

[ address ] ::zfs_dbgmsg [-v]
zfs debug log を表示します。
> ::zfs_dbgmsg
spa=rpool async request task=1
spa=rpool async request task=256
internal property set pool:rpool txg:180556 primarycache=1 dataset = 66
command: zfs set primarycache=metadata rpool/swap
> ::zfs_dbgmsg -v
2012 May  5 03:22:07 spa=rpool async request task=1
ffffff00cacb5c80 is allocated from kmem_alloc_64:
            ADDR          BUFADDR        TIMESTAMP           THREAD
                            CACHE          LASTLOG         CONTENTS
ffffff00cacc0200 ffffff00cacb5c80     b84707006dab fffffffffbc36de0
                 ffffff00c50299c8 ffffff00c572a200 ffffff00c6c5d1e0
                 kmem_cache_alloc_debug+0x2b1
                 kmem_cache_alloc+0x14c
                 kmem_alloc+0xd9
                 zfs_dbgmsg+0xc0
                 spa_async_request+0x32
                 spa_load_impl+0xb65
                 spa_load+0x122
                 spa_load_impl+0xdda
                 spa_load+0x122
                 spa_load_best+0xb2
                 spa_open_common+0xea
                 spa_open+0x23
                 dsl_dir_open_spa+0x96
                 dsl_dataset_hold+0x44
                 dsl_dataset_own+0x35

    :
    :

::zfs_params
zfs の設定可能なパラメータを表示します。
> ::zfs_params
arc_reduce_dnlc_percent = 0x3
zfs_arc_max = 0x0
zfs_arc_min = 0x0
arc_shrink_shift = 0x5
zfs_mdcomp_disable = 0x0
zfs_prefetch_disable = 0x0
zfetch_max_streams = 0x8
zfetch_min_sec_reap = 0x2
zfetch_block_cap = 0x100
zfetch_array_rd_sz = 0x100000
zfs_default_bs = 0x9
zfs_default_ibs = 0xe
metaslab_aliquot = 0x80000
mdb: variable reference_tracking_enable not found: unknown symbol name
mdb: variable reference_history not found: unknown symbol name
spa_max_replication_override = 0x3
spa_mode_global = 0x3
zfs_flags = 0x0
    :
    :

[ address ] ::zio
zio_t 構造体の要約を表示します。
> 0xffffff01cda3f9c8::zio
ADDRESS                                  TYPE  STAGE            WAITER
ffffff01cda3f9c8                         NULL  OPEN             -

::zio_state
システム上の全て、または特定の pool の zio_t 構造体を表示します。
> ::zio_state
ADDRESS                                  TYPE  STAGE            WAITER
ffffff01d3211590                         NULL  OPEN             -
ffffff01cda3f9c8                         NULL  OPEN             -


walker

metaslab
spa_t 構造体のアドレスを指定して、metaslab_t 構造体のセットに対して反復適用します。
> 6001093c000::walk metaslab |::print metaslab_t ms_smo.smo_object
ms_smo.smo_object = 0x1a
ms_smo.smo_object = 0x22
ms_smo.smo_object = 0x25
ms_smo.smo_object = 0x28
ms_smo.smo_object = 0x29
    :
    :

spa
spa_t 構造体のセットに対して反復適用します。
> ::walk spa |::print spa_t spa_name
spa_name = [ "crashtest" ]
spa_name = [ "rpool" ]
spa_name = [ "tank" ]

zfs_znode_cache
zfs_znode_cache キャッシュに対して反復適用します。
> ::walk zfs_znode_cache |::print znode_t z_vnode |::vnode2path
/usr/lib/fm/fmd/plugins/disk-monitor.so
/usr/lib/locale/ja_JP.UTF-8/LC_MESSAGES/SUNW_OST_OSCMD.mo
/usr/platform/SUNW,A70/sbin
/dev
/etc/device.tab
/platform/sun4u/kernel/sys/sparcv9
/etc/security/policy.conf
/usr/sbin/syslogd
    :
    :

zio
zio_t 構造体のセットに対して反復適用します。
> ::walk zio |::print zio_t io_type
io_type = 0 (ZIO_TYPE_NULL)
io_type = 0 (ZIO_TYPE_NULL)
Read more ...

mdb写経/スレッド、プロセス、タスク、およびプロジェクト

2012/09/21

dcmds

thread ::findstack [-v]
指定されたカーネルスレッド (kthread_t 構造体の仮想アドレスによって識別される) に関連するスタックトレースを出力します。複数の異なるアルゴリズムを使用して該当するスタックバックトレースを見つけます。オプションのコマンド文字列を指定すると、ドット変数はスタックフレームの最先頭のフレームポインタアドレスにリセットされ、指定されたコマンドはコマンド行に入力された場合と同じように評価されます。デフォルトのコマンド文字列は、「<.$C0」です。すなわち、フレームポインタを含め、引数を付けずにスタックトレースを出力します。
> 000002a100067c60::findstack
stack pointer for thread 2a100067c60: 2a1000670c1
[ 000002a1000670c1 cv_wait+0x3c() ]
  000002a100067171 scsi_hba_barrier_daemon+0x80()
  000002a100067251 thread_start+4()

::pgrep [-x] [-n|-o] regexp
名前が regexp 正規表現パターンに適合するプロセスのプロセス情報を表示します。pgrep(1) コマンドに似ています。すべてのプロセスを対象にしたパターンマッチングに使用されます。
-n オプションを指定すると、パターンに適合する最新のプロセスだけが表示されます。
-o オプションを指定すると、パターンに適合するもっとも古いプロセスだけが表示されます。
-x オプションを指定すると、検索パターンと正確に一致する名前を持つプロセスだけが表示されます。
kmdb(1) では、::pgrep に使用する regexp は、英数字のプレーンテキスト文字列でなければなりません。
> ::pgrep ssh
S    PID   PPID   PGID    SID    UID      FLAGS             ADDR NAME
R    613      1    612    612      0 0x42000000 ffffff00cf527000 sshd
R   1206    613    612    612      0 0x42010000 ffffff00cf4f1058 sshd
R   1207   1206    612    612      0 0x42010000 ffffff00cf6e6050 sshd

pid ::pid2proc
指定されたプロセス ID に対応する proc_t アドレスを出力します。MDB のデフォルトは 16 進数であることを思い出してください。したがって、pgrep(1) または ps(1) を使用して取得した 10 進数のプロセス ID には接頭辞 0t を付ける必要があります。
> 265::pid2proc
ffffff00cf527000

process ::pmap [-q]
指定されたプロセスアドレスに該当するプロセスのメモリーマップを出力します。pmap(1) に似た書式を使用して出力を表示します。-q オプションを指定すると、出力が省略形式で表示されるので、処理時間が短くなります。
> ffffff00ce5e2008::pmap
             SEG             BASE     SIZE      RES PATH
ffffff00c98f2818 0000000008044000      16k      16k [ anon ]
ffffff00ca636178 0000000008050000      44k      44k /usr/sbin/cron
ffffff00ca649a08 000000000806b000      12k      12k /usr/sbin/cron
ffffff00ca62a720 000000000806e000      60k      44k [ anon ]
ffffff00c94d0658 00000000fe820000     128k     128k /lib/libbsm.so.1
ffffff00ca6cb408 00000000fe840000      36k      36k /lib/libbsm.so.1
ffffff00c98f21b8 00000000fe849000       4k       0k [ anon ]
ffffff00c98f8808 00000000fe9d0000      56k      52k /usr/lib/locale/common/metho
ffffff00ca6ad200 00000000fe9ed000       8k       8k /usr/lib/locale/common/metho
ffffff00ce58d850 00000000fe9f0000    1288k     104k /usr/lib/locale/ja_JP.UTF-8/
ffffff00ce5906c8 00000000feb42000       4k       4k /usr/lib/locale/ja_JP.UTF-8/
ffffff00ca649d08 00000000feda0000      20k      20k /lib/libcontract.so.1
ffffff00ca65a618 00000000fedb5000       4k       4k /lib/libcontract.so.1
ffffff00c9504de0 00000000fedc0000       4k       4k /system/volatile/tzsyncrpaqF
ffffff00ca6cb108 00000000fedd0000       4k       4k [ anon ]
    :
    :

::project
kernel project を表示します。
> ::project
            ADDR PROJID ZONEID REFCNT
ffffff00c8a94e90      0      0    692
ffffff00cfbb4840      3      0      5
ffffff010a9f9360      1      0      4
    :
    :

[address] ::ps [- fltTP]
指定されたプロセスまたはすべてのアクティブなシステムプロセスに関連する情報の要約を  ps(1) に似た形式で出力します。
-f 完全なコマンド名と初期引数が出力されます。
-l 各プロセスに関連する LWP が出力されます。
-t 各プロセスの LWP に関連するカーネルスレッドが出力されます。
-T 各プロセスに関連するタスク ID が出力されます。
- 各プロセスに関連するプロジェクト ID が出力されます。
> ffffff00c7e80030::ps -fltTP
S    PID   PPID   PGID    SID  TASK  PROJ    UID      FLAGS             ADDR NAME
R      7      0      0      0     0     0      0 0x00020001 ffffff00c7e80030 intrd
        T  0xffffff00021fcc20 <TS_SLEEP>
        L  0xffffff00c6c450c0 ID: 1

::ptree
それぞれの親プロセスから派生した子プロセスを含むプロセスツリーを出力します。ptree(1) に似た書式を使用して出力を表示します。
> ::ptree
fffffffffbc35e30  sched
     ffffff00c7e7f038  vmtasks
     ffffff00c7e80030  intrd
     ffffff00c7e84028  fsflush
     ffffff00c7e86020  pageout
     ffffff00c7e89018  init
          ffffff00cf51c008  sendmail
    :
    :

::task
アクティブなカーネルタスク構造体とそれに関連する ID 番号および属性のリストを出力します。プロセスタスク ID の詳細については、settaskid(2) を参照してください。
> ::task
            ADDR TASKID PROJID ZONEID REFCNT      FLAGS
ffffff00d6338010     98      0      0      1 0x00000000
ffffff00d63380c8     96      0      0      1 0x00000000
ffffff00d6338180     95      0      0      1 0x00000000
ffffff00d6338238     94      0      0      1 0x00000000
ffffff00d63382f0     93      0      0      1 0x00000000
ffffff00d63383a8    112      0      0      1 0x00000000
ffffff00d6338460     91      0      0      1 0x00000000
ffffff00d6338518     89      0      0      1 0x00000000
ffffff00d63385d0     88      0      0      1 0x00000000
ffffff00d6338688     82      0      0      2 0x00000000
ffffff00d6338740     80      0      0      2 0x00000000
ffffff00d63387f8     75      0      0      4 0x00000000
ffffff00d63388b0     81      0      0      1 0x00000000
ffffff00d6338968     68      0      0      1 0x00000000
ffffff00d6338a20     65      0      0      1 0x00000000
ffffff00dc3d6b98    107      0      0      1 0x00000000
ffffff00d6338b90     61      0      0      1 0x00000000
ffffff00dc3d6c50    109      0      0      1 0x00000000
    :
    :

[address] ::thread [-bdfimps]
指定された kthread_t 構造体のプロパティーを表示します。kthread_t 構造体のアドレスを指定しないと、すべてのカーネルスレッドのプロパティーが表示されます。
-b オプションを指定すると、スレッドのターンスタイルとブロッキング同期オブジェクトに関連する情報が表示されます。
-d スレッドのディスパッチャーの優先順位、バインディング、および最終ディスパッチ時刻が表示されます。
-f 状態が TS_FREE であるスレッドが出力から削除されます。
-i スレッドの状態、フラグ、優先順位、および割り込み情報が表示されます(デフォルト)。
-m ほかのすべての出力オプションがマージされて、単一の出力行に表示されます。
-p スレッドのプロセス、LWP、および資格ポインタが表示されます。
-s スレッドのシグナル待ち行列とシグナルの保留と保持を示すマスクが表示されます。
> ::thread
            ADDR    STATE  FLG PFLG SFLG   PRI  EPRI PIL             INTR
fffffffffbc36de0 stopped  10000  100 3e03    96     0   0              n/a
ffffff0002005c20 onproc   10008    0    3    -1     0   0              n/a
ffffff000200bc20 sleep    10008    0    3    60     0   0              n/a
ffffff0002011c20 sleep    10008    0    3    60     0   0              n/a
ffffff0002017c20 sleep    10008    0    3    60     0   0              n/a
    :
    :
ffffff0002071c20 free     10009    0    3     0     0   0              n/a
ffffff0002077c20 free     10009    0    3     0     0   0              n/a
ffffff000207dc20 free     10009    0    3     0     0   0              n/a
ffffff0002083c20 free     10009    0    3     0     0   0              n/a
ffffff0002089c20 free     10009    0    3     0     0   0              n/a
ffffff000208fc20 free     10009    0    3     0     0   0              n/a
ffffff0002095c20 free     10009    0    3   109     0  10 ffffff00020a1c20
ffffff000209bc20 free     10009    0    3   109     0  10 ffffff00020a1c20
ffffff00020a1c20 free     10009    0    3   105     0   6 ffffff00cd0d80c0
    :
    :

[address] ::threadlist [-t] [-v [count]]
スレッドと、関連するスタックトレースを表示します。
-v スタックトレースを含む詳細な情報を表示します
-t taskq に属するスレッドをスキップします。
count count 以上の引数を表示しません(デフォルト値は 0)
> ::threadlist
            ADDR             PROC              LWP CMD/LWPID
fffffffffbc36de0 fffffffffbc35e30 fffffffffbc3f470 sched/1
ffffff0002005c20 fffffffffbc35e30                0 idle()
ffffff000200bc20 fffffffffbc35e30                0 thread_reaper()
ffffff0002011c20 fffffffffbc35e30                0 tq:kmem_move_taskq
ffffff0002017c20 fffffffffbc35e30                0 tq:pseudo_nexus_enum_tq
ffffff000201dc20 fffffffffbc35e30                0 scsi_hba_barrier_daemon()
ffffff0002023c20 fffffffffbc35e30                0 scsi_lunchg1_daemon()
ffffff0002029c20 fffffffffbc35e30                0 scsi_lunchg2_daemon()
ffffff000202fc20 fffffffffbc35e30                0 tq:scsi_vhci_nexus_enum_tq
ffffff00020c5c20 fffffffffbc35e30                0 tq:mdi_taskq
ffffff00020b3c20 fffffffffbc35e30                0 tq:mdi_taskq
    :
    :
> fffffffffbc36de0::threadlist -v
            ADDR             PROC              LWP CLS PRI            WCHAN
fffffffffbc36de0 fffffffffbc35e30 fffffffffbc3f470   0  96                0
  PC: _resume_from_idle+0xf2    CMD: sched
  stack pointer for thread fffffffffbc36de0: fffffffffbc7f970
  [ fffffffffbc7f970 _resume_from_idle+0xf2() ]
    swtch+0x13c()
    sched+0x451()
    main+0x513()
    _locore_start+0x90()


walker

proc
アクティブなプロセス構造体(proc_t)に対して反復適用します。
> ::walk proc |::print proc_t p_user.u_psargs
p_user.u_psargs = [ "sched" ]
p_user.u_psargs = [ "nfsd_kproc" ]
p_user.u_psargs = [ "lockd_kproc" ]
p_user.u_psargs = [ "vmtasks" ]
p_user.u_psargs = [ "intrd" ]
p_user.u_psargs = [ "fsflush" ]
p_user.u_psargs = [ "pageout" ]
p_user.u_psargs = [ "/usr/sbin/init" ]
p_user.u_psargs = [ "/usr/lib/sendmail -bl -q15m" ]
    :
    :

task
指定されたタスクポインタを使用して、指定されたタスクのメンバーのプロセス構造体(proc_t)のリストに反復適用します。
> 00000300062b7368::walk task |::ps
S    PID   PPID   PGID    SID    UID      FLAGS             ADDR NAME
R    393    388    387    387      0 0x4a004000 00000300165040b8 hald-addon-cpufr
R    388    387    387    387      0 0x4a004000 000003001584d008 hald-runner
R    387      1    387    387      0 0x42000000 00000300140fcfe8 hald

thread
カーネルスレッド (kthread_t) 構造体のセットに対して反復適用します。大域 walk が起動されると、すべてのカーネルスレッドがこの walker によって戻されます。プロセス構造体(proc_t) のアドレスを開始点として使用することによって局所 walk が起動されると、指定したプロセスに関連するスレッドのセットが戻されます。
> ::walk thread |::print kthread_t t_procp |::ps
S    PID   PPID   PGID    SID    UID      FLAGS             ADDR NAME
R      0      0      0      0      0 0x00000001 00000000018a62c0 sched
R      0      0      0      0      0 0x00000001 00000000018a62c0 sched
R      0      0      0      0      0 0x00000001 00000000018a62c0 sched
R      0      0      0      0      0 0x00000001 00000000018a62c0 sched
R      0      0      0      0      0 0x00000001 00000000018a62c0 sched
R      0      0      0      0      0 0x00000001 00000000018a62c0 sched
    :
    :
Read more ...

mdb写経/その他のファイルシステム

2012/09/21

dcmds

[ address ] ::contract
contract を表示します。
> ::contract
            ADDR       ID     TYPE    STATE            OWNER           REGENT
000003000f943bc0        1  process    owned          18a62c0                0
000003001099dc40        3  process    owned      3000f94af80      3000f943bc0
0000030010efa680        4  process    owned      30010ee8f98      3001099dc40
00000300112b7780        5  process    owned      30010ee8f98      3001099dc40
00000300119088c0        7  process    owned      30010ee8f98      3001099dc40
000003001099c380        9  process    owned      30010ee8f98      3001099dc40
0000030013911240       11  process    owned      30010ee8f98      3001099dc40
0000030013910740       13  process    owned      30010ee8f98      3001099dc40
0000030013259200       18  process    owned      30010ee8f98      3001099dc40
0000030015acae80       21  process    owned      30010ee8f98      3001099dc40
0000030014338040       26  process    owned      30010ee8f98      3001099dc40
00000300158643c0       27  process    owned      30010ee8f98      3001099dc40
000003001d072c40       31  process    owned      30010ee8f98      3001099dc40
000003001d0726c0       33  process    owned      30010ee8f98      3001099dc40
000003001d013780       35  process    owned      30010ee8f98      3001099dc40
000003001d0129c0       37  process    owned      30010ee8f98      3001099dc40
0000030015caa740       39  process     dead                0                0
000003001d012c80       40  process    owned      30010ee8f98      3001099dc40
    :
    :

address ::ctevent
contract イベントを表示します。
> 00000300112b7780::ctevent
        ADDR       ID     CONTRACT   TYPE         DATA        GDATA FLAGS
 300112b7780        0  3001099c408      0  300139112b1  3001099dcc8

address ::ctid
ID を contract ポインタに変換します。
> 9::ctid
3001099c380

::fsinfo
マウントされているファイルシステムのテーブルを表示します。これには、vfs_t 構造体アドレス、ops ベクトル、および各ファイルシステムのマウントポイントが含まれます。
> ::fsinfo
            VFSP FS              MOUNT
fffffffffbcd7710 zfs             /
fffffffffbcd7530 devfs           /devices
fffffffffbcd7620 dev             /dev
ffffff00c7643e18 ctfs            /system/contract
ffffff00c7643d28 proc            /proc
ffffff00c7643c38 mntfs           /etc/mnttab
ffffff00c7643b48 tmpfs           /system/volatile
ffffff00c7643a58 objfs           /system/object
ffffff00c7643968 sharefs         /etc/dfs/sharetab
    :
    :

::lminfo
ロックマネージャーによって登録されたアクティブネットワークロックを持つ vnode のテーブルを表示します。各 vnode に対応するパス名が示されます。
> ::lminfo
ADDR             TP FLAG    PID COMM             VNODE            PATH
ffffff00c8d99880 WR 0001    136 syseventd        ffffff00ca4a8180 /system/volatile/sy
ffffff00c8d93a40 WR 0001   1000 nmz              ffffff00d2892280 /var/ocm/ccr/log/sc
ffffff00c8d90b40 WR 0001   1110 sendmail         ffffff00d3213280 /var/spool/clientmq
ffffff00c8d2cd80 WR 0001    181 vbiosd           ffffff00ca7d9300 /system/volatile/vb
ffffff00c8d9bc00 WR 0001    212 devfsadm         ffffff00cdaad600 /etc/dev/.devfsadm_
ffffff00c8dc7940 WR 0001    531 automountd       ffffff00cf4c2a80 /system/volatile/fi
ffffff00c8dc2380 WR 0001   1112 sendmail         ffffff00d31fac00 /system/volatile/se

[ address ] ::lnode
指定された lnode_t 構造体、またはカーネルのアクティブな lnode_t 構造体のテーブルを出力します。
> ::lnode
           LNODE            VNODE           REALVP
ffffff00c9bb1f88 ffffff00c9c1ce40 ffffff00c9bcc980

address ::lnode2dev
指定された lnode_t 構造体に対応する配下のループバックマウントファイルシステムの dev_t (vfs_dev) を出力します。
> ffffff00c9bb1f88::lnode2dev
lnode ffffff00c9bb1f88 vfs_dev 0000007c00010002

address ::lnode2rdev
指定された lnode_t 構造体に対応する配下のループバックマウントファイルシステムの dev_t (li_rdev) を出力します。

address ::snode [-d device] [-m major]
ロックマネージャーによって登録されたアクティブネットワークロックを持つ vnode のテーブルを表示します。各 vnode に対応するパス名が示されます。
> ::snode
            ADDR            VNODE  COUNT              DEV FLAG
ffffff00e0d67640 ffffff00e28d1400      0       f700000009 <SELFCLONE>
ffffff00e0d67590 ffffff00e28d1300      1       f700000009 <NEEDCLOSE,DIPSET,SIZEVALID>
ffffff00cc0120c0 ffffff00cef17f00      0       ea00000016 <SELFCLONE>
ffffff00cc012010 ffffff00cef17e00      1       ea00000016 <DIPSET,SIZEVALID>
ffffff00cc012e80 ffffff00cc1f6a00      0                0 <UPD>
ffffff00cc012dd0 ffffff00cc1f6900      3                0 <NEEDCLOSE,DIPSET,SIZEVALID>
ffffff00e0d674e0 ffffff00e28d1100      0       f70000000a <SELFCLONE>
ffffff00e0d67430 ffffff00e28d1000      1       f70000000a <NEEDCLOSE,DIPSET,SIZEVALID>
ffffff00cdb1fc78 ffffff00cf434400      0       ea00000018 <SELFCLONE>
ffffff00cdb1fbc8 ffffff00cda1ba00      1       ea00000018 <DIPSET,SIZEVALID>
ffffff00cdb1ff38 ffffff00cef0aa00      0      10200000000 <>
ffffff00cdb1fe88 ffffff00cef0a900      0      10200000000 <DIPSET,SIZEVALID>
    :
    :

address ::vnode2path [-F]
指定された vnode アドレスに対応するパス名を表示します。
> ffffff00e28d1400::vnode2path
/devices/pseudo/sysevent@0:sysevent


walker

buf
アクティブなブロック I/O 転送構造体 (buf_t 構造体) のセットに対して反復適用します。buf 構造体は、<sys/buf.h> で定義されます (詳細については、buf(9S) のマニュアルページを参照)。

contract
全ての contract 構造体を調べます。
> ::walk contract |::print contract_t ct_id
ct_id = 0x1
ct_id = 0x3
ct_id = 0x4
ct_id = 0x5
ct_id = 0x7
ct_id = 0x9
ct_id = 0xb
    :
    :

lnode
カーネルのアクティブな lnode_t 構造体を調べます。
> ::walk lnode |::print lnode_t lo_vnode |::vnode2path
/platform/sun4u-us3/lib/libc_psr.so.1
/platform/sun4u-us3/lib/sparcv9/libc_psr.so.1

snode
snode 構造体のセットに対して反復適用します。
> ::walk snode |::print struct snode s_vnode |::vnode2path
/devices/ebus@1f,464000/env-monitor@3,0:adt7462
/devices/pseudo/zfs@0:zfs
/devices/pseudo/cn@0:console
/devices/pseudo/tl@0:ticots
/devices/ebus@1f,464000/env-monitor@3,0:cpu_0
/devices/ebus@1f,464000/env-monitor@3,0:mb
/devices/ebus@1f,464000/env-monitor@3,0:lm95221
/devices/ebus@1f,464000/env-monitor@3,0:fire
    :
    :
Read more ...

mdb写経/NFS

2012/09/21

dcmds

address ::nfs_expvis
exportinfo visible list の内容を表示します(visible list があるのは pseudo ノードだけ)。
> 0x60017e6ddc0::nfs_expvis
exportinfo->exp_visible = 60017e6ddc0

/Install/Images/sc_3.2_u2
    addr:      60017e6ddc0   exp : 0    ref: 1
    vp  :      60014a34b00   ino : 13 (0xd)
    seci:      6001679c300   nsec: 1
    Security Flavors :
        sys       ref: 1        flag: 0x0 ()

address ::nfs_expinfo
exportinfo 構造体の内容を表示します。
> 60017d50e40::nfs_expinfo

/Install/Images (pseudo)    60017d50e40
    rtvp: 600138becc0         ref : 1         flag: 0x4080 (EX_PSEUDO,EX_ROOT) VROOT
    dvp : 0                   anon: 0         logb: 0
    seci: 6001679c180         nsec: 1         fsid: (0x19a8ce 0x49514308)
    Security Flavors :
        sys       ref: 5        flag: 0x1 (M_RO)
    PseudoFS Nodes:
        /Install/Images/sc_3.2_u2
            addr:      60017e6ddc0   exp : 0    ref: 1
            vp  :      60014a34b00   ino : 13 (0xd)
            seci:      6001679c300   nsec: 1
            Security Flavors :
                sys       ref: 1        flag: 0x0 ()
        /Install/Images/sc_3.2_u2/mnt
            addr:      60017db9b80   exp : 1    ref: 1
            vp  :      600124d6980   ino : 36 (0x24)
            seci:                0   nsec: 0
    :
    :

[ address ] ::nfs_exptable
exportinfo テーブルの内容を表示します。
> ::nfs_exptable

/ (pseudo)    30015afcfc0
    rtvp: 30007095a40         ref : 1         flag: 0x4080 (EX_PSEUDO,EX_ROOT) VROOT
    dvp : 0                   anon: 0         logb: 0
    seci: 30015b12a80         nsec: 1         fsid: (0xd198852e 0x53d64408)
    Security Flavors :
        sys       ref: 1        flag: 0x1 (M_RO)
    PseudoFS Nodes:
        /install
            addr:      3001632d000   exp : 0    ref: 1
            vp  :      3001572f840   ino : 90701 (0x1624d)
            seci:                0   nsec: 0

/install    300176c43c0
    rtvp: 3001593c000         ref : 1         flag: 0x4000 (EX_ROOT) VROOT
    dvp : 30007095a40         anon: 0         logb: 0
    seci: 3000820b8c0         nsec: 1         fsid: (0xcc3e9a5f 0xca41b308)
    Security Flavors :
        sys       ref: 1        flag: 0x21 (M_RO,M_EXP)

::nfs_nstree [-v]
nfs pseudo namespace tree の内容を表示します。-v オプションを指定した場合、exportinfo と exp_visible 構造体の内容を表示します。
> ::nfs_nstree


TREENODE:
/
  addr:             30014446e38
  tree_parent:      0
  tree_child_first: 30014446280
  tree_sibling:     0
  tree_exi:         30015afcfc0
  tree_vis:         0


    TREENODE:
    /install
      addr:             30014446280
      tree_parent:      30014446e38
      tree_child_first: 0
      tree_sibling:     0
      tree_exi:         300176c43c0
      tree_vis:         3001632d000
> ::nfs_nstree -v


TREENODE:
/

  Dump treenode:

  addr:             30014446e38
  tree_parent:      0
  tree_child_first: 30014446280
  tree_sibling:     0
  tree_exi:         30015afcfc0
  tree_vis:         0

  Dump exportinfo:

  / (pseudo)    30015afcfc0
      rtvp: 30007095a40         ref : 1         flag: 0x4080 (EX_PSEUDO,EX_ROOT) VROOT
      dvp : 0                   anon: 0         logb: 0
      seci: 30015b12a80         nsec: 1         fsid: (0xd198852e 0x53d64408)
      Security Flavors :
          sys       ref: 1        flag: 0x1 (M_RO)
      PseudoFS Nodes:
          /install
              addr:      3001632d000   exp : 0    ref: 1
              vp  :      3001572f840   ino : 90701 (0x1624d)
              seci:                0   nsec: 0

    :
    :

[ address ] ::nfs_mntinfo [-v]
mntinfo_t 構造体の情報を表示します。
> ::nfs_mntinfo
NFS Version=2
   mi_flags: MI_HARD,MI_INT,MI_NOAC,MI_DYNAMIC
     mount point: /vol
     mount from : b100-2:vold(pid750)
> ::nfs_mntinfo -v
NFS Version=2
   mi_flags: MI_HARD,MI_INT,MI_NOAC,MI_DYNAMIC
     mount point: /vol
     mount from : b100-2:vold(pid750)
mi_zone=18bd768
mi_curread=8192, mi_curwrite=512, mi_retrans=5, mi_timeo=350
mi_acregmin=3000000000, mi_acregmax=60000000000, mi_acdirmin=30000000000, mi_acdirmax=60000000000
Server list: 300045b9968
     b100-2.vold

Current Server: 300045b9968      b100-2.vold

Total: Server Non-responses = 0 Server Failovers = 0
IO statistics for this mount
        No. of bytes read               0
        No. of read operations          0
        No. of bytes written            0
        No. of write operations         0
Async Request queue: max_threads = 8 active_threads = 0
     number requests queued:
     READ_AHEAD = 0    PUTPAGE = 0     PAGEIO = 0    READDIR = 0     COMMIT = 0   INACTIVE = 0
address ::nfs_servinfo [-v]
servinfo_t 構造体の情報を表示します。
> 300045b9968::nfs_servinfo
     b100-2.vold
> 300045b9968::nfs_servinfo -v
secdata ptr = 30004271560
address = 1/loopback/-/b100-2.vold
hostname = for volume management (/vol)
filehandle = 0000000000000001000000010000000000000000000000000000000000000000

::nfs_stat [-csb][-234][-anr] | $[count]
NFS statistics を表示します。以下の様な nfsstat コマンドと似たスイッチです。
::nfs_stat [-csb][-234][-anr]
::nfs_stat -c -> Client Statistics.
::nfs_stat -s -> Server Statistics.
::nfs_stat -b -> Callback Stats. (V4 only)
::nfs_stat -r -> RPC Statistics.
::nfs_stat -n -> NFS Statistics.
::nfs_stat -a -> ACL Statistics.
::nfs_stat -2 -> Version 2.
::nfs_stat -3 -> Version 3.
::nfs_stat -4 -> Version 4.
-csb のどちらも指定されていない場合は、3つ全てが想定されます。
-arn のどちらも指定されていない場合は、3つ全てが想定されます。
-234 のどちらも指定されていない場合は、3つ全てが想定されます。
-b は、-234 のフラグとは独立して動作します。

次の一般的な(非NFS固有の)形式がサポートされています。
<kstat addr>::nfs_stat $[count] -> kstat_named 配列の`count ' 要素内のステータスを表示します。
> ::nfs_stat -b
CALLBACK STATISTICS:
delegations     cb_getattr      cb_recall       cb_null
0               0               0               0
cb_dispatch     delegaccept_r   delegaccept_rw  delegreturn
0               0               0               0
callbacks       claim_cur       claim_cur_ok    recall_trunc
0               0               0               0
recall_failed   return_limit_wr return_limit_ad deleg_recover
0               0               0               0
cb_illegal
0
> ::nfs_stat -a4
CALLBACK STATISTICS:
delegations     cb_getattr      cb_recall       cb_null
0               0               0               0
cb_dispatch     delegaccept_r   delegaccept_rw  delegreturn
0               0               0               0
callbacks       claim_cur       claim_cur_ok    recall_trunc
0               0               0               0
recall_failed   return_limit_wr return_limit_ad deleg_recover
0               0               0               0
cb_illegal
0

SERVER STATISTICS:
ACL Statistics:
Version 4:
(0 calls)
null            getacl          setacl
0 0%            0 0%            0 0%

CLIENT STATISTICS:
ACL Statistics:
Version 4:
(0 calls)
null            getacl          setacl
0 0%            0 0%            0 0%

::nfs_vfs [-v]
全ての nfs vfs 構造体を表示します。
> ::nfs_vfs
vfs_t->300000a5840     , data = 30003cca6c0     , ops = 1872f78
     mount point: /vol
     mount from : b100-2:vold(pid750)
> ::nfs_vfs -v
vfs_t->300000a5840     , data = 30003cca6c0     , ops = 1872f78
     mount point: /vol
     mount from : b100-2:vold(pid750)
      vfs_flags:
     mount-time: 2012 May 16 09:01:56
     mount opts: remount, ro, rw, suid, nosuid, devices, nodevices, setuid, nosetuid, nbmand, nonbmand, exec, noexec, ignore, noquota
NFS Version=2
   mi_flags: MI_HARD,MI_INT,MI_NOAC,MI_DYNAMIC
mi_zone=18bd768
mi_curread=8192, mi_curwrite=512, mi_retrans=5, mi_timeo=350
mi_acregmin=3000000000, mi_acregmax=60000000000, mi_acdirmin=30000000000, mi_acdirmax=60000000000
Server list: 300045b9968
     b100-2.vold

Current Server: 300045b9968      b100-2.vold

Total: Server Non-responses = 0 Server Failovers = 0
IO statistics for this mount
        No. of bytes read               0
        No. of read operations          0
        No. of bytes written            0
        No. of write operations         0
Async Request queue: max_threads = 8 active_threads = 0
     number requests queued:
     READ_AHEAD = 0    PUTPAGE = 0     PAGEIO = 0    READDIR = 0     COMMIT = 0   INACTIVE = 0


walker

nfs_expinfo
exportinfo table を調査して、exportinfo 構造体のセットに対して反復適用します。
> ::walk nfs_expinfo |::print exportinfo_t exi_export.ex_path
exi_export.ex_path = 0x300162dea98 "/ (pseudo)"
exi_export.ex_path = 0x3001745d6d0 "/install"

nfs_expinfo_path
exportinfo path hash table を調査して、exportdata 構造体のセットに対して反復適用します。
> ::walk nfs_expinfo_path |::print exportdata_t
{
    ex_version = 0x2
    ex_path = 0x3001745d6d0 "/install"
    ex_pathlen = 0x9
    ex_flags = 0x4000
    ex_anon = 0
    ex_seccnt = 0x1
    ex_secinfo = 0x3000820b8c0
    ex_index = 0
    ex_log_buffer = 0
    ex_log_bufferlen = 0
    ex_tag = 0
    ex_taglen = 0
}
{
    ex_version = 0
    ex_path = 0x300162dea98 "/ (pseudo)"
    ex_pathlen = 0xa
    ex_flags = 0x4080
    ex_anon = 0
    ex_seccnt = 0x1
    ex_secinfo = 0x30015b12a80
    ex_index = 0
    ex_log_buffer = 0
    ex_log_bufferlen = 0
    ex_tag = 0
    ex_taglen = 0
}

nfs_expvis
exp_visible 構造体のセットに対して反復適用します。
> 60017e6ddc0::walk nfs_expvis |::print exp_visible_t vis_next
vis_next = 0x60017db9b80
vis_next = 0x60017f6ef40
vis_next = 0x60017f6ebc0
vis_next = 0x60018458f00
vis_next = 0x6001859e140
vis_next = 0x60017f6ec40
vis_next = 0x60018459380
vis_next = 0x60017db9a80
vis_next = 0x60018545880
vis_next = 0x60017f6eb40
vis_next = 0

nfs_mnt
NFS-mounted vfs 構造体を調べて(vfs_data)、mntinfo 構造体のセットに対して反復適用します。
> ::walk nfs_mnt |::print mntinfo_t
{
    mi_lock = {
        _opaque = [ 0 ]
    }
    mi_servers = 0x600167b5058
    mi_curr_serv = 0x600167b5058
    mi_failover_cv = {
        _opaque = 0
    }
    mi_readers = 0
    mi_vfsp = 0x60013263e00
    mi_type = 2 (VDIR)
    mi_flags = 0x55
    mi_tsize = 0x2000
    mi_stsize = 0x200
    mi_timeo = 0x15e
    mi_retrans = 0x5
    :
    :

nfs_mnt
全ての NFS-mounted vfs 構造体のセットに対して反復適用します。
> ::walk nfs_vfs |::print vfs_t
{
    vfs_next = 0x600127cea80
    vfs_prev = 0x60013942100
    vfs_op = vfssw+0x3b8
    vfs_vnodecovered = 0x60015e4d640
    vfs_flag = 0x2000
    vfs_bsize = 0x2000
    vfs_fstype = 0x7
    vfs_fsid = {
        val = [ 0x5ec0001, 0x7 ]
    }
    vfs_data = 0x60017a36680
    vfs_dev = 0x17b00000001
    vfs_bcount = 0
    vfs_list = zfs_ace_fuid_get_mask
    vfs_hash = 0
    vfs_reflock = {
        _opaque = [ 0, zfs_ace_fuid_set_flags ]
    }
    vfs_count = 0x10
    vfs_mntopts = {
        mo_count = 0x11
        mo_list = 0x60015db64c0
    }
    vfs_resource = 0x60017b245e0
    vfs_mntpt = 0x60017abefb0
    vfs_mtime = 2012 May  7 08:20:23
    vfs_implp = 0x60017a9c040
    vfs_zone = zone0
    vfs_zone_next = 0x600127cea80
    vfs_zone_prev = 0x60013942100
}

nfs_mnt
全ての NFS-mounted vfs 構造体のセットに対して反復適用します。
> ::walk nfs_vfs |::print vfs_t
{
    vfs_next = 0x600127cea80
    vfs_prev = 0x60013942100
    vfs_op = vfssw+0x3b8
    vfs_vnodecovered = 0x60015e4d640
    vfs_flag = 0x2000
    vfs_bsize = 0x2000
    vfs_fstype = 0x7
    vfs_fsid = {
        val = [ 0x5ec0001, 0x7 ]
    }
    vfs_data = 0x60017a36680
    vfs_dev = 0x17b00000001
    vfs_bcount = 0
    vfs_list = zfs_ace_fuid_get_mask
    vfs_hash = 0
    vfs_reflock = {
        _opaque = [ 0, zfs_ace_fuid_set_flags ]
    }
    vfs_count = 0x10
    vfs_mntopts = {
        mo_count = 0x11
        mo_list = 0x60015db64c0
    }
    vfs_resource = 0x60017b245e0
    vfs_mntpt = 0x60017abefb0
    vfs_mtime = 2012 May  7 08:20:23
    vfs_implp = 0x60017a9c040
    vfs_zone = zone0
    vfs_zone_next = 0x600127cea80
    vfs_zone_prev = 0x60013942100
}
Read more ...

mdb写経/カーネル実行時リンカー

2012/09/21

dcmds

::ctfinfo
モジュールの CTF(Compact ANSI-C Type Format) に関する情報を表示します。
> ::ctfinfo
MODULE                                  CTFDATA CTFSIZE
unix                           ffffff00c7bd5000 87877
genunix                        ffffff00c8398000 430688
specfs                         ffffff00c7bea920 538
fifofs                         ffffff00c7bea748 470
dtrace                         ffffff00cf7b3000 4271
devfs                          ffffff00c7beab3c 493
dev                            ffffff00c8401260 3319
dls                            ffffff00c8957000 31605
mac                            ffffff00c84ce000 50572
procfs                         ffffff00c865c000 4383

    :
    :

::modctl
指定された modctl、またはカーネルのアクティブな modctl 構造体のテーブルを表示します。
> ::modctl
          MODCTL           MODULE   BITS FLAGS REF FILE
         183a578          1861960    pli 0x01   0 /platform/sun4u/kernel/sparcv9/unix
         18660e8          1866190    pli 0x01   0 genunix
         18bb9b8          18bba68    pli 0x01   0 misc/platmod
         18bc0d8          18bc190    pli 0x01   0 cpu/SUNW,UltraSPARC-IIe
     300000afea8                0        0x00   0 misc/cl_bootstrap
     300000afe08      300000b7e40     li 0x00   3 fs/specfs
     300000afcc8      300000b7cc0     li 0x00   2 fs/fifofs
     300000afc28      30002e24dc0     li 0x00   1 drv/dtrace
     300000afd68      300000b7b40     li 0x00   0 fs/devfs
     300000afb88                0        0x00   0 misc/swapgeneric
     300000afae8                0        0x00   0 sys/lbl_edition
     300000afa48      300000b7840     li 0x00   1 sched/TS
     300000af9a8      300000b76c0     li 0x00   0 sched/TS_DPTBL
     300000af908      300000b7540     li 0x00   1 fs/ufs
     300000af868      300000b73c0     li 0x00   1 misc/fssnap_if
     300000af728      300000b7240     li 0x00   0 drv/rootnex
     300000af688      300000b70c0     li 0x00   0 drv/options
     300000af5e8      300000b6f40     li 0x00   0 drv/sad
     300000af548      300000b6dc0     li 0x00   0 drv/pseudo
     300000af4a8      300000b6c40     li 0x00   0 drv/clone
     300000af408      300000b6ac0     li 0x00   0 drv/scsi_vhci
     300000af368      300000b6940     li 0x00   5 misc/scsi
    :
    :
address ::modent
mod_hash_t 構造体の mod_hash_entry についての情報を表示します。
> 3000a056a00::print -a mod_hash_t
3000a056a00 {
    3000a056a00 mh_contents = {
        3000a056a00 _opaque = [ 0 ]
    }
    3000a056a08 mh_name = 0x300143f3378 "dls_link_t_30014455d98_hash"
    3000a056a10 mh_sleep = 0
    3000a056a18 mh_nchains = 0x43
    3000a056a20 mh_kdtor = mod_hash_null_keydtor
    3000a056a28 mh_vdtor = mod_hash_null_valdtor
    3000a056a30 mh_keycmp = mod_hash_idkey_cmp
    3000a056a38 mh_hashalg = mod_hash_byid
    3000a056a40 mh_hashalg_data = 0x47
    3000a056a48 mh_next = 0x3000bd68198
    3000a056a50 mh_stat = {
        3000a056a50 mhs_hit = 0xa89a
        3000a056a58 mhs_miss = 0xc
        3000a056a60 mhs_coll = 0
        3000a056a68 mhs_nelems = 0x4
        3000a056a70 mhs_nomem = 0
    }
    3000a056a78 mh_entries = [ 0x300024e65d8 ]
}
> 0x300024e65d8::modent
            ADDR              VAL              KEY
     300024e65d8      3000c481540          86dd000

[ address ] ::modhash [-ceht] [-k key] [-v val] [-i index]
mod_hash_t データベースの情報を表示します。アドレスが提供されていない場合、システム内のすべての登録されたハッシュの要約が表示されます。アドレスを指定した場合、詳細な情報を表示します。
-t ハッシュタイプを表示します
-e ハッシュのエレメントを表示します
-k key,
-v value,
-i index
指定した条件のエレメントのみを表示します
-h アドレスの代わりにハッシュインデックスを表示します
> ::modhash
            ADDR CHAINS ELEMS MAXLEN MAXIDX NAME
ffffff00e29a3580     1f     0      0      0 bpf_dev_tab
ffffff00d12fd900     43     0      0      0 iptun_hash
ffffff00dc93dc00     40     0      0      0 aggr_grp_hash
ffffff00dc93f640     40     0      0      0 vnic_hash
ffffff00cc3f44c0     43     3      1      0 dls_link_t_ffffff00ce079e68_hash
ffffff00cf2806c0     40     1      1      a softmac_hash
ffffff00cecbc580    137     2      1     b0 sticlts_sockaddr_hash
ffffff00cecba580    136     2      1     42 sticlts_ai_hash
ffffff00cecb8580    137     8      2     e8 sticots_sockaddr_hash
ffffff00cecb6580    136    14      1      6 sticots_ai_hash
ffffff00cecb4580    137     3      1     53 ticlts_addr_hash
ffffff00cecb2580    136     4      1     2c ticlts_ai_hash
ffffff00cecb0580    137     5      1     30 ticotsord_addr_hash
ffffff00cecae580    136     6      1     34 ticotsord_ai_hash
ffffff00cecac580    137     2      1     53 ticots_addr_hash
ffffff00cecaa580    136     3      1     3a ticots_ai_hash
ffffff00c77f6d00     65     0      0      0 gcgrp6_hash
ffffff00c77f7680     65     0      0      0 gcgrp4_hash
ffffff00c77fe040     65     0      0      0 gcdb_hash
ffffff00ca53d440     40     0      0      0 ipmp_grp_hash
ffffff00cafb6740     20     0      0      0 dld_autopush_hash
    :
    :
> ffffff00dc93f640::modhash
mod_hash_t ffffff00dc93f640 vnic_hash:
        Key comparator: fffffffffbb83e2c mod_hash_idkey_cmp
        Type: id
        Sleep flag = false, alloc failed = 0
        Number of chains = 0x40, elements = 0
        Hits = 0, misses = 0, dups = 0
        Maximum chain length = 0 (at index 0, first entry 0)
> 3000a056a00::modhash -e
            ADDR              VAL              KEY
     300024e65d8      3000c481540          86dd000
     30014445f38      3000c480708           806000
     300024e6d10      3000ae5b630           800000
     30014445800      30016a075e0          8035000

address ::modhdrs
指定された modctl 構造体のアドレスを使用して、モジュールの ELF 実行可能ヘッダーとセクションヘッダーを出力します。
> fffffffffbc43c30::modhdrs

ELF Header
  ei_magic:  { 0x7f, E, L, F }
  ei_class:  2                       ei_data: 1
  e_machine: 62                    e_version: 1
  e_type:    2
  e_flags:   0
  e_entry:   0x          c00000  e_ehsize:          64  e_shstrndx: 19
  e_shoff:   0x          201c78  e_shentsize:       64  e_shnum:    2
  e_phoff:   0x              40  e_phentsize:       56  e_phnum:    7

Section Header[0]:
    sh_addr:      0xffffff00c5afb080  sh_flags:   [ 0 ]
    sh_size:      0x2e3b0             sh_type:    [ SHT_SYMTAB ]
    sh_offset:    0x0                 sh_entsize: 0x18
    sh_link:      0x1                 sh_info:    0xc5a
    sh_addralign: 0x8

Section Header[1]:
    sh_addr:      0xffffff00c5b2e13e  sh_flags:   [ 0 ]
    sh_size:      0x1dbc0             sh_type:    [ SHT_STRTAB ]
    sh_offset:    0x0                 sh_entsize: 0x0
    sh_link:      0x0                 sh_info:    0x0
    sh_addralign: 0x1

::modinfo
アクティブカーネルモジュールに関する情報を出力します。/usr/sbin/modinfo コマンドの出力に似ています。
> ::modinfo
ID         LOADADDR     SIZE REV MODULE NAME
  0 fffffffffb800000   1ff8ae   0 unix (?)
  1 fffffffffb95d068   2df7e0   0 genunix (?)
  2                0        0   0 cl_bootstrap (?)
  3 fffffffffbbe4000     6008   1 specfs (filesystem for specfs)
  4 fffffffffbbe9f68     44a0   1 fifofs (filesystem for fifo)
  5 fffffffff7fc3000    1afa8   1 dtrace (Dynamic Tracing)
  6 fffffffffbbee350     5ae8   1 devfs (devices filesystem)
  7 fffffffff77fb000    133b8   1 dev (/dev filesystem)
  8 fffffffffbbf3bf0     6a18   1 dls (Data-Link Services)
  9 fffffffff780e000    30680   1 mac (MAC Services)
 10 fffffffff783e000    206e8   1 procfs (filesystem for proc)
    :
    :


walker

modctl
カーネルのアクティブな modctl 構造体のリストを調べます。
> ::walk modctl |::print modctl_t mod_modname
mod_modname = 0x1931df7 "unix"
mod_modname = 0x1936e68 "genunix"
mod_modname = 0x198d2cd "platmod"
mod_modname = 0x198d87c "SUNW,UltraSPARC-T1"
mod_modname = 0x300024f3380 "cl_bootstrap"
mod_modname = 0x30002504340 "specfs"
mod_modname = 0x300025042c8 "fifofs"
mod_modname = 0x300025042c0 "dtrace"
mod_modname = 0x300025042d0 "devfs"
mod_modname = 0x300025042a8 "procfs"
    :
    :
modent
mod_hash 構造体のエントリーのリストを調べます。
> 3000a056a00::print mod_hash_t mh_entries
mh_entries = [ 0x300024e65d8 ]
> 3000a056a00::walk modent |::print struct mod_hash_entry
{
    mhe_key = 0x86dd000
    mhe_val = 0x3000c481540
    mhe_next = 0
}
{
    mhe_key = 0x806000
    mhe_val = 0x3000c480708
    mhe_next = 0
}
{
    mhe_key = 0x800000
    mhe_val = 0x3000ae5b630
    mhe_next = 0
}
{
    mhe_key = 0x8035000
    mhe_val = 0x30016a075e0
    mhe_next = 0
}

modhash
mod_hash 構造体のリストを調べます。
> ::walk modhash |::print mod_hash_t mh_name
mh_name = 0x300036ec738 "vmusage anon hash"
mh_name = 0x300042707f8 "vmusage amp hash"
mh_name = 0x30004312e10 "vmusage vnode hash"
mh_name = 0x300035e5ec0 "vmusage anon hash"
mh_name = 0x30004312e28 "vmusage amp hash"
mh_name = 0x3000432aab0 "vmusage vnode hash"
mh_name = 0x300037f6228 "vmusage anon hash"
mh_name = 0x30002e3a198 "vmusage amp hash"
mh_name = 0x30002e3a168 "vmusage vnode hash"
mh_name = 0x30002e3a3a8 "vmusage project hash"
mh_name = 0x30002061b18 "sticlts_sockaddr_hash"
mh_name = 0x30001a6b3f0 "sticlts_ai_hash"
mh_name = 0x30002061b30 "sticots_sockaddr_hash"
mh_name = 0x30001a6b400 "sticots_ai_hash"
    :
    :

mod_hash_entries
mod_hash_entries キャッシュの mod_hash_entry 構造体を調べます。
> ::walk mod_hash_entries |::print struct mod_hash_entry
{
    mhe_key = 0x4a
    mhe_val = 0x300062b7688
    mhe_next = 0
}
{
    mhe_key = 0x42
    mhe_val = 0x300062b6c88
    mhe_next = 0
}
{
    mhe_key = 0x3d
    mhe_val = 0x300062b6788
    mhe_next = 0
}
    :
    :
Read more ...

mdb写経/デバイスドライバと DDI フレームワーク

2012/09/20

dcmds

address ::binding_hash_entry
指定されたカーネル名とメジャー番号のバインディングハッシュテーブルエントリ (構造体 bind) のアドレスを使用して、ノードバインディング名、メジャー番号、および次の要素へのポインタを表示します。

[ address ] ::dev2major <dev_t>
dev_t をメジャー番号に変換します。
> 4500000006::dev2major
0x45 (0t69)

[ address ] ::dev2minor <dev_t>
dev_t をメジャー番号に変換します。
> 4500000006::dev2minor
0x6 (0t6)

address ::dev2snode
dev_t を snode に変換します。
> e400000000::dev2snode
3000bd6d738
3000bd6d6a0
> 3000bd6d738::print struct snode s_vnode |::vnode2path
/devices/pseudo/zfs@0:zfs

[ address ] ::devbindings [-qs] [device-name | major-num]
名前を指定されたドライバについてすべてのインスタンスのリストを表示します。インスタンスごとに 1 つのエントリの出力、つまり、先頭から、構造体 dev_info へのポインタ ($<devinfo または ::devinfo で表示可能)、ドライバ名、インスタンス番号、そのインスタンスに関連するドライバとシステムのプロパティーが表示されます。
-q デバイスノードのクイックサマリだけが表示されます
-s dev_info 構造体の要約を表示します
 > ::devbindings zfs
3000628e058      zfs, instance #0 (driver name: zfs)
        Driver properties at 3000ae5a140:
            name='Nblocks' type=int64 items=1 dev=(228,2)
                value=0000000000200000
            name='Size' type=int64 items=1 dev=(228,2)
                value=0000000040000000
            name='name' type=string items=1 dev=(228,2)
                value='rpool/swap'
            name='Nblocks' type=int64 items=1 dev=(228,1)
                value=0000000000200000
            name='Size' type=int64 items=1 dev=(228,1)
                value=0000000040000000
            name='name' type=string items=1 dev=(228,1)
                value='rpool/dump'
> ::devbindings -s zfs
DEVINFO            MAJ           REFCNT NODENAME             NODESTATE
                  INST         CIRCULAR BINDNAME             STATE
                                 THREAD                      FLAGS          
000003000628e058   228                8 zfs@0                DS_READY
                     0                0 zfs                  <S_EVADD,S_NEED_RESET>
                                      0                      <>
> ::devbindings -q vdc
30002bff0c8      SUNW,sun4v-disk, instance #0 (driver name: vdc)
30002bfee00      SUNW,sun4v-disk, instance #1 (driver name: vdc)
30002bfeb38      SUNW,sun4v-disk, instance #2 (driver name: vdc)

address ::devinfo [-qs]
devinfo ノードに関連するシステムプロパティーおよびドライバプロパティーを出力します。
-q デバイスノードのクイックサマリだけが表示されます。
-s dev_info 構造体の要約を表示します
> ffffff00c96b8060::devinfo
ffffff00c96b8060 sd, instance #0 (driver name: sd)
        System properties at ffffff00cea84bd0:
            name='lun' type=int items=1
                value=00000000
            name='target' type=int items=1
                value=00000000
            name='class' type=string items=1
                value='scsi'
        Driver properties at ffffff00ce9d10b0:
            name='pm-components' type=string items=3
                value='NAME=spindle-motor' + '0=off' + '1=on'
            name='pm-hardware-state' type=string items=1
                value='needs-suspend-resume'
            name='ddi-failfast-supported' type=any items=0
            name='ddi-kernel-ioctl' type=any items=0
            name='fm-ereport-capable' type=any items=0
            name='removable-media' type=any items=0
        Hardware properties at ffffff00cea84f68:
            name='inquiry-revision-id' type=string items=1
                value='0.15'
            name='inquiry-product-id' type=string items=1
                value='QEMU DVD-ROM'
            name='inquiry-vendor-id' type=string items=1
                value='QEMU'
            name='inquiry-device-type' type=int items=1
                value=00000005
            name='variant' type=string items=1
                value='atapi'
        Global properties at ffffff00c620f088:
            name='ddi-devid-registrant' type=int items=1
                value=00000001

address ::devinfo2driver
devinfo ノードに関連するドライバ(もしあれば)の名前を出力します。
> ffffff00c96b8060::devinfo2driver
Driver 'sd' is associated with devinfo ffffff00c96b8060.

[ address ] ::devnames [-vm] [num]
カーネルの devnames テーブルと dn_head ポインタを表示します。このポインタは、ドライバインスタンスリストを指しています。
-v devnames テーブルの各エントリに格納されている追加情報が表示されます。
> ::devnames -v
NAME
cn
            flags DN_CONF_PARSED,DN_LEAF_DRIVER
               pl ffffff00c6022308
             head ffffff00c6314970
         instance 0
           inlist 0
  global_prop_ptr 0
zcons
            flags
               pl 0
             head 0
         instance 0
           inlist 0
  global_prop_ptr 0
glm
            flags DN_CONF_PARSED
               pl 0
             head 0
         instance 0
           inlist 0
  global_prop_ptr ffffff00c62179b8
  properties at ffffff00c6215a68:
      name='tape' type=string items=1
          value='sctp'
      name='scsi-initiator-id' type=int items=1
          value=00000007
      name='queue' type=string items=1
          value='qsort'
      name='flow_control' type=string items=1
          value='dsngl'

[ address ] ::devt <dev_t>
dev_t のメジャー番号とマイナー番号を表示します。
> 4500000006::devt
     MAJOR       MINOR
        69           6

[ address ] ::ldi_handle [-i]
ldi(layered driver identifier) ハンドルを表示します。アドレスを指定しない場合は、すべての ldi_handle_t 構造体を表示します。-i オプションを指定した場合、モジュール識別子の情報を表示します。
> ::ldi_handle
HANDLE           REFS            VNODE        DRV MINOR           EVENTS            IDENT
000003000709a498    1 00000300088c8000     consms     0                - 00000300062b8068
00000300143b2b28    1 000003000abce180       vnet  1003                - 000003000bd83730
000003000709a3f0    1 00000300088c8300    conskbd     1                - 0000030008d19458
000003000709a4d0    1 00000300088c8300    conskbd     1                - 00000300062b8068
000003000bca5148    1 000003000c734800        ip6 262199                - 00000300080ec280
000003000bca5228    1 000003000c734a00         ip 262200                - 00000300080ec280
000003000bc9c888    1 000003000822b040        ip6 262196                - 00000300080ec280
0000030015847d50    1 00000300169d7300        ip6 262182                - 00000300080ec280
000003000bd88af0    1 000003000c435480        ip6 262193                - 00000300080ec280
000003000bc9b538    1 000003000c41d400        zfs     0                - 00000300062b8068
0000030014f06038    1 00000300169d7500         ip 262183                - 00000300080ec280
0000030014f060a8    1 000003001446b600         ip 262207                - 00000300080ec280
00000300143b2a10    1 000003000c41da00       vnet  1004                - 000003000ad87d18
00000300082eb768    1 0000030007095c40        vdc     0                - 00000300062b8a68
0000030008d641c0    1 00000300165fde40        ip6 262192                - 00000300080ec280
00000300143b2b60    1 000003000aadde00       vnet  1002                - 000003000bd83730
> 00000300143b2b28::ldi_handle -i
HANDLE                      VNODE        DRV MINOR           EVENTS            IDENT              DIP MINOR MODID MODULE NAME
00000300143b2b28 000003000abce180       vnet  1003                - 000003000bd83730                -     -    78 udp

::ldi_ident
ldi(layered driver identifier) 識別子を表示します。
> ::ldi_ident
IDENT            REFS              DIP MINOR MODID MODULE NAME
00000300062b8068    6                -     -     1 genunix
00000300080ec280   13                -     -    72 ip
000003000aa57ea0    1 0000030002bfa878     -   181 iscsi
000003000ad861e8    1 000003000628b6a0     -   169 bmc
000003000bd83730    2                -     -    78 udp
0000030008d194a8    1                -     1    86 conskbd
00000300062b8a68    2                -     -    14 zfs
000003000ad87d18    1                -     -    79 udp6
000003001c63c0a0    1                -     -   211 iptun
00000300062b8a18    1                -     -    20 rpcmod
0000030008d19458    1                -     -    89 wc
000003001c6a3a50    1                -     -   218 sol_ucma
0000030008d19548    1                -     -    90 tem
000003000a032d98    1                -     -   157 rds

[ major-num ] ::major2name [major-num]
指定されたメジャー番号に該当するドライバ名を表示します。メジャー番号は、dcmd の前に式の形で、またはコマンド行引数として指定できます。
> 0x1c::major2name
sd

major-num ::major2snode
指定されたメジャー番号に関連する snode を表示します。
> 0xe4::major2snode  |::print struct snode s_vnode |::vnode2path
/devices/pseudo/zfs@0:zfs

address ::minornodes
指定された devinfo ノードの minor node を表示します。
> ::devbindings -q vdc
30002bff0c8      SUNW,sun4v-disk, instance #0 (driver name: vdc)
30002bfee00      SUNW,sun4v-disk, instance #1 (driver name: vdc)
30002bfeb38      SUNW,sun4v-disk, instance #2 (driver name: vdc)
> 30002bff0c8::minornodes
            ADDR              DEV SPEC TYPE        NAME       NODETYPE       
     300073c7a68       4500000000 b    DDI_MINOR   a          ddi_block
     300073c7a18       4500000000 c    DDI_MINOR   a,raw      ddi_block
     300073c79c8       4500000001 b    DDI_MINOR   b          ddi_block
     300073c7978       4500000001 c    DDI_MINOR   b,raw      ddi_block
     300073c7928       4500000002 b    DDI_MINOR   c          ddi_block
     300073c78d8       4500000002 c    DDI_MINOR   c,raw      ddi_block
     300073c7888       4500000003 b    DDI_MINOR   d          ddi_block
     300073c7838       4500000003 c    DDI_MINOR   d,raw      ddi_block
     300073c77e8       4500000004 b    DDI_MINOR   e          ddi_block
     300073c7798       4500000004 c    DDI_MINOR   e,raw      ddi_block
     300073c7748       4500000005 b    DDI_MINOR   f          ddi_block
     300073c76f8       4500000005 c    DDI_MINOR   f,raw      ddi_block
     300073c76a8       4500000006 b    DDI_MINOR   g          ddi_block
     300073c7658       4500000006 c    DDI_MINOR   g,raw      ddi_block
     300073c7608       4500000007 b    DDI_MINOR   h          ddi_block
     300073c75b8       4500000007 c    DDI_MINOR   h,raw      ddi_block

[ address ] ::msgbuf [-v]
直近の console messages を表示します。
> ::msgbuf
MESSAGE                                                                
        UltraDMA mode 5 selected
Disk0:  <Vendor 'Gen-ATA ' Product 'QEMU HARDDISK   '>
cmdk0 at ata0 target 0 lun 0
cmdk0 is /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
imported version 0 pool rpool using 33
root on rpool/ROOT/solaris fstype zfs
acpinex0 at root
acpinex: sb@0, acpinex1
pseudo-device: dld0
dld0 is /pseudo/dld@0
pcplusmp: i8042 (i8042) instance 0 irq 0x1 vector 0x41 ioapic 0x4 intin 0x1 is bound to cpu 3
pcplusmp: i8042 (i8042) instance 0 irq 0xc vector 0x42 ioapic 0x4 intin 0xc is bound to cpu 0
gfxp_fb: 1024x768 - 16 bit framebuffer mapped at ffffff00c93b1000
gfxp_fb: shadow framebuffer mapped at ffffff00cb6b1000
gfxp_fb: using 12x22 fonts
pcplusmp: pciclass,0c0300 (uhci) instance 0 irq 0x7 vector 0x81 ioapic 0x4 intin 0xb is bound to cpu 1
WARNING: /pci@0,0/pci1af4,1100@1,2 (uhci0): No SOF interrupts have been received, this USB UHCI host controller is unusable
8042 device:  keyboard@0, kb8042 # 0
kb80420 is /pci@0,0/isa@1/i8042@1,60/keyboard@0
8042 device:  mouse@1, mouse8042 # 0
    :
    :

[ address ] ::modctl2devinfo
指定された modctl アドレスに対応するすべてのデバイスノードを出力します。
> ffffff00c6254510::modctl2devinfo
ffffff00c630f300
> ffffff00c630f300::devinfo -q
ffffff00c630f300 clone, instance #0 (driver name: clone)

::name2major driver-name
指定されたデバイスドライバ名を使用して、そのメジャー番号を表示します。
> ::name2major sd
0x1c

[ devinfo ] ::prtconf [-cpv]
devinfo で指定されたデバイスノードからカーネルデバイスツリーを表示します。devinfo を指定しないと、デフォルトでルートからデバイスツリーが表示されます。
-c 指定されたデバイスノードの子だけが表示されます。
-p 指定されたデバイスノードの祖先だけが表示されます。
-v 各ノードに関連するプロパティーが表示されます。
> ffffff00c6314970::prtconf
DEVINFO          NAME
ffffff00c50d1c28 i86pc (driver name: rootnex)
    ffffff00c50c6018 pseudo, instance #0 (driver name: pseudo)
        ffffff00c6314970 cn, instance #0 (driver name: cn)

[ address ] ::softstate [ instance-number ]
指定された softstate 状態ポインタ (ddi_soft_state_init(9F) のマニュアルページを参照) とデバイスインスタンス番号を使用して、そのインスタンスのソフトの状態を表示します。

walker

binding_hash
指定されたカーネルバインディングハッシュテーブルエントリの配列 (構造体 bind **) のアドレスを使用して、ハッシュテーブル内のすべてのエントリを調べて、各構造体 bind のアドレスを戻します。

dev_info_node_cache
dev_info_node_cache について反復適用します。
> ::walk dev_info_node_cache |::print struct dev_info devi_node_name
devi_node_name = 0x3000a444480 "sppp"
devi_node_name = 0x3000a444490 "bpf"
devi_node_name = 0x3000a4444a0 "fssnap"
devi_node_name = 0x3000a4444b0 "pm"
devi_node_name = 0x3000a4444c0 "pool"
devi_node_name = 0x300062a5b50 "ntwdt"
devi_node_name = 0x300062a5b60 "mdesc"
devi_node_name = 0x300062a5b70 "bmc"
    :
    :

devinfo
最初に、指定された dev_info 構造体の親に対して反復適用し、それらを最下位から世代順に戻します。次に、指定された devinfo 自身を戻します。その次に、指定された dev_info 構造体の子に対して、世代順に最上位から最下位まで反復適用します。
> ::walk devinfo |::print struct dev_info devi_node_name
devi_node_name = 0x30002508fe0 "SUNW,Sun-Fire-T200"
devi_node_name = 0x30005c9f880 "scsi_vhci"
devi_node_name = 0x300024f23a0 "packages"
devi_node_name = 0x30002508f80 "SUNW,builtin-drivers"
devi_node_name = 0x300024f2360 "deblocker"
devi_node_name = 0x300024f2350 "disk-label"
devi_node_name = 0x30002508f20 "terminal-emulator"
    :
    :

devinfo_children
最初に、指定された dev_info 構造体を戻し、次に、指定された devinfo の子に対して、世代順に最上位から最下位まで反復適用します。
> 30002bfa020::walk devinfo_children |::devinfo -q
30002bfa020      scsi_vhci, instance #0 (driver name: scsi_vhci)

devinfo_parents
指定された dev_info 構造体の親に対して、世代順に最上位から最下位まで反復適用し、次に、指定された devinfo を戻します。
> 30002bfa020::walk devinfo_parents |::devinfo -q
30002c03bd8      SUNW,Sun-Fire-T200 (driver name: rootnex)
30002bfa020      scsi_vhci, instance #0 (driver name: scsi_vhci)

devi_next
指定された dev_info 構造体の兄弟に対して反復適用します。
> 30002bfa020::walk devi_next |::devinfo -q
30002bfa020      scsi_vhci, instance #0 (driver name: scsi_vhci)

devnames
devnames 配列のエントリに対して反復適用します。
> ::walk devnames |::print struct devnames dn_name
dn_name = 0x300025054c0 "cn"
dn_name = 0x30002505100 "pcata"
dn_name = 0x30002505518 "fm"
dn_name = 0x30002505520 "ib"
dn_name = 0x30002504fc8 "srn"
dn_name = 0x300025053e8 "dcpc"
dn_name = 0x300025055e0 "dtrace"
dn_name = 0x30002519c28 "fasttrap"
dn_name = 0x30002504f90 "fbt"
    :
    :

softstate
指定された softstate ポインタ (ddi_soft_state_init(9F) を参照) を使用して、ドライバ状態構造体への NULL 以外のポインタをすべて表示します。

softstate_all
指定された softstate ポインタ (ddi_soft_state_init(9F) を参照) を使用して、ドライバ状態構造体へのポインタをすべて表示します。未使用のインスタンスのポインタが NULL になることに注意してください。
Read more ...