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
> ::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
> ::calloutid 17ffc58e2
SEQ T EXP            XHAL XID              FUNC(ARG)
1   R 128bd8cfd9803e86  H   17ffc58e2        cv_wakeup(ffffff00cc75b420)
 


::class

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

> ::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
> ::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
> ::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
> 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
> ::cpupart
ID             ADDR NRUN #CPU CPUS
  0 fffffffffbc8b580    0    4 0-3
 


[ address ] ::gcpu_poll_trace

poll trace buffer を表示します。

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

※アドレスが不明

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

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

> ::lgrp
> ::lgrp
   LGRPID             ADDR           PARENT         PLATHAND      #CPU      CPUS
        0          1898c88                0          DEFAULT         8      0-7
 
> ::lgrp -p
> ::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
> ::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
> 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
> ::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
> ::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
> ::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
> ::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 件のコメント:

コメントを投稿