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