Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Feb 2018 14:59:11 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        Konstantin Belousov <kib@FreeBSD.org>, "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:  <tkrat.6f7c4ea16dc42fad@FreeBSD.org>
In-Reply-To: <YQBPR0101MB10427959074A57365EA2B4D5DDCC0@YQBPR0101MB1042.CANPRD01.PROD.OUTLOOK.COM>
References:  <201802231826.w1NIQVqr084972@repo.freebsd.org> <YQBPR0101MB10427959074A57365EA2B4D5DDCC0@YQBPR0101MB1042.CANPRD01.PROD.OUTLOOK.COM>

next in thread | previous in thread | raw e-mail | index | archive | help
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.




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