dcmds
address ::addr2smap [offset]
カーネルの segmap アドレス空間セグメント内の指定されたアドレスに対応する smap 構造体アドレスを出力します。
> ffffff01d1399e40::addr2smap
ffffff01d1399e40 is smap ffffff01cbd94fc0
as ::as2proc
as_t アドレス as に対応するプロセスの proc_t アドレスを表示します。
> 300169b40f8::as2proc |::print proc_t p_user.u_psargs
p_user.u_psargs = [ "/usr/bin/login" ]
[ address ] ::memlist [-aiv]
指定された memlist_t 構造体または既知の memlist_t 構造体の 1 つを表示します。
-i | 物理的にインストールされているメモリーを表す memlist が表示されます |
-a | 利用できる物理メモリーを表す memlist が表示されます |
-v | 利用できる仮想メモリーを表す memlist が表示されます |
> ::memlist -i
phys_install:
ADDR BASE SIZE
000000000195e5e0 0 10000000
000000000195e600 20000000 10000000
> ::memlist -v
virt_avail:
ADDR BASE SIZE
000000000195e680 0 1000000
000000000195e6a0 1400000 400000
000000000195e6c0 1c80000 6e380000
000000000195e6e0 700de000 7ff22000
000000000195e700 f0800000 e5f0000
000000000195e720 fef00000 b8000
000000000195e740 feff6000 a000
000000000195e760 fff00000 4000
000000000195e780 fff0e000 4000
000000000195e7a0 fff16000 4000
000000000195e7c0 fff26000 14000
000000000195e7e0 ffff0000 e000
000000000195e800 100000000 2ff00002000
000000000195e820 3000003a000 8000
000000000195e840 3000006a000 18000
000000000195e860 300000d6000 28000
000000000195e880 30000112000 4000
000000000195e8a0 300003a4000 3c000
000000000195e8c0 30000400000 824000
000000000195e8e0 30000c3c000 34000
000000000195e900 30000c80000 10000
000000000195e920 30000d70000 30000
000000000195e940 30000dac000 4000
000000000195e960 30000dd4000 30000
000000000195e980 30000f00000 3ffff100000
000000000195e9a0 70000c00000 ffff400000
000000000195e9c0 fffff80000000000 7fc00000000
> ::memlist -a
phys_avail:
ADDR BASE SIZE
000000000195e9e0 0 10000000
000000000195ea00 20000000 9bae000
000000000195eb20 2a940000 2c0000
000000000195ea20 2ac6e000 4390000
000000000195ea40 2f23e000 1c2000
000000000195eb40 2f600000 200000
000000000195ea60 2fc08000 a6000
000000000195ea80 2fcb0000 2000
000000000195eaa0 2fcf2000 4a000
000000000195eac0 2fd40000 16c000
000000000195eae0 2feb6000 a000
000000000195eb00 2fee6000 8000
::memstat
システム全体のメモリー使用状況の要約を表示します。システムメモリーの合計とともに、さまざまなクラスのページ (カーネル、匿名メモリー、実行可能ファイルとライブラリ、ページキャッシュ、および空きリスト) が消費しているシステムメモリーの量とパーセンテージが表示されます。
> ::memstat
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 66783 260 26%
ZFS File Data 76886 300 30%
Anon 27284 106 10%
Exec and libs 1573 6 1%
Page cache 5221 20 2%
Free (cachelist) 8064 31 3%
Free (freelist) 74184 289 29%
Total 259995 1015
Physical 259994 1015
[ address ] ::page
指定された page_t 構造体のプロパティーを表示します。page_t アドレスを指定しないと、dcmd はすべてのシステムページのプロパティーを表示します。
> ::page
PAGE VNODE OFFSET SELOCK LCT COW IO FS ST
000007000160a780 3000ae57d80 0 0 0 0 0 0 0
00000700016a7a80 3000ae57880 0 0 0 0 0 0 0
0000070001663000 3000ae57080 0 0 0 0 0 0 0
00000700016ac900 3000ae57180 0 0 0 0 0 0 0
000007000162b180 3000ae57280 0 0 0 0 0 0 0
000007000162d280 3000ae57380 0 0 0 0 0 0 0
000007000167ab00 3000ae56c80 0 0 0 0 0 0 0
0000070000026900 3000ae56980 14000 0 0 0 0 0 0
0000070001707200 3000ae56980 16000 0 0 0 0 0 80
:
:
seg ::seg
指定されたアドレス空間セグメント(seg 構造体)をフォーマットし、表示します。
> ::seg
SEG BASE SIZE DATA OPS
3000250dfc0 3000250c040 300001c2170 0 0xffffffff00000000
[ address ] ::swapinfo
アクティブな swapinfo 構造体すべて、あるいは指定された swapinfo 構造体についての情報を表示します。各構造体の v ノード、ファイル名、および統計が表示されます。
> ::swapinfo
ADDR VNODE PAGES FREE NAME
ffffff00c9430ef0 ffffff00ca42f540 262143 262143 /dev/zvol/dsk/rpool/swap
vnode ::vnode2smap [offset]
指定された vnode_t 構造体のアドレスおよびオフセットに対応する smap 構造体アドレスを出力します。
walker
anon
指定された anon_map 構造体のアドレスを開始点として使用して、関連する anon 構造体のセットに対して反復適用します。
> 30016ed4028::walk anon |::print struct anon an_off
an_off = 0xc005c28000
an_off = 0xc005ba8000
an_off = 0xc005a78000
an_off = 0xc005a78000
anonmap_cache
anonmap_cache のすべての anon_map 構造体に対して反復適用します。
> ::walk anonmap_cache |::print struct anon_map ahp
ahp = 0x3001bd24488
ahp = 0x300154b99b0
ahp = 0x3001c6deeb8
ahp = 0x300154b94d0
ahp = 0x3001c2b4748
ahp = 0x300154b9a90
:
:
anon_cache
anon_cache のすべての anon 構造体に対して反復適用します。
> ::walk anon_cache |::print struct anon an_vp |::vnode2path
/system/volatile/svc_nonpersist.db
/system/volatile/nfs-mountd.lock
/system/volatile/in.routed.pid
/system/volatile/init-next.state
/system/volatile/svc_nonpersist.db
/system/volatile/svc_nonpersist.db
:
:
as_cache cache
as_cache cache のすべての as 構造体に対して反復適用します。
> ::walk as_cache cache |::print struct as a_proc |::ps
S PID PPID PGID SID UID FLAGS ADDR NAME
R 1607 11 1607 1607 0 0x4a004000 000003000b933000 login
R 1019 1 1019 1019 25 0x52010000 00000300171dd058 sendmail
R 1020 1 1020 1020 0 0x52010000 00000300169bf030 sendmail
R 586 1 585 585 0 0x42000000 00000300169be0d8 in.routed
R 690 1 689 689 0 0x42020000 0000030017467070 dhcpagent
R 511 1 510 510 0 0x42000000 000003001400a088 sshd
R 539 1 539 539 0 0x42000000 00000300169320c8 syslogd
R 484 1 484 484 1 0x42000000 000003000c43e068 lockd
:
:
memlist
指定された memlist_t 構造体のスパンに対して反復適用します。この walker を ::memlist dcmd と組み合わせて使用すると、各スパンを表示できます。
> 0000000001a3e860::walk memlist |::print memlist_t ml_address
ml_address = 0x8000000
ml_address = 0x62c6e000
ml_address = 0x70000000
ml_address = 0x8178a000
ml_address = 0x8178e000
ml_address = 0x81792000
ml_address = 0x81a44000
ml_address = 0x82000000
ml_address = 0x87e84000
ml_address = 0x87e8c000
ml_address = 0x87eaa000
ml_address = 0x87f44000
ml_address = 0x87f8a000
page
すべてのシステムの page 構造体に対して反復適用します。明示的なアドレスを walk に指定すると、vノードのアドレスとして解釈され、walker は vノードに関連するページだけに対して反復適用します。
> ::walk page |::print page_t p_vnode |::vnode2path
/system/volatile/system-console-login:vt6.log
/system/volatile/network-routing-route:default.log
/system/volatile/network-security-krb5kdc:default.log
/system/volatile/system-hotplug:default.log
/system/volatile/system-fmd:default.log
:
:
seg
指定された as_t 構造体のアドレスを開始点として使用して、指定されたアドレス空間に関連するアドレス空間セグメント (seg 構造体) のセットに対して反復適用します。
> 3000250dfc0$<seg
{
s_base = 0x3000250c040
s_size = 0x300001c2170
s_szc = 0x300
s_flags = 0xbe9dfc8
s_as = 1
s_tree = {
avl_child = [ 0, 0x19 ]
avl_pcb = 0x19
}
s_ops = 0xffffffff00000000
s_data = 0
s_pmtx = {
_opaque = [ 0x3000250e080 ]
}
s_phead = {
p_lnext = 0x3000250e180
p_lprev = 0x1000000ffffffff
}
}
swapinfo
アクティブな swapinfo 構造体のリストに対して反復適用します。この walker は ::swapinfo dcmd と組み合わせて使用できます。
> ::walk swapinfo |::print struct swapinfo
{
si_soff = 0x2000
si_eoff = 0x40000000
si_vp = 0x3000c434080
si_next = 0
si_allocs = 0
si_flags = 0
si_npgs = 0x1ffff
si_nfpgs = 0x1ffff
si_pnamelen = 0x19
si_pname = 0x3000beaa0e8 "/dev/zvol/dsk/rpool/swap"
si_mapsize = 0x4000
si_swapslots = 0x3000bd06000
si_hint = 0
si_checkcnt = 0
si_alloccnt = 0
}
0 件のコメント:
コメントを投稿