ULE problems on HTT SMP

John Baldwin jhb at FreeBSD.org
Tue Jul 1 11:27:47 PDT 2003


On 28-Jun-2003 Jeff Roberson wrote:
> On Fri, 27 Jun 2003, John Baldwin wrote:
> 
>>
>> On 27-Jun-2003 Andrew Gallatin wrote:
>> >
>> > Jeff Roberson writes:
>> >  >
>> >  > Can you call kseq_print(0) and kseq_print(1) from ddb?
>> >  >
>> >
>> > I found a different problem which is nearly as interesting.
>> > Note that ps thinks sysctl is on cpu 255...
>>
>> #define NOCPU   0xff            /* For when we aren't on a CPU. (SMP) */
>>
>> So that isn't but so interesting. :)
> 
> The problem is that the logical cpu halting code does not put the halted
> CPU in the stopped cpus set.  ULE has no way of knowing that it can not
> migrate a thread to this cpu.  I'd prefer it if you could make this change
> John, but I can certainly do it if you're busy.

Probably we should add a flags field to struct pcpu and add a flag meaning
that a CPU is disabled and magic code to choosethread() or some other
appropriate place that doesn't schedule real threads on a disabled CPU.
The logical CPU halting code could then be changed to set this flag on
the appropriate CPUs.

