From owner-freebsd-threads@FreeBSD.ORG Sat Feb 19 15:39:24 2005 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E659016A4CE for ; Sat, 19 Feb 2005 15:39:24 +0000 (GMT) Received: from mail.ntplx.net (mail.ntplx.net [204.213.176.10]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7124543D31 for ; Sat, 19 Feb 2005 15:39:24 +0000 (GMT) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) j1JFdMuE008043; Sat, 19 Feb 2005 10:39:22 -0500 (EST) Date: Sat, 19 Feb 2005 10:39:21 -0500 (EST) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Kazuaki Oda In-Reply-To: <42173C82.7040408@highway.ne.jp> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; FORMAT=flowed Content-ID: X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.ntplx.net) cc: threads@freebsd.org Subject: Re: thread accounting in libpthread X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Daniel Eischen List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Feb 2005 15:39:25 -0000 On Sat, 19 Feb 2005, Kazuaki Oda wrote: > Daniel Eischen wrote: > > >On Sat, 19 Feb 2005, Kazuaki Oda wrote: > > > >>And while looking at thr_kern.c, I've had one more question. > >>In kse_switchout_thread, after calling thr_accounting thread is placed > >>at the tail of run queue or at the head of it according to > >>thread->slice_usec. > >>But in kse_check_completed, thread is just placed at the tail of run queue. > >>Is there any reason why thread is not placed at the head of run queue in > >>case of thread->slice_usec != -1? > >> > >> > > > >Because it already blocked and we don't want to needlessly > >switch out a currently running thread that hasn't used its > >quantum. > > Blocked? I think that completed threads are *not* blocked and they are > ready Blocked is past tense above. It _had_ blocked in the kernel and that gave other threads a chance to run. You don't add it to the head of the queue because that makes it unfair to the other threads that were in the queue. The default scheduling is SCHED_RR in libpthread and that is laid out by POSIX. > to run except for suspended. And, kse_check_completed could be called after > calling kse_wait. In this case there is currently no running thread. kse_check_completed() is called after kse_wait(). Do you have local changes that removed it? -- DE