Re: ULE Status.

From: Norikatsu Shigemura <nork_at_FreeBSD.org>
Date: Sun, 5 Jun 2005 22:36:38 +0900 (JST)
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)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Received on Sun Jun 05 2005 - 11:36:45 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:35 UTC