From owner-svn-src-head@freebsd.org Fri Feb 23 22:59:27 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 03A2CF27EAD; Fri, 23 Feb 2018 22:59:27 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from mx2.catspoiler.org (mx2.catspoiler.org [IPv6:2607:f740:16::d18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "amnesiac", Issuer "amnesiac" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 981337DBB7; Fri, 23 Feb 2018 22:59:26 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org ([76.212.85.177]) by mx2.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1NN08sj005143 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 23 Feb 2018 23:00:10 GMT (envelope-from truckman@FreeBSD.org) Received: from mousie.catspoiler.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1NMxHds025380 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 23 Feb 2018 14:59:17 -0800 (PST) (envelope-from truckman@FreeBSD.org) Date: Fri, 23 Feb 2018 14:59:11 -0800 (PST) From: Don Lewis Subject: Re: svn commit: r329875 - head/sys/kern To: Rick Macklem cc: Konstantin Belousov , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" In-Reply-To: Message-ID: References: <201802231826.w1NIQVqr084972@repo.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Feb 2018 22:59:27 -0000 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.