From owner-freebsd-current@FreeBSD.ORG Wed Jun 23 01:25:15 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 23E6516A4CE; Wed, 23 Jun 2004 01:25:15 +0000 (GMT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id B4FA043D1F; Wed, 23 Jun 2004 01:25:14 +0000 (GMT) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.10/8.12.1) with ESMTP id i5N1P3on018376; Tue, 22 Jun 2004 21:25:03 -0400 (EDT) Date: Tue, 22 Jun 2004 21:25:03 -0400 (EDT) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: Julian Elischer In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-current@freebsd.org cc: Bosko Milekic Subject: Re: ithread priority question... X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: deischen@freebsd.org List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Jun 2004 01:25:15 -0000 On Tue, 22 Jun 2004, Julian Elischer wrote: > > On Tue, 22 Jun 2004, Bosko Milekic wrote: > > > > > I'm obviously talking nonsense below. Sorry. > > > > The real explanation is that they are put on a runqueue when executed: > > > > if (TD_AWAITING_INTR(td)) { > > CTR2(KTR_INTR, "%s: setrunqueue %d", __func__, p->p_pid); > > TD_CLR_IWAIT(td); > > setrunqueue(td); > > if (do_switch && > > (ctd->td_critnest == 1) ) { > > ... > > > > Sorry again! > > yes.. the question is.. does it make sense in a world with multiple > schedulers to multiply set the priority of each ithread to > (inumber * RQ_PPQ)? > > It happens to work with 4bsd and probably with ULE > but it wouldn't make a lot of sense with (say) a monte-carlo scheduler > that may not have run queues as such (such as Luigi did) or any > scheduler for which RQ_PPQ was not a constant. It seems the schedulers should need to know about whether threads are interrupt threads or not, but any priority boost for them should be hidden in the scheduler. I think the thread priority must reflect the fact that it is an ithread (or not) or else priority inheritence (or lending, whatever) isn't going to take ithread importance into consideration. It'd be nice to have only the schedulers deal with priority. One could then write a scheduler that uses priorities in the proper ordering (highest number = highest priority)! -- DE