Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Feb 2018 01:21:03 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Don Lewis <truckman@FreeBSD.org>
Cc:        Rick Macklem <rmacklem@uoguelph.ca>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r329875 - head/sys/kern
Message-ID:  <20180223232103.GK94212@kib.kiev.ua>
In-Reply-To: <tkrat.6f7c4ea16dc42fad@FreeBSD.org>
References:  <201802231826.w1NIQVqr084972@repo.freebsd.org> <YQBPR0101MB10427959074A57365EA2B4D5DDCC0@YQBPR0101MB1042.CANPRD01.PROD.OUTLOOK.COM> <tkrat.6f7c4ea16dc42fad@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Feb 23, 2018 at 02:59:11PM -0800, Don Lewis wrote:
> On 23 Feb, Rick Macklem wrote:
> > Konstantin Belousov wrote:
> >>Author: kib
> >>Date: Fri Feb 23 18:26:31 2018
> >>New Revision: 329875
> >>URL: https://svnweb.freebsd.org/changeset/base/329875
> >>
> >>Log:
> >>  Restore UP build.
> >>
> >>  Reviewed by:  truckman
> >>  Sponsored by: The FreeBSD Foundation
> >>
> >>Modified:
> >>  head/sys/kern/sched_ule.c
> >>
> >>Modified: head/sys/kern/sched_ule.c
> >>==============================================================================
> >>--- head/sys/kern/sched_ule.c   Fri Feb 23 18:18:42 2018        (r329874)
> >>+++ head/sys/kern/sched_ule.c   Fri Feb 23 18:26:31 2018        (r329875)
> >>@@ -1864,6 +1864,7 @@ sched_lend_user_prio(struct thread *td, u_char prio)
> >>                td->td_flags |= TDF_NEEDRESCHED;
> >> }
> >>
> >>+#ifdef SMP
> >> /*
> >>  * This tdq is about to idle.  Try to steal a thread from another CPU before
> >>  * choosing the idle thread.
> >>@@ -1945,6 +1946,7 @@ tdq_trysteal(struct tdq *tdq)
> >>        }
> >>        spinlock_exit();
> >  >}
> >>+#endif
> >>
> >> /*
> >>  * Handle migration from sched_switch().  This happens only for
> >>@@ -2058,8 +2060,10 @@ sched_switch(struct thread *td, struct thread *newtd,
> >>                TDQ_LOCK(tdq);
> >>                mtx = thread_lock_block(td);
> >>                tdq_load_rem(tdq, td);
> >>+#ifdef SMP
> >>                if (tdq->tdq_load == 0)
> > Since the function isn't called for UP, should this "if" also check for ncpus > 1 by any chance?
> > (I know nothing about ULE, so please ignore this if it doesn't make sense;-)
> >>                        tdq_trysteal(tdq);
> >>+#endif
> >>        }
> >>
> >> #if (KTR_COMPILE & KTR_SCHED) != 0
> 
> That would probably be a microoptimization.  I think one of the tests at
> the top of tdq_trysteal() will cause an immediate return.  Basically
> you'd be eliminating an extraneous function call in the path to
> switching to the idle thread after you have already determined that you
> don't have any work to do.

Yes, smp_started is zero on UP.



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