Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Jul 2007 01:01:47 +0200
From:      Rene Ladan <r.c.ladan@gmail.com>
To:        Jeff Roberson <jroberson@chesapeake.net>
Cc:        current@freebsd.org
Subject:   Re: ULE/SCHED_SMP diff for 7.0
Message-ID:  <469E9BDB.7020500@gmail.com>
In-Reply-To: <20070718150613.W561@10.0.0.1>
References:  <20070716233030.D92541@10.0.0.1> <469E83F8.3090103@gmail.com> <20070718142649.Y561@10.0.0.1> <469E897B.7080100@gmail.com> <20070718150613.W561@10.0.0.1>

next in thread | previous in thread | raw e-mail | index | archive | help
Jeff Roberson schreef:
> 
> On Wed, 18 Jul 2007, Rene Ladan wrote:
> 
>> Jeff Roberson schreef:
>>>
>>> On Wed, 18 Jul 2007, Rene Ladan wrote:
>>>
>>>> Jeff Roberson schreef:
>>>>> http://people.freebsd.org/~jeff/ule.diff
>>>>>
>>>>> This patch is scheduled for inclusion in 7.0.  I would like anyone who
>>>>> cares to run it to validate that it does not create any stability or
>>>>> performance regression over the existing ULE.  This patch replaces ULE
>>>>> with SCHED_SMP, which will now no longer exist as a seperate fork of
>>>>> ULE.
>>>> [..]
>>>>
>>>> I cvsupped this evening at 19:34 UTC.  The new ULE scheduler works fine
>>>> in single-user mode (it survives "make kernel"), but when I go to
>>>> multi-user mode I get a "sched_add: trying to run inhibited thread"
>>>> panic (2 vmcores lost due to fsck :( )
>>>
>>> Can you get me a backtrace?  You can enable KDB and DDB in your kernel
>>> along with INVARIANTS.  Just type 'tr' and record the function names
>>>
>>
>> I found a file #165060 in /var/lost+found .  kgdb didn't eat it, but
>> strings
>> could still extract the attached backtrace.  In case you want to
>> recompile
>> the kernel, it is compiled with -O1 -pipe -march=prescott
>> -fno-strict-aliasing
> 
> Can you run gdb kernel.debug from your compile directory.  Then type:
> 
> list *(sched_switch+0x26e)
> 
> I need to know the line number of that call.

Sure:
root@195-241-221-201:/usr/obj/usr/src/sys/RENE#gdb kernel.debug
(gdb) list *(sched_switch+0x26e)
0xc051c7b0 is in sched_switch (/usr/src/sys/kern/sched_ule.c:1761).
1756                    /* XXX This is bogus.  What if the thread is locked elsewhere? */
1757                    td->td_lock = TDQ_LOCKPTR(tdq);
1758                    td->td_sched->ts_cpu = cpuid;
1759                    tdq_add(tdq, td, SRQ_YIELDING);
1760            }
1761            newtd = choosethread();
1762            /*
1763             * Call the MD code to switch contexts if necessary.
1764             */
1765            if (td != newtd) {

This on an i386.

Regards,
Rene
-- 
GPG fingerprint = E738 5471 D185 7013 0EE0  4FC8 3C1D 6F83 12E1 84F6
(subkeys.pgp.net)

"It won't fit on the line."
		-- me, 2001





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?469E9BDB.7020500>