mdb写経/CPU とディスパッチャー

2013/07/29

dcmds

[ address ] ::callout [-r|n] [-s|l] [-xhB] [-t|-ab nsec [-dkD]] [-C addr|-S seqid] [-f name|addr] [-p name|addr] [-T|L [-E]] [-FivVA]

コールアウトテーブル(タイマーの一覧)を表示します。各コールアウトの関数、引数、有効期限が表示されます。

-r|n (r)ealtime または (n)ormal タイプのコールアウトのみを表示します
-s|l (s)hort-term ids または (l)ong-term ids のみを表示します
-x 実行中のコールアウトのみを表示します
-h hrestimeに基づいたコールアウトのみを表示します
-B absolute timeに基づいたコールアウトのみを表示します
-t|a|b nsec a(t) 指定した時間, (a) 指定した時間より後, (b) 指定した時間より前に破棄されるコールアウトのみを表示します。-a と -b は範囲指定と共に使用する。今現在の場合は-d[t|a|b] 0 を指定する
-d -t|a|b のオプションを現在の時刻との差分として解釈します
-k -t|a|b の引数にナノセカンドの代わりに tick を使用します。tick はあまり確ではありません。他の tick と一致しないかもしれないことに注意して下さい(例: lbolt)
-D 有効期限を現在の時刻からの差分として表示します
-S seqid 指定したCPUシーケンスIDのコールアウトのみを表示します
-C addr 指定したCPUポインタのコールアウトのみを表示します
-f name|addr 指定した関数のコールアウトのみを表示します
-p name|addr 指定したパラメータの関数のコールアウトのみを表示します
-T コールアウトの代わりにコールアウトテーブルを表示します
-L コールアウトの代わりにコールアウトリストを表示します
-E -T または -L とともに使用して、空のデータ構造体を表示します
-i リストハッシュの代わりにIDハッシュを用いてコールアウトを走査します
-F フリーのコールアウトリストを表示します
-v 各項目の詳細情報を表示します
-V 走査された時に各レベルの情報の詳細を表示します
-H コールアウトヒープの中のコールアウトのみを表示します
-Q コールアウトキューの中のコールアウトのみを表示します
-A アドレスのみを表示します。パイプラインで利用できます
> ::callout SEQ T EXP XHAL XID FUNC(ARG) 0 R 34d2dcab7280 17ff6b8d8 realitexpire(ffffff00ce5d6018) 0 R 35109b7d925d H 17ff67da8 cv_wakeup(ffffff00c93bf0c0) 0 R 34b3ae26ce14 H 17ff6bf68 cv_wakeup(ffffff00c943c020) 0 R 34fc1cb196c8 H 17ff6ace8 cv_wakeup(ffffff00c96853e0) 0 R 335f46a30b00 17ff66940 cv_wakeup(ffffff0002d86c20) 0 R 33beb6d2e5f5 H 17ff67288 cv_wakeup(ffffff00c94f8b60) : : 0 R 335f15c2d600 17ff67968 sigalarm2proc(ffffff00cf3ee030) 0 N 33996d7e3300 17f8277d1 nce_timer(ffffff00ca25ad50) 0 N 335f2ecb8700 17f826409 vmem_update(0) 0 N 336037708d00 17f825f99 swrand`rnd_handler(0) 0 N 335e79003880 17f825f81 tcp_timer_callback(ffffff00ca2bb798) 0 N 4ea95c00dd00 17f962399 memscrub_wakeup(0) 0 N 335e98976100 17f825f89 mld_timeout_handler(ffffff00c6574000) : :


::calloutid [-d|v] xid

指定した extended id のコールアウトを表示します。

-d コールアウトを間接参照しないで、単純にidをデコードします
-v コールアウトについての詳細な情報を表示します
> ::calloutid 17ffc58e2 SEQ T EXP XHAL XID FUNC(ARG) 1 R 128bd8cfd9803e86 H 17ffc58e2 cv_wakeup(ffffff00cc75b420)


::class

スケジューリングクラステーブルを表示します。

> ::class SLOT NAME INIT FCN CLASS FCN 0 SYS sys_init sys_classfuncs 1 TS ts_init ts_classfuncs 2 SDC sysdc_init sysdc_classfuncs 3 FX fx_init fx_classfuncs 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0


[ address ] ::cmihdl [-c <cpuid>|<chip,core,strand>]

cmi_handle_t 構造体の内容を表示します。

> ::cmihdl HANDLE REF CPU CH/CR/ST CMT MC MODULE MODEL-SPECIFIC ---------------- --- --- -------- --- -- ------------- ------------------------ ffffff00c6021780 3 0 0/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffff00c62e2480 3 1 1/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffff00c62e2380 3 2 2/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffff00c62e2280 3 3 3/0/0 S N cpu.generic cpu_ms.GenuineIntel

 

[ address ] ::cpc [-v]

指定されたアドレスの CPC context の内容を表示します。アドレスが指定されていない場合、全ての有効な CPC contexts を表示します。
Flag codes:
O = overflow notify U = count user events S = count system events

> ::cpc -v N PIC NDX VAL FLG PRESET CFG EVENT -------------------------------------------------------------------------------- Set: 30008ee7ea0 2 requests. Flags = 0 0 0 0 3f0fa7 OUS 0 30008d5ead0 PAPI_fp_ins 1 1 1 80000014a OUS 0 30008d5eac0 PAPI_tot_ins -------------------------------------------------------------------------------- Set: 30008ee7ed8 2 requests. Flags = 0 0 0 0 53a772 OUS 0 30008d5eb00 PAPI_fp_ins 1 1 1 b000000ca OUS 0 30008d5eaf0 PAPI_tot_ins -------------------------------------------------------------------------------- Set: 30008ee7f10 2 requests. Flags = 0 0 0 0 7e598e OUS 0 30008d5eb30 PAPI_fp_ins 1 1 1 4000000d4 OUS 0 30008d5eb20 PAPI_tot_ins : :

[ cpuid ] ::cpuinfo [-v]

各 CPU 上で現在実行されているスレッドのテーブルを表示します。オプションの CPU 番号または CPU 構造体アドレスを dcmd 名の前に指定すると、指定した CPU の情報だけが表示されます。-v オプションを指定すると、::cpuinfo は、各 CPU 上で実行されるまで待機している実行可能スレッドとアクティブ割り込みスレッドも表示します。

> 0::cpuinfo -v ID ADDR FLG NRUN BSPL PRI RNRN KRNRN SWITCH THREAD PROC 0 0000180c000 1b 8 0 59 no no t-1 30003b515e0 mdb | | RUNNING <--+ +--> PRI THREAD PROC READY 59 3000192e1a0 java EXISTS 59 30004832400 java ENABLE 59 30001998a20 java 59 30004962a60 java 59 30004963aa0 java 59 30004b087c0 java 59 300020d3b60 sshd 34 300020d2b20 java


[ address ] ::cpupart [-v]

CPU partition の情報を表示します。

> ::cpupart ID ADDR NRUN #CPU CPUS 0 fffffffffbc8b580 0 4 0-3


[ address ] ::gcpu_poll_trace

poll trace buffer を表示します。

> fffffffffc0a7410::gcpu_poll_trace ADDR WHEN WHAT NERR fffffffffc0a7410 6e0000 ntv-cyc-poll 11

※アドレスが不明

[ address ] ::lgrp [-q] [-p | -Pih]

lgroup (近傍性グループ) を表示します。

> ::lgrp LGRPID ADDR PARENT PLATHAND #CPU CPUS 0 1898c88 0 DEFAULT 8 0-7 > ::lgrp -p LGRPID PSRSETID LOAD #CPU CPUS 0 0 8917 8 0-7


walker

cpu

カーネル CPU 構造体のセットに対して反復適用します。cpu_t 構造体は、<sys/cpuvar.h> で定義されます。

> ::walk cpu |::print cpu_t cpu_thread cpu_thread = 0x2a10001fc60 cpu_thread = 0x2a100fbfc60 cpu_thread = 0x2a10104dc60 cpu_thread = 0x2a1010e9c60 cpu_thread = 0x2a101169c60 cpu_thread = 0x2a1011e9c60 cpu_thread = 0x2a101299c60 cpu_thread = 0x2a1012e9c60

 

cpu_dispq

cpu_t 構造体を指定して、ディスパッチャーキューのスレッドに対して反復適用します。

> 0000180c000::walk cpu_dispq |::threadlist -v ADDR PROC LWP CLS PRI WCHAN 000002a1005ffc60 18a62c0 0 0 60 0 PC: cv_timedwait_hires+0xa4 TASKQ: system_taskq stack pointer for thread 2a1005ffc60: 2a1005ff021 [ 000002a1005ff021 cv_timedwait_hires+0xa4() ] taskq_thread_wait+0x54() taskq_d_thread+0x178() thread_start+4()


cpupart_cpulist

cpupart_t 構造体を指定して、パーティションの中の cpu に対して反復適用します

> ::walk cpupart_walk |::walk cpupart_cpulist |::print cpu_t cpu_thread |::threadlist ADDR PROC LWP CMD/LWPID 000002a10001fc60 18a62c0 0 idle() 000002a100fbfc60 18a62c0 0 idle() 000002a10104dc60 18a62c0 0 idle() 000002a1010e9c60 18a62c0 0 idle() 000002a101169c60 18a62c0 0 idle() 000002a1011e9c60 18a62c0 0 idle() 000002a101299c60 18a62c0 0 unix`thread_create_intr() 000002a1012e9c60 18a62c0 0 idle()

 

