From owner-freebsd-stable@FreeBSD.ORG Wed Sep 4 14:11:21 2013 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 72EE5B48; Wed, 4 Sep 2013 14:11:21 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4C87D26EA; Wed, 4 Sep 2013 14:11:21 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 4B435B9AE; Wed, 4 Sep 2013 10:11:20 -0400 (EDT) From: John Baldwin To: freebsd-stable@freebsd.org Subject: Re: unexpected idprio 31 behavior on 9.2-BETA2 and 9.2-RC1 Date: Wed, 4 Sep 2013 09:58:48 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <1375737316.96778.10.camel@firkin.mischler.com> <5203A90D.6020008@vangyzen.net> <5203AE08.30504@vangyzen.net> In-Reply-To: <5203AE08.30504@vangyzen.net> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201309040958.48377.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Wed, 04 Sep 2013 10:11:20 -0400 (EDT) Cc: J David , Eric van Gyzen , avg@freebsd.org, dave@mischler.com X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Sep 2013 14:11:21 -0000 On Thursday, August 08, 2013 10:41:12 am Eric van Gyzen wrote: > On 08/08/2013 09:19, Eric van Gyzen wrote: > > On 08/06/2013 14:23, J David wrote: > >> On Tue, Aug 6, 2013 at 1:59 PM, Eric van Gyzen wrote: > >>>> on an otherwise idle amd64 system with 4 CPUs. The first command in the > >>>> build.log file: > >>>> > >>>> rm -rf /usr/obj/home/freebsd/tmp > >>>> > >>>> took over three minutes. It should have taken about three /seconds/. > >>>> > >>>> "uptime" reported a load average of around 1.00. > >>>> "top" showed no threads (user or kernel) using CPU. > >>>> "iostat" showed an average of less than 20 tps on ada0. > >>>> "rm" was usually in the RUN state. > >> We are looking at something similar. Would you be able to try to > >> reproduce it using a kernel with: > >> > >> nooptions SCHED_ULE > >> options SCHED_4BSD > >> > >> to see if it makes a difference? It seems to, but the problem is > >> inconsistent enough that I can't be sure. > > The 4BSD scheduler does //not// exhibit this problem. I tested with the > > latest releng/9.2 (r254054) and an otherwise GENERIC config. > > To be thorough, I built a GENERIC kernel at the same rev, and it still > exhibits the problem. Please try this change: Index: sched_ule.c =================================================================== --- sched_ule.c (revision 255020) +++ sched_ule.c (working copy) @@ -243,7 +243,7 @@ struct tdq { int tdq_transferable; /* Transferable thread count. */ short tdq_switchcnt; /* Switches this tick. */ short tdq_oldswitchcnt; /* Switches last tick. */ - u_char tdq_lowpri; /* Lowest priority thread. */ + u_short tdq_lowpri; /* Lowest priority thread. */ u_char tdq_ipipending; /* IPI pending. */ u_char tdq_idx; /* Current insert index. */ u_char tdq_ridx; /* Current removal index. */ @@ -2323,7 +2323,7 @@ sched_choose(void) tdq->tdq_lowpri = td->td_priority; return (td); } - tdq->tdq_lowpri = PRI_MAX_IDLE; + tdq->tdq_lowpri = PRI_MAX_IDLE + 1; return (PCPU_GET(idlethread)); } -- John Baldwin