> Thanks,
> Jeff
> 
>>
>> > db> ps
>> >   pid   proc     addr    uid  ppid  pgrp  flag   stat  wmesg    wchan  cmd
>> >    62 c41ec000 d8d9a000    0    60    42 0004002 [CPU 255] sysctl
>> >    60 c4175d3c d7bcc000    0    58    42 0000002 [SLP]wait 0xc4175d3c] sh
>> >    58 c4175790 d7ba2000    0    51    42 0000002 [SLP]wait 0xc4175790] sh
>> >    51 c4175b58 d7bcb000    0    42    42 0000002 [SLP]wait 0xc4175b58] sh
>> >    42 c4025b58 d7b66000    0     1    42 0004002 [SLP]wait 0xc4025b58] sh
>> >    41 c4025d3c d7b67000    0     0     0 0000204 [SLP]nfsidl 0xc03f9b8c] nfsiod 3
>> >    40 c4173000 d7b96000    0     0     0 0000204 [SLP]nfsidl 0xc03f9b88] nfsiod 2
>> >    39 c41731e4 d7b97000    0     0     0 0000204 [SLP]nfsidl 0xc03f9b84] nfsiod 1
>> >    38 c41733c8 d7b98000    0     0     0 0000204 [SLP]nfsidl 0xc03f9b80] nfsiod 0
>> >    37 c41735ac d7b99000    0     0     0 0000204 [SLP]vlruwt 0xc41735ac] vnlru
>> >    36 c4173790 d7b9a000    0     0     0 0000204 [SLP]syncer 0xc03cacc0] syncer
>> >    35 c4173974 d7b9b000    0     0     0 0000204 [SLP]psleep 0xc03f7e3c] bufdaemon
>> >    34 c4173b58 d7b9c000    0     0     0 000020c [SLP]pgzero 0xc03ffc08] pagezero
>> >     9 c4173d3c d7b9d000    0     0     0 0000204 [SLP]psleep 0xc03ffc34] vmdaemon
>> >     8 c4175000 d7b9e000    0     0     0 0000204 [SLP]psleep 0xc03ffc20] pagedaemon
>> >    33 c41751e4 d7b9f000    0     0     0 0000204 new [IWAIT] irq8: rtc
>> >    32 c3f795ac d7b2b000    0     0     0 0000204 new [IWAIT] irq0: clk
>> >    31 c3f79790 d7b2c000    0     0     0 0000204 [IWAIT] irq6: fdc0
>> >    30 c3f79974 d7b2d000    0     0     0 0000204 new [IWAIT] irq7: ppc0
>> >    29 c3f79b58 d7b2e000    0     0     0 0000204 new [IWAIT] irq3: sio1
>> >    28 c3f79d3c d7b2f000    0     0     0 0000204 new [IWAIT] irq4: sio0
>> >    27 c4025000 d7b39000    0     0     0 0000204 [IWAIT] swi0: tty:sio
>> >    26 c40251e4 d7b3a000    0     0     0 0000204 new [IWAIT] irq11: em0
>> >    25 c40253c8 d7b3b000    0     0     0 0000204 [IWAIT] irq15: ata1
>> >    24 c40255ac d7b3c000    0     0     0 0000204 [IWAIT] irq14: ata0
>> >    23 c4025790 d7b3d000    0     0     0 0000204 new [IWAIT] irq5: fxp0
>> >     7 c4025974 d7b3e000    0     0     0 0000204 [SLP]actask 0xc04e40cc] acpi_task2
>> >     6 c150a1e4 d6929000    0     0     0 0000204 [SLP]actask 0xc04e40cc] acpi_task1
>> >     5 c150a3c8 d692a000    0     0     0 0000204 [SLP]actask 0xc04e40cc] acpi_task0
>> >    22 c150a5ac d692b000    0     0     0 0000204 new [IWAIT] irq9: acpi0
>> >    21 c150a790 d692c000    0     0     0 0000204 [IWAIT] swi3: cambio
>> >    20 c150a974 d692d000    0     0     0 0000204 new [IWAIT] swi2: camnet
>> >    19 c150ab58 d692e000    0     0     0 0000204 new [IWAIT] swi5:+
>> >    18 c150ad3c d6956000    0     0     0 0000204 new [IWAIT] swi6: task queue
>> >    17 c3f79000 d7b28000    0     0     0 0000204 [IWAIT] swi6: acpitaskq
>> >    16 c3f791e4 d7b29000    0     0     0 0000204 [SLP]sleep 0xc03b5dc0] random
>> >     4 c3f793c8 d7b2a000    0     0     0 0000204 [SLP]- 0xc03c41fc] g_down
>> >     3 c1503000 d68d2000    0     0     0 0000204 [SLP]- 0xc03c41f8] g_up
>> >     2 c15031e4 d6921000    0     0     0 0000204 [SLP]- 0xc03c41f0] g_event
>> >    15 c15033c8 d6922000    0     0     0 0000204 new [IWAIT] swi4: vm
>> >    14 c15035ac d6923000    0     0     0 000020c [IWAIT] swi7: tty:sio clock
>> >    13 c1503790 d6924000    0     0     0 0000204 new [IWAIT] swi1: net
>> >    12 c1503974 d6925000    0     0     0 000020c [CPU 0] idle: cpu0
>> >    11 c1503b58 d6926000    0     0     0 000020c [CPU 1] idle: cpu1
>> >     1 c1503d3c d6927000    0     0     1 0004200 [SLP]wait 0xc1503d3c] init
>> >    10 c150a000 d6928000    0     0     0 0000204 [CV]ktrace 0xc03c7794] ktrace
>> >     0 c03c42c0 c0513000    0     0     0 0000200 [SLP]sched 0xc03c42c0] swapper
>> > db> sho pcpu
>> > cpuid        = 0
>> > curthread    = 0xc1504980: pid 12 "idle: cpu0"
>> > curpcb       = 0xd68edda0
>> > fpcurthread  = none
>> > idlethread   = 0xc1504980: pid 12 "idle: cpu0"
>> > currentldt   = 0x28
>> > spin locks held:
>> > db> sho pcpu 1
>> > cpuid        = 1
>> > curthread    = 0xc1504850: pid 11 "idle: cpu1"
>> > curpcb       = 0xd68eada0
>> > fpcurthread  = none
>> > idlethread   = 0xc1504850: pid 11 "idle: cpu1"
>> > currentldt   = 0x28
>> > spin locks held:
>> > db> t 62
>> > mi_switch(c4177720,df,c036cbb1,ef,10000) at mi_switch+0x210
>> > ast(d7bb8d48) at ast+0x3a0
>> > doreti_ast() at doreti_ast+0x17
>> >
>> >
>> > I hope that helps..
>> >
>> > Drew
>> > _______________________________________________
>> > freebsd-current at freebsd.org mailing list
>> > http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> > To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
>>
>> --
>>
>> John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
>> "Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/
>> _______________________________________________
>> freebsd-current at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
>>
> 

-- 

John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


More information about the freebsd-current mailing list