cpupart_walk

cpu パーティションのセットに対して反復適用します

> ::walk cpupart_walk |::print cpupart_t cp_kp_queue cp_kp_queue = { cp_kp_queue.disp_lock = 0 cp_kp_queue.disp_npri = 0x6e cp_kp_queue.disp_q = 0x30002c05540 cp_kp_queue.disp_q_limit = 0x30002c05f90 cp_kp_queue.disp_qactmap = 0x300024f23e0 cp_kp_queue.disp_maxrunpri = 0xffff cp_kp_queue.disp_max_unbound_pri = 0xffff cp_kp_queue.disp_nrunnable = 0 cp_kp_queue.disp_cpu = 0 cp_kp_queue.disp_steal = 0 }

 

cmihdl

cpu モジュールインターフェイスを列挙します

> ::walk cmihdl |::cmihdl HANDLE REF CPU CH/CR/ST CMT MC MODULE MODEL-SPECIFIC ---------------- --- --- -------- --- -- ------------- ------------------------ ffffc100005dc380 3 0 0/0/0 S N cpu.generic cpu_ms.GenuineIntel ffffc100038ef400 3 1 1/0/0 S N cpu.generic cpu_ms.GenuineIntel


cpc_ctx

global list の cpc コンテキストに反復適用します

> ::walk cpc_ctx |::cpc N PIC NDX VAL FLG PRESET CFG EVENT -------------------------------------------------------------------------------- 0 0 0 3f0fa7 OUS 0 30008d5ead0 PAPI_fp_ins 1 1 1 80000014a OUS 0 30008d5eac0 PAPI_tot_ins -------------------------------------------------------------------------------- 0 0 0 53a772 OUS 0 30008d5eb00 PAPI_fp_ins 1 1 1 b000000ca OUS 0 30008d5eaf0 PAPI_tot_ins -------------------------------------------------------------------------------- 0 0 0 7e598e OUS 0 30008d5eb30 PAPI_fp_ins 1 1 1 4000000d4 OUS 0 30008d5eb20 PAPI_tot_ins : :


gcpu_poll_trace

poll trace buffers in reverse chronological order

0 件のコメント:

コメントを投稿