The ppda subcommand allows to display all ppda area with the '*' argument. Otherwise, the current or specified processor ppda is printed.
KDB(1)> ppda * SLT CSA CURTHREAD SRR1 SRR0 ppda+000000 0 004ADEB0 thread+000178 4000D030 1002DC74 ppda+000300 1 004B8EB0 thread+000234 00009030 .ld_usecount+00045C ppda+000600 2 004C3EB0 thread+0002F0 0000D030 D00012F0 ppda+000900 3 004CEEB0 thread+0003AC 0000D030 D00012F0 ppda+000C00 4 004D9EB0 thread+000468 0000F030 D00012F0 ppda+000F00 5 004E4EB0 thread+000524 0000D030 10019870 ppda+001200 6 004EFEB0 thread+0005E0 0000D030 D00012F0 ppda+001500 7 004FAEB0 thread+00069C 0000D030 D00012F0 KDB(1)> ppda current processor data area Per Processor Data Area [000C0300] csa......................004B8EB0 mstack...................004B7EB0 fpowner..................00000000 curthread................E6000234 syscall..................0001879B intr.....................E0100080 i_softis.....................0000 i_softpri....................4000 prilvl...................05CB1000 ppda_pal[0]..............00000000 ppda_pal[1]..............00000000 ppda_pal[2]..............00000000 ppda_pal[3]..............00000000 phy_cpuid....................0001 ppda_fp_cr...............28222881 flih save[0].............00000000 flih save[1].............2FF3B338 flih save[2].............002E65E0 flih save[3].............00000003 flih save[4].............00000002 flih save[5].............00000006 flih save[6].............002E6750 flih save[7].............00000000 dsisr....................40000000 dsi_flag.................00000003 dar......................2FF9F884 dssave[0]................2FF3B2A0 dssave[1]................002E65E0 dssave[2]................00000000 dssave[3]................002A4B1C dssave[4]................E6001ED8 dssave[5]................00002A33 dssave[6]................00002A33 dssave[7]................00000001 dssrr0...................0027D5AC dssrr1...................00009030 dssprg1..................2FF9F880 dsctr....................00000000 dslr.....................0027D4CC dsxer....................20000000 dsmq.....................00000000 pmapstk..................00212C80 pmapsave64...............00000000 pmapcsa..................00000000 schedtail[0].............00000000 schedtail[1].............00000000 schedtail[2].............00000000 schedtail[3].............00000000 cpuid....................00000001 stackfix.................00000000 lru......................00000000 vmflags..................00010000 sio............................00 reservation....................01 hint...........................00 lock...........................00 no_vwait.................00000000 scoreboard[0]............00000000 scoreboard[1]............00000000 scoreboard[2]............00000000 scoreboard[3]............00000000 scoreboard[4]............00000000 scoreboard[5]............00000000 scoreboard[6]............00000000 scoreboard[7]............00000000 intr_res1................00000000 intr_res2................00000000 mpc_pend.................00000000 iodonelist...............00000000 affinity.................00000000 TB_ref_u.................003DC159 TB_ref_l.................28000000 sec_ref..................33CDD7B0 nsec_ref.................13EF2000 _ficd....................00000000 decompress...............00000000 ppda_qio.................00000000 cs_sync..................00000000 ppda_perfmon_sv[0].......00000000 ppda_perfmon_sv[1].......00000000 thread_private...........00000000 cpu_priv_seg.............60017017 fp flih save[0]..........00000000 fp flih save[1]..........00000000 fp flih save[2]..........00000000 fp flih save[3]..........00000000 fp flih save[4]..........00000000 fp flih save[5]..........00000000 fp flih save[6]..........00000000 fp flih save[7]..........00000000 TIMER.................... t_free...................00000000 t_active.................05CB9080 t_freecnt................00000000 trb_called...............00000000 systimer.................05CB9080 ticks_its................00000051 ref_time.tv_sec..........33CDD7B1 ref_time.tv_nsec.........01DCDA38 time_delta...............00000000 time_adjusted............05CB9080 wtimer.next..............05767068 wtimer.prev..............0B30B81C wtimer.func..............000F2F0C wtimer.count.............00000000 wtimer.restart...........00000000 w_called.................00000000 trb_lock.................000C04F0 slock/slockp 00000000 KDB...................... flih_llsave[0]...........00000000 flih_llsave[1]...........2FF22FB8 flih_llsave[2]...........00000000 flih_llsave[3]...........00000000 flih_llsave[4]...........00000000 flih_llsave[5]...........00000000 flih_save[0].............00000000 flih_save[1].............00000000 flih_save[2].............00000000 csa......................001D4800 KDB(3)>
The intr subcommand prints the interrupt handler table, or the specified one.
KDB(0)> intr interrupt handler table SLT INTRADDR HANDLER TYPE LEVEL PRIO BID FLAGS i_data+000068 1 055DF0A0 00000000 0000 00000003 0000 00000000 0000 i_data+000068 1 00364F88 00090584 0000 00000001 0000 00000000 0000 i_data+000068 1 003685B0 00090584 0001 00000008 0000 82000000 0000 i_data+000068 1 019E7D48 019E7BF0 0000 00000001 0000 820C0020 0010 i_data+0000E0 16 055DF060 00000000 0001 00000001 0000 82000080 0000 i_data+0000E0 16 00368718 000A24D8 0001 00000000 0000 82000080 0000 i_data+0000F0 18 055DF100 00000000 0001 00000000 0001 82080060 0010 i_data+0000F0 18 05B3BC00 01A55018 0001 00000002 0001 82080060 0010 i_data+000120 24 055DF0C0 00000000 0001 00000004 0000 82000000 0000 i_data+000120 24 003685B0 00090584 0001 00000008 0000 82000000 0000 i_data+000120 24 019E7D48 019E7BF0 0000 00000001 0000 820C0020 0010 i_data+000140 28 055DF160 00000000 0001 00000001 0003 820C0060 0010 i_data+000140 28 0A145000 01A741AC 0001 0000000C 0003 820C0060 0010 i_data+000150 30 055DF0E0 00000000 0001 00000000 0003 820C0020 0010 i_data+000150 30 055FC000 019E7AA8 0001 0000000E 0003 820C0020 0010 i_data+000160 32 055DF080 00000000 0001 00000002 0000 82100080 0000 i_data+000160 32 00368734 000A24D8 0001 00000000 0000 82100080 0000 i_data+0004E0 144 055DF020 00000000 0002 00000000 0000 00000000 0011 i_data+0004E0 144 00368560 000903B0 0002 00000002 0000 00000000 0011 i_data+000530 154 055DF040 00000000 0002 FFFFFFFF 000A 00000000 0011 i_data+000530 154 00368580 000903B0 0002 00000002 000A 00000000 0011 KDB(0)> intr 1 interrupt handler slot 1 SLT INTRADDR HANDLER TYPE LEVEL PRIO BID FLAGS i_data+000068 1 055DF0A0 00000000 0000 00000003 0000 00000000 0000 i_data+000068 1 00364F88 00090584 0000 00000001 0000 00000000 0000 i_data+000068 1 003685B0 00090584 0001 00000008 0000 82000000 0000 i_data+000068 1 019E7D48 019E7BF0 0000 00000001 0000 820C0020 0010 KDB(0)> intr 00368560 interrupt handler address .. addr.......... 00368560 handler....... 000903B0 i_hwassist_int+000000 bid........... 00000000 bus_type...... 00000002 PLANAR next.......... 00000000 flags......... 00000011 NOT_SHARED MPSAFE level......... 00000002 priority...... 00000000 INTMAX i_count....... 00000014 KDB(0)>
The mst subcommand prints the current context (Machine State Save Area), or the specified one. Argument is given to identify a process/thread mst context. If -a option is specified, argument is an effective address, not a slot entry.
KDB(0)> mst current mst Machine State Save Area iar : 0002599C msr : 00009030 cr : 20000000 lr : 000259B8 ctr : 000258EC xer : 00000000 mq : 00000000 r0 : 00000000 r1 : 2FF3B338 r2 : 002E65E0 r3 : 00000003 r4 : 00000002 r5 : 00000006 r6 : 002E6750 r7 : 00000000 r8 : DEADBEEF r9 : DEADBEEF r10 : DEADBEEF r11 : 00000000 r12 : 00009030 r13 : DEADBEEF r14 : DEADBEEF r15 : DEADBEEF r16 : DEADBEEF r17 : DEADBEEF r18 : DEADBEEF r19 : DEADBEEF r20 : DEADBEEF r21 : DEADBEEF r22 : DEADBEEF r23 : DEADBEEF r24 : DEADBEEF r25 : DEADBEEF r26 : DEADBEEF r27 : DEADBEEF r28 : 000034E0 r29 : 000C6158 r30 : 000C0578 r31 : 00005004 s0 : 00000000 s1 : 007FFFFF s2 : 0000F00F s3 : 007FFFFF s4 : 007FFFFF s5 : 007FFFFF s6 : 007FFFFF s7 : 007FFFFF s8 : 007FFFFF s9 : 007FFFFF s10 : 007FFFFF s11 : 007FFFFF s12 : 007FFFFF s13 : 0000C00C s14 : 00004004 s15 : 007FFFFF prev 00000000 kjmpbuf 00000000 stackfix 00000000 intpri 0B curid 00000306 sralloc E01E0000 ioalloc 00000000 backt 00 flags 00 tid 00000000 excp_type 00000000 fpscr 00000000 fpeu 00 fpinfo 00 fpscrx 00000000 o_iar 00000000 o_toc 00000000 o_arg1 00000000 excbranch 00000000 o_vaddr 00000000 mstext 00000000 Except : csr 2FEC6B78 dsisr 40000000 bit set: DSISR_PFT srval 000019DD dar 2FEC6B78 dsirr 00000106 KDB(0)> mst 1 slot 1 is thread+0000A0 Machine State Save Area iar : 00038ED0 msr : 00001030 cr : 2A442424 lr : 00038ED0 ctr : 002BCC00 xer : 00000000 mq : 00000000 r0 : 60017017 r1 : 2FF3B300 r2 : 002E65E0 r3 : 00000000 r4 : 00000002 r5 : E60000BC r6 : 00000109 r7 : 00000000 r8 : 000C0300 r9 : 00000001 r10 : 2FF3B380 r11 : 00000000 r12 : 00001030 r13 : 00000001 r14 : 2FF22F54 r15 : 2FF22F5C r16 : DEADBEEF r17 : DEADBEEF r18 : 0000040F r19 : 00000000 r20 : 00000000 r21 : 00000003 r22 : 01000001 r23 : 00000001 r24 : 00000000 r25 : E600014C r26 : 000D1A08 r27 : 00000000 r28 : E3000160 r29 : E60000BC r30 : 00000004 r31 : 00000004 s0 : 00000000 s1 : 007FFFFF s2 : 0000A00A s3 : 007FFFFF s4 : 007FFFFF s5 : 007FFFFF s6 : 007FFFFF s7 : 007FFFFF s8 : 007FFFFF s9 : 007FFFFF s10 : 007FFFFF s11 : 007FFFFF s12 : 007FFFFF s13 : 6001F01F s14 : 00004004 s15 : 60004024 prev 00000000 kjmpbuf 00000000 stackfix 2FF3B300 intpri 00 curid 00000001 sralloc E01E0000 ioalloc 00000000 backt 00 flags 00 tid 00000000 excp_type 00000000 fpscr 00000000 fpeu 00 fpinfo 00 fpscrx 00000000 o_iar 00000000 o_toc 00000000 o_arg1 00000000 excbranch 00000000 o_vaddr 00000000 mstext 00000000 Except : csr 30002F00 dsisr 40000000 bit set: DSISR_PFT srval 6000A00A dar 20022000 dsirr 00000106 KDB(0)> set 11 64-bit printing mode 64_bit is true KDB(0)> sw u select user context KDB(0)> mst print user context Machine State Save Area iar : 08000001000581D4 msr : 800000004000D0B0 cr : 84002222 lr : 000000010000047C ctr : 08000001000581D4 xer : 00000000 mq : 00000000 asr : 0000000013619001 r0 : 08000001000581D4 r1 : 0FFFFFFFFFFFFF00 r2 : 080000018007BC80 r3 : 0000000000000064 r4 : 0000000000989680 r5 : 0000000000000000 r6 : 800000000000D0B0 r7 : 0000000000000000 r8 : 000000002FF9E008 r9 : 0000000013619001 r10 : 000000002FF3B010 r11 : 0000000000000000 r12 : 0800000180076A98 r13 : 0000000110003730 r14 : 0000000000000001 r15 : 00000000200FEB78 r16 : 00000000200FEB88 r17 : BADC0FFEE0DDF00D r18 : BADC0FFEE0DDF00D r19 : BADC0FFEE0DDF00D r20 : BADC0FFEE0DDF00D r21 : BADC0FFEE0DDF00D r22 : BADC0FFEE0DDF00D r23 : BADC0FFEE0DDF00D r24 : BADC0FFEE0DDF00D r25 : BADC0FFEE0DDF00D r26 : BADC0FFEE0DDF00D r27 : BADC0FFEE0DDF00D r28 : BADC0FFEE0DDF00D r29 : BADC0FFEE0DDF00D r30 : BADC0FFEE0DDF00D r31 : 0000000110000688 s0 : 60000000 s1 : 007FFFFF s2 : 60010B68 s3 : 007FFFFF s4 : 007FFFFF s5 : 007FFFFF s6 : 007FFFFF s7 : 007FFFFF s8 : 007FFFFF s9 : 007FFFFF s10 : 007FFFFF s11 : 007FFFFF s12 : 007FFFFF s13 : 007FFFFF s14 : 007FFFFF s15 : 007FFFFF prev 00000000 kjmpbuf 00000000 stackfix 2FF3B2A0 intpri 00 curid 00006FBC sralloc A0000000 ioalloc 00000000 backt 00 flags 00 tid 00000000 excp_type 00000000 fpscr 00000000 fpeu 00 fpinfo 00 fpscrx 00000000 o_iar 00000000 o_toc 00000000 o_arg1 00000000 excbranch 00000000 o_vaddr 00000000 mstext 00062C08 Except : dar 08000001000581D4 KDB(0)>
The p subcommand prints the proc table. The '*' argument specifies all the table, no argument specifies the current process. Output is decimal or hexadecimal, according to the hexadecimal_wanted toggle value. The current process is shown with a "*".
KDB(0)> p * print proc table SLOT NAME STATE PID PPID PGRP UID EUID ADSPACE proc+000000 0 swapper ACTIVE 00000 00000 00000 00000 00000 00001C07 proc+000100 1 init ACTIVE 00001 00000 00000 00000 00000 00001405 proc+000200 2*wait ACTIVE 00204 00000 00000 00000 00000 00002008 proc+000300 3 wait ACTIVE 00306 00000 00000 00000 00000 00002409 proc+000400 4 wait ACTIVE 00408 00000 00000 00000 00000 0000280A proc+000500 5 wait ACTIVE 0050A 00000 00000 00000 00000 00002C0B proc+000600 6 wait ACTIVE 0060C 00000 00000 00000 00000 0000300C proc+000700 7 wait ACTIVE 0070E 00000 00000 00000 00000 0000340D proc+000800 8 wait ACTIVE 00810 00000 00000 00000 00000 0000380E proc+000900 9 wait ACTIVE 00912 00000 00000 00000 00000 00003C0F proc+000A00 10 lrud ACTIVE 00A14 00000 00000 00000 00000 00004010 proc+000B00 11 netm ACTIVE 00B16 00000 00000 00000 00000 00001806 proc+000C00 12 gil ACTIVE 00C18 00000 00000 00000 00000 00004C13 proc+000F00 15 lvmb ACTIVE 00F70 00000 00D68 00000 00000 00004832 proc+001000 16 biod ACTIVE 01070 02066 02066 00000 00000 000021A8 proc+001100 17 biod ACTIVE 0116E 02066 02066 00000 00000 000011A4 proc+001200 18 errdemon ACTIVE 01220 00001 01220 00000 00000 00001104 proc+001300 19 dump ACTIVE 01306 00001 00ECC 00000 00000 00005C77 proc+001400 20 syncd ACTIVE 01418 00001 00ECC 00000 00000 00000D03 proc+001500 21 biod ACTIVE 0156C 02066 02066 00000 00000 000001A0 KDB(0)> p 21 print process slot 21 SLOT NAME STATE PID PPID PGRP UID EUID ADSPACE proc+001500 21 biod ACTIVE 0156C 02066 02066 00000 00000 000001A0 NAME....... biod STATE...... stat :07...... xstat :0000 FLAGS...... flag :00040001 LOAD ORPHANPGRP ........... int :00000000 ........... atomic:00000000 LINKS...... child :00000000 ........... siblings :E3001800 proc+001800 ........... uidl :E3001500 proc+001500 ........... ganchor :00000000 THREAD..... threadlist :E6001200 thread+001200 ........... threadcount:0001................. active :0001 ........... suspended :0000................. terminating:0000 ........... local :0000 SCHEDULE... nice : 20 sched_pri :127 DISPATCH... pevent :00000000 ........... synch :FFFFFFFF IDENTIFIER. uid :00000000............. suid :00000000 ........... pid :0000156C............. ppid :00002066 (0)> more (^C to quit) ? continue ........... sid :00002066............. pgrp :00002066 MISC....... lock :00000000............. kstackseg :007FFFFF ........... adspace :000001A0............. ipc :00000000 ........... pgrpl :E3001800 proc+001800 ........... ttyl :00000000 ........... dblist :00000000 ........... dbnext :00000000 SIGNAL..... pending : ........... sigignore: URG IO WINCH PWR ........... sigcatch : TERM USR1 USR2 STATISTICS. page size :00000000............. pctcpu :00000000 ........... auditmask :00000000 ........... minflt :00000004............. majflt :00000000 SCHEDULER.. repage :00000000............. sched_count:00000000 ........... sched_next :00000000 ........... sched_back :00000000 ........... cpticks :0000................. msgcnt :0000 ........... majfltsec :00000000 THE FOLLOWING EXAMPLE SHOWS HOW TO FIND A THREAD THRU THE PROCESS TABLE. The initial problem was that many threads are waiting for ever. This example shows how to point the failing process: KDB(6)> th -w WPGIN threads waiting for VMM resources SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+000780 10 lrud SLEEP 00A15 010 000 00001004 vmmdseg+69C84D0 thread+0012C0 25 dtlogin SLEEP 01961 03C 000 00000000 vmmdseg+69C8670 thread+001500 28 cnsview SLEEP 01C71 03C 000 00000004 vmmdseg+69C8670 thread+00B1C0 237 jfsz SLEEP 0EDCD 032 000 00001000 vm_zqevent+000000 thread+00C240 259 jfsc SLEEP 10303 01E 000 00001000 _$STATIC+000110 thread+00E940 311 rm SLEEP 137C3 03C 000 00000000 vmmdseg+69C8670 thread+012300 388 touch SLEEP 1843B 03C 000 00000000 vmmdseg+69C8670 ... thread+0D0F80 4458 link_fil SLEEP 116A39 03C 000 00000000 vmmdseg+69C9C74 thread+0DC140 4695 sync SLEEP 1257BB 03C 000 00000000 vmmdseg+69C8670 thread+0DD280 4718 touch SLEEP 126E57 03C 000 00000000 vmmdseg+69C8670 thread+0E5A40 4899 renamer SLEEP 132315 03C 000 00000000 vmmdseg+69C8670 thread+0EE140 5079 renamer SLEEP 13D7C3 03C 000 00000000 vmmdseg+69C8670 thread+0F03C0 5125 renamer SLEEP 1405B7 03C 000 00000000 vmmdseg+69C8670 thread+0FC540 5383 renamer SLEEP 15072F 03C 000 00000000 vmmdseg+69C8670 thread+101AC0 5497 renamer SLEEP 157909 03C 000 00000000 vmmdseg+69C8670 thread+10D280 5742 rm SLEEP 166E37 03C 000 00000000 vmmdseg+69C8670 KDB(6)> vmwait vmmdseg+69C8670 VMM resource VMM Wait Info Waiting on transactions to end to forward the log KDB(6)> vmwait vmmdseg+69C9C74 VMM resource VMM Wait Info Waiting on transaction block number 00000057 KDB(6)> tblk 87 print transaction block number @tblk[87] vmmdseg +69C9C3C logtid.... 002C77CF next...... 00000064 tid....... 00000057 flag...... 00000000 cpn....... 00000000 ceor...... 00000000 cxor...... 00000000 csn....... 00000000 waitsid... 00000000 waitline.. 00000000 locker.... 00000000 lsidx..... 00000AB3 logage.... 00B71704 gcwait.... FFFFFFFF waitors... E60D0F80 cqnext.... 00000000 TID is registered in __ublock, at page offset 0x6a0. Search in physical memory TID 0x00000057. The search is limited at this page offset. KDB(6)> findp 6A0 00000057 ffffffff 1000 physical search 0AFC86A0: 00000057 00000000 00000000 00000000 KDB(6)> pft 1 print page frame information Enter the page frame number (in hex): 0AFC8 VMM PFT Entry For Page Frame 0AFC8 of 7FF67 pte = B066F458, pvt = B202BF20, pft = B3A0F580 h/w hashed sid : 000164EA pno : 0000FF3B key : 0 source sid : 000164EA pno : 0000FF3B key : 0 > in use > on scb list > valid (h/w) > referenced (pft/pvt/pte): 0/1/1 > modified (pft/pvt/pte): 0/1/1 page number in scb (pagex) : 0000FF3B disk block number (dblock) : 00000000 next page on scb list (sidfwd) : FFFFFFFF prev page on scb list (sidbwd) : 00051257 freefwd/waitlist (freefwd): 00000000 freebwd/logage/pincnt (freebwd): 00010000 out of order I/O (nonfifo): 0000 next frame i/o list (nextio) : 00000000 storage attributes (wimg) : 2 xmem hide count (xmemcnt): 0 next page on s/w hash (next) : FFFFFFFF List of alias entries (alist) : 0000FFFF index in PDT (devid) : 0000 The Segment ID of __ublock is the ADSPACE of the process KDB(6)> find proc 000164EA search this SID in the proc table proc+10EB58: 000164EA E3173F00 00000000 00000000 KDB(6)> proc proc+10EB00 print the process entry SLOT NAME STATE PID PPID PGRP UID EUID ADSPACE proc+10EB00 4331 renamer ACTIVE 10EB98 D6282 065DE 00000 00000 000164EA NAME....... renamer STATE...... stat :07...... xstat :0000 FLAGS...... flag :00000001 LOAD ........... int :00000000 ........... atomic:00000000 LINKS...... child :00000000 ........... siblings :E3173F00 proc+173F00 ........... uidl :E310EB00 proc+10EB00 ........... ganchor :00000000 THREAD..... threadlist :E60F2640 thread+0F2640 ... KDB(6)> sw thread+0F2640 switch to this thread Switch to thread: <thread+0F2640> KDB(6)> f look at the stack thread+0F2640 STACK: [000D4950]slock_instr_ppc+00045C (C0042BDF, 00000002 [??]) [000095AC].simple_lock+0000AC () [00202370]logmvc+00004C (??, ??, ??, ??) [001C23F4]logafter+000108 (??, ??, ??) [001C1CEC]commit2+0001FC (??) [001C386C]finicom+0000C0 (??, ??) [001C3BC0]comlist+0001CC (??, ??) [0020D938]jfs_rename+0006EC (??, ??, ??, ??, ??, ??, ??) [001CE794]vnop_rename+000038 (??, ??, ??, ??, ??, ??, ??) [001DEFA4]rename+000398 (??, ??) [000037D8].sys_call+000000 () [100004B4]main+0002DC (00000006, 2FF22A20) [10000174].__start+00004C ()
The th subcommand prints the thread table. The '*' argument specifies all the table, no argument specifies the current thread. Output is decimal or hexadecimal, according to the hexadecimal_wanted toggle value. The current thread is shown with a "*".
The '-w' argument can be used to select threads waiting with the specified thread wtype, (WLOCK, WPGIN, ...).
KDB(0)> th * print thread table SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+000000 0 swapper SLEEP 00003 010 078 00001400 thread+0000A0 1 init SLEEP 001F3 03C 000 00000400 thread+000140 2 wait RUN 00205 07F 00000 078 00001004 thread+0001E0 3 wait RUN 00307 07F 00001 078 00001004 thread+000280 4 netm SLEEP 00409 024 000 00001004 thread+000320 5 gil SLEEP 0050B 025 000 00001004 thread+0003C0 6 gil SLEEP 0060D 025 000 00001004 netisr_servers+000000 thread+000460 7 gil SLEEP 0070F 025 000 00001004 netisr_servers+000000 thread+000500 8 gil SLEEP 00811 025 001 00001004 netisr_servers+000000 thread+0005A0 9 gil SLEEP 00913 025 000 00001004 netisr_servers+000000 thread+0006E0 11 errdemon SLEEP 00B01 03C 000 00000000 errc+000008 thread+000780 12 syncd SLEEP 00CF9 03C 005 00000000 thread+000820 13 lvmb SLEEP 00D97 03C 000 00001004 thread+0008C0 14 cpio SLEEP 00EC3 040 007 00000000 054FB000 thread+000960 15 sh SLEEP 00FAF 03C 000 00000400 thread+000A00 16 getty SLEEP 01065 03C 000 00000420 0563525C thread+000AA0 17 ksh SLEEP 01163 03C 000 00000420 05BA0E44 thread+000B40 18 sh SLEEP 01279 03C 000 00000400 thread+000BE0 19 find SLEEP 013B1 041 001 00000000 thread+000C80 20 ksh SLEEP 014FB 040 000 00000400 KDB(0)> th print current thread SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+0159C0 461*ksh RUN 1CDC9 03D 003 00000000 NAME................ ksh FLAGS............... WTYPE............... NOWAIT ............stackp64 :00000000 ..............stackp :2FF1E5A0 ...............state :00000002 ...............wtype :00000000 .............suspend :00000001 ...............flags :00000000 ..............atomic :00000000 DATA................ ...............procp :E3014400 <proc+014400> ...............userp :2FF3B6C0 <__ublock+0002C0> ............uthreadp :2FF3B400 <__ublock+000000> THREAD LINK......... ..........prevthread :E60159C0 <thread+0159C0> ..........nextthread :E60159C0 <thread+0159C0> SLEEP LOCK......... ............ulock64 :00000000 ..............ulock :00000000 ...............wchan :00000000 ..............wchan1 :00000000 ...........wchan1sid :00000000 ........wchan1offset :00000000 (3)> more (^C to quit) ? continue ..............wchan2 :00000000 ..............swchan :00000000 ...........eventlist :00000000 ..............result :00000000 .............polevel :00000000 .............pevent :00000000 .............wevent :00000000 ..............slist :00000000 ...........lockcount :00000002 DISPATCH............ ...............ticks :00000000 ...............prior :E60159C0 ................next :E60159C0 ...............synch :FFFFFFFF ..............dispct :00000003 ...............fpuct :00000000 SCHEDULER........... ...............cpuid :FFFFFFFF ..............scpuid :FFFFFFFF ............affinity :00000001 .................pri :0000003C ..............policy :00000000 .................cpu :00000000 .............lockpri :0000003D .............wakepri :0000007F ................time :000000FF .............sav_pri :0000003C SIGNAL.............. ..............cursig :00000000 ......(pending) sig : ............sigmask : ...............scp64 :00000000 .................scp :00000000 MISC................ ............graphics :00000000 ..............cancel :00000000 (3)> more (^C to quit) ? continue ...........lockowner :00000000 .............boosted :00000000 ..............tsleep :FFFFFFFF ..........userdata64 :00000000 ............userdata :00000000 KDB(0)> th -w print -w usage Missing wtype: NOWAIT WEVENT WLOCK WTIMER WCPU WPGIN WPGOUT WPLOCK WFREEF WMEM WLOCKREAD WUEXCEPT KDB(0)> th -w WPGIN print threads waiting for page-in SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+000600 8 lrud SLEEP 00811 010 000 00001004 vmmdseg+69C84D0 thread+000E40 19 syncd SLEEP 01329 03D 003 00000000 vmmdseg+69D1630 thread+013440 411 oracle SLEEP 19B75 03D 002 00000000 vmmdseg+69F171C thread+013500 412 oracle SLEEP 19C77 03F 006 00000000 vmmdseg+69F13A8 thread+022740 735 rts32 SLEEP 2DF7F 03F 007 00000000 vmmdseg+3A9A5B8 KDB(0)> vmwait vmmdseg+69C84D0 print VMM resource the thread is waiting for VMM Wait Info Waiting on lru daemon anchor KDB(0)> vmwait vmmdseg+69D1630 print VMM resource the thread is waiting for VMM Wait Info Waiting on segment I/O level (v_iowait), sidx = 00000124 KDB(0)> vmwait vmmdseg+69F171C print VMM resource the thread is waiting for VMM Wait Info Waiting on segment I/O level (v_iowait), sidx = 000008AF KDB(0)> vmwait vmmdseg+69F13A8 print VMM resource the thread is waiting for VMM Wait Info Waiting on segment I/O level (v_iowait), sidx = 000008A2 KDB(0)> vmwait vmmdseg+3A9A5B8 print VMM resource the thread is waiting for VMM Wait Info Waiting on page frame number 0000DE1E KDB(1)> th -w WLOCK print threads waiting for locks SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+0000C0 1 init SLEEP 001BD 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+000900 12 cron SLEEP 00C57 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+000B40 15 inetd SLEEP 00FB7 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+000CC0 17 mirrord SLEEP 01107 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+000F00 20 sendmail SLEEP 014A5 03C 000 00000004 cred_lock+000000 lockhsque+000020 thread+013F80 426 getty SLEEP 1AA6F 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+014340 431 diagd SLEEP 1AF8F 03C 000 00000000 proc_tbl_lock+000000 lockhsque+0000F8 thread+014400 432 pd_watch SLEEP 1B091 03C 000 00000000 proc_tbl_lock+000000 lockhsque+0000F8 thread+015000 448 stress_m SLEEP 1C08B 028 000 00000000 cred_lock+000000 lockhsque+000020 thread+018780 522 stresser SLEEP 20AF1 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+018CC0 529 pcomp SLEEP 21165 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+01B6C0 585 EXP_TEST SLEEP 24943 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+01C2C0 601 cres SLEEP 25957 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+022500 732 rsh SLEEP 2DC25 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02A240 899 rcp SLEEP 383FB 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02C580 946 ps SLEEP 3B223 03C 000 00000000 proc_tbl_lock+000000 lockhsque+0000F8 thread+02D900 972 rsh SLEEP 3CC29 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02DD80 978 xlCcode SLEEP 3D227 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02ED40 999 tty_benc SLEEP 3E7A7 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02F100 1004 tty_benc SLEEP 3ECF3 03C 000 00000000 cred_lock+000000 lockhsque+000020 (1)> more (^C to quit) ? continue SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+02F400 1008 tty_benc SLEEP 3F097 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02F700 1012 ksh SLEEP 3F403 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02F940 1015 tty_benc SLEEP 3F745 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02FA00 1016 tty_benc SLEEP 3F869 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02FE80 1022 tty_benc SLEEP 3FECB 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+02FF40 1023 tty_benc SLEEP 3FFF5 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+030240 1027 rshd SLEEP 403F3 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+030300 1028 bsh SLEEP 404FF 03C 000 00000000 cred_lock+000000 lockhsque+000020 thread+0303C0 1029 sh SLEEP 40505 03C 000 00000000 cred_lock+000000 lockhsque+000020 KDB(1)> slk cred_lock+000000 print lock information Simple lock name: cred_lock _slock: 400401FD WAITING thread_owner: 00401FD KDB(1)> slk proc_tbl_lock+000000 print lock information Simple lock name: proc_tbl_lock _slock: 400401FD WAITING thread_owner: 00401FD KDB(1)>
The ttid subcommand prints the thread entry selected by thread id. Default is the current thread. The tpid subcommand prints all thread entries selected by process id. Default is the current process.Id input is decima hexadecimal, according to the hexadecimal_wanted toggle value.
KDB(4)> p * print process table SLOT NAME STATE PID PPID PGRP UID EUID ADSPACE ... proc+000100 1 init ACTIVE 00001 00000 00000 00000 00000 0000A005 ... proc+000C00 12 gil ACTIVE 00C18 00000 00000 00000 00000 00026013 ... KDB(4)> tpid 1 print thread(s) of process pid 1 SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+0000C0 1 init SLEEP 001D9 03C 000 00000400 KDB(4)> tpid 00C18 print thread(s) of process pid 0xc18 SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+000900 12 gil SLEEP 00C19 025 000 00001004 thread+000C00 16 gil SLEEP 01021 025 00000 000 00003004 netisr_servers+000000 thread+000B40 15 gil SLEEP 00F1F 025 00000 000 00003004 netisr_servers+000000 thread+000A80 14 gil SLEEP 00E1D 025 00000 000 00003004 netisr_servers+000000 thread+0009C0 13 gil SLEEP 00D1B 025 00000 000 00003004 netisr_servers+000000 KDB(4)> ttid 001D9 print thread with tid 0x1d9 SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+0000C0 1 init SLEEP 001D9 03C 000 00000400 NAME................ init FLAGS............... WAKEONSIG WTYPE............... WEVENT ............stackp64 :00000000 ..............stackp :2FF22DC0 ...............state :00000003 ...............wtype :00000001 .............suspend :00000001 ...............flags :00000400 ..............atomic :00000000 DATA................ ...............procp :E3000100 <proc+000100> ...............userp :2FF3B6C0 <__ublock+0002C0> ............uthreadp :2FF3B400 <__ublock+000000> THREAD LINK......... ..........prevthread :E60000C0 <thread+0000C0> ..........nextthread :E60000C0 <thread+0000C0> SLEEP LOCK......... ............ulock64 :00000000 ..............ulock :00000000 ...............wchan :00000000 ..............wchan1 :00000000 ...........wchan1sid :00000000 ........wchan1offset :01AB5A58 (4)> more (^C to quit) ? continue ..............wchan2 :00000000 ..............swchan :00000000 ...........eventlist :00000000 ..............result :00000000 .............polevel :000000AF .............pevent :00000000 .............wevent :00000004 ..............slist :00000000 ...........lockcount :00000000 DISPATCH............ ...............ticks :00000000 ...............prior :E60000C0 ................next :E60000C0 ...............synch :FFFFFFFF ..............dispct :000008F6 ...............fpuct :00000000 SCHEDULER........... ...............cpuid :FFFFFFFF ..............scpuid :FFFFFFFF ............affinity :00000001 .................pri :0000003C ..............policy :00000000 .................cpu :00000000 .............lockpri :0000003D .............wakepri :0000007F ................time :000000FF .............sav_pri :0000003C SIGNAL.............. ..............cursig :00000000 ......(pending) sig : ............sigmask : ...............scp64 :00000000 .................scp :00000000 MISC................ ............graphics :00000000 ..............cancel :00000000 (4)> more (^C to quit) ? continue ...........lockowner :E60042C0 .............boosted :00000000 ..............tsleep :FFFFFFFF ..........userdata64 :00000000 ............userdata :00000000
The rq subcommand prints run queues, lq subcommand prints lock queues, and sq subcommand prints sleep queues. A specific queue may be displayed.
KDB(0)> rq print run queues BUCKET HEAD COUNT thread_run+000100 65 thread+009060 1 thread_run+000104 66 thread+008660 4 thread_run+000108 67 thread+001D60 5 thread_run+0001FC 128 thread+000140 2 KDB(0)> rq 67 print run queue slot 67 RUNQ ENTRY( 67): thread_run+000108 SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+001D60 47 ps RUN 02FF7 042 001 00000000 thread+0071C0 182 diff RUN 0B6ED 042 005 00000000 thread+005460 135 cpio RUN 08773 042 001 00000000 thread+004060 103 ed RUN 06761 042 001 00000000 thread+004100 104 nroff RUN 068D7 042 002 00000000 KDB(0)> lq print lock queues BUCKET HEAD COUNT lockhsque+0000D0 53 thread+0B04C0 31 lockhsque+0001FC 128 thread+000000 1 KDB(0)> lq 53 print lock queue slot 53 LOCKHSQUE ENTRY( 53): lockhsque+0000D0 SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN thread+0B04C0 3761 ksh SLEEP EB14F 04A 01D 00000000 09AB9410 lockhsque+0000D0 thread+093CC0 3153 renamer SLEEP C5175 03D 003 00000000 09AB9410 lockhsque+0000D0 thread+074280 2478 renamer SLEEP 9AEF9 03D 003 00000000 09AB9410 lockhsque+0000D0 ... thread+088740 2911 ksh SLEEP B5FB5 03F 006 00000000 09AB9410 lockhsque+0000D0 thread+029DC0 893 inetd SLEEP 37DB7 03C 000 00000000 09AB9410 lockhsque+0000D0 thread+0B4E40 3859 ksh SLEEP F139F 04A 01D 00000000 09AB9410 lockhsque+0000D0 KDB(0)>
The u subcommand prints the u-block of the current process, or the specified one. Argument is given to identify a process/thread u block.
Usage: u [-ad] [-cr] [-f] [-s] [-ru] [-t] [-ut] [-64] <slot/eaddr>
KDB(0)> u -ut print current user thread block User thread context [2FF3B400]: save.... @ 2FF3B400 fpr..... @ 2FF3B550 Uthread System call state: msr64......00000000 msr........0000D0B0 errnopp64..00000000 errnopp....200FEFE8 error......00 scsave[0]..2004A474 scsave[1]..00000020 scsave[2]..20007B48 scsave[3]..2FF22AA0 scsave[4]..00000014 scsave[5]..20006B68 scsave[6]..2004A7B4 scsave[7]..2004A474 kstack.....2FF3B400 audsvc.....00000000 flags: Uthread Miscellaneous stuff: fstid.....00000000 ioctlrv...00000000 selchn....00000000 link......00000000 loginfo...00000000 fselchn...00000000 selbuc........0000 context64.00000000 context...00000000 sigssz64..00000000 sigssz....00000000 stkb64....00000000 stkb......00000000 jfscr.....00000000 Uthread Signal management: sigsp64...00000000 sigsp.....00000000 code......00000000 oldmask...0000000000000000 Thread timers: timer[0].................00000000 KDB(0)> u -64 print current 64-bit user part of ublock 64-bit process context [2FF7D000]: stab.......... @ 2FF7D000 STAB: esid vsid esid vsid 0 09000000000000B0 000000000714E000 1 0000000000000000 0000000000000000 16 00000000200000B0 000000000AA75000 17 0000000000000000 0000000000000000 80 09001000A00000B0 000000000CA99000 81 0000000000000000 0000000000000000 104 00000000D00000B0 000000000D95B000 105 0000000000000000 0000000000000000 128 00000001000000B0 0000000004288000 129 0000000000000000 0000000000000000 136 00000001100000B0 000000000C298000 137 0000000000000000 0000000000000000 160 09002001400000B0 000000000E15C000 161 08002001400000B0 0000000008290000 248 09FFFFFFF00000B0 0000000002945000 249 08FFFFFFF00000B0 0000000001A83000 250 0FFFFFFFF00000B0 000000000BA97000 251 0000000000000000 0000000000000000 254 0000000000000000 0000000000000000 255 0000000000000000 0000000000000000 stablock...... @ 2FF7E000 stablock.........00000000 mstext.mst64.. @ 2FF7E008 mstext.remaps. @ 2FF7E140 SNODE... @ 2FF7E3C8 origin...28020000 freeind..FFFFFFFF nextind..00000002 maxind...0006DD82 size.....00000094 UNODE... @ 2FF7E3E0 origin...2BFA1000 freeind..FFFFFFFF nextind..0000000E maxind...000D4393 size.....0000004C maxbreak...00000001100005B8 minbreak...00000001100005B8 maxdata....0000000000000000 exitexec...00000000 brkseg.....00000011 stkseg.....FFFFFFFF KDB(0)> u -f 18 print file decriptor table of thread slot 18 fdfree[0].00000000 fdfree[1].00000000 fdfree[2].00000000 maxofile..00000008 freefile..00000000 fd_lock...2FF3C188 slock/slockp 00000000 File descriptor table at..2FF3C1A0: fd 3 fp..100000C0 count..00000000 flags. ALLOCATED fd 4 fp..10000180 count..00000001 flags. ALLOCATED fd 5 fp..100003C0 count..00000000 flags. ALLOCATED fd 6 fp..100005A0 count..00000000 flags. ALLOCATED fd 7 fp..10000600 count..00000000 flags. FDLOCK ALLOCATED Rest of File Descriptor Table empty or paged out.