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. _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"