ULE Status.
Norikatsu Shigemura
nork at FreeBSD.org
Sun Jun 5 13:36:45 GMT 2005
On Sat, 4 Jun 2005 05:25:33 -0400 (EDT)
Jeff Roberson <jroberson at chesapeake.net> wrote:
> I just fixed what should be the last ULE+KSE+PREEMPTION bug. Please let
> me know if you run into any problems with it, preferably with a seperate
> mail to me as I'm more likely to see this than one which is cc'd to
> current at .
Wow! that's cool!
I tried to 'nice -20 make -j1024 buildworld' with
SCHED_ULE and PREEMPTION kernel options. I contacted a
panic like following, and sorry, I cannot get a crash dump.
I think that SCHED_ULE got more robustness.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FreeBSD 6.0-CURRENT #3: Sun Jun 5 20:15:37 JST 2005
nork at nadesico.ninth-nine.com:/usr/obj/usr/src/sys/NADESICO
(snip)
CPU: Intel(R) Pentium(R) III CPU family 1133MHz (1129.09-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x6b1 Stepping = 1
Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
real memory = 1610547200 (1535 MB)
avail memory = 1568817152 (1496 MB)
ACPI APIC Table: <VIA694 AWRDACPI>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
(snip)
FreeBSD/i386 (nadesico.ninth-nine.com) (dcons)
login: info: [drm] Loading R200 Microcode
[thread pid 36 tid 100021 ]
Stopped at sched_add+0xc: movl 0x150(%eax),%ebx
db> where
Tracing pid 36 tid 100021 td 0xc2c0a320
sched_add(0,0,c0619617,c6521af0,34) at sched_add+0xc
setrunqueue(c6521af0,0,c6521c44,c6521af0,c6521af0) at setrunqueue+0x178
adjustrunqueue(c6521af0,34,0,34c57a00,c2c0a320) at adjustrunqueue+0xd1
sched_thread_priority(c6521af0,34,e4355c30,c04c7f9e,c6521af0) at sched_thread_priority+0xb4
sched_lend_prio(c6521af0,34,e4355c30,c0490434,c04b3e80) at sched_lend_prio+0x1d
propagate_priority(c2c0a320,c2c0a320,0,0,0) at propagate_priority+0x4e
turnstile_wait(c06d0b60,c6521af0,c06d0b60,4,6) at turnstile_wait+0x34d
_mtx_lock_sleep(c06d0b60,c2c0a320,0,0,0) at _mtx_lock_sleep+0x111
softclock(0,0,0,0,0) at softclock+0x272
ithread_loop(c2c59980,e4355d38,fefffeff,fbffffff,fffffbff) at ithread_loop+0x1a8
fork_exit(c0480c50,c2c59980,e4355d38) at fork_exit+0x80
fork_trampoline() at fork_trampoline+0x8
--- trap 0x1, eip = 0, esp = 0xe4355d6c, ebp = 0 ---
db> show pcpu 0
cpuid = 0
curthread = 0xc2c0a320: pid 36 "swi4: clock sio"
curpcb = 0xe4355d90
fpcurthread = none
idlethread = 0xc2c097d0: pid 12 "idle: cpu0"
APIC ID = 0
currentldt = 0x50
db> show pcpu 1
cpuid = 1
curthread = 0xc6509960: pid 62526 "make"
curpcb = 0xf9950d90
fpcurthread = none
idlethread = 0xc2c09640: pid 11 "idle: cpu1"
APIC ID = 1
currentldt = 0x50
db> call doadump()
Dumping 1535 MB
16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320 336 352 368[dcons disconnected (get ptr failed)]
[dcons disconnected (read header failed)]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$ nm /boot/kernel/kernel.debug | grep sched_add
c04b3eb0 T sched_add
$ addr2line -e /boot/kernel/kernel.debug 0xc04b3ebc
/usr/src/sys/kern/sched_ule.c:1745
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void
sched_add(struct thread *td, int flags)
{
(snip)
CTR5(KTR_SCHED, "sched_add: %p(%s) prio %d by %p(%s)",
td, td->td_proc->p_comm, td->td_priority, curthread,
curthread->td_proc->p_comm);
mtx_assert(&sched_lock, MA_OWNED);
--> ke = td->td_kse;
kg = td->td_ksegrp;
canmigrate = 1;
preemptive = !(flags & SRQ_YIELDING);
(snip)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
More information about the freebsd-current
mailing list