From owner-freebsd-arch@FreeBSD.ORG Thu Aug 11 15:36:17 2005 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5265516A430; Thu, 11 Aug 2005 15:36:16 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: from mv.twc.weather.com (mv.twc.weather.com [65.212.71.225]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1D0F43D46; Thu, 11 Aug 2005 15:36:15 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: from [10.50.40.201] (Not Verified[65.202.103.25]) by mv.twc.weather.com with NetIQ MailMarshal (v6, 0, 3, 8) id ; Thu, 11 Aug 2005 11:50:47 -0400 From: John Baldwin To: Scott Long Date: Thu, 11 Aug 2005 11:21:45 -0400 User-Agent: KMail/1.8 References: <42F9ECF2.8080809@freebsd.org> <200508101638.27087.jhb@FreeBSD.org> <42FA6E0E.4070205@samsco.org> In-Reply-To: <42FA6E0E.4070205@samsco.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200508111121.46546.jhb@FreeBSD.org> Cc: frank@exit.com, Andre Oppermann , freebsd-arch@freebsd.org Subject: Re: Special schedulers, one CPU only kernel, one only userland X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Aug 2005 15:36:17 -0000 On Wednesday 10 August 2005 05:13 pm, Scott Long wrote: > John Baldwin wrote: > > On Wednesday 10 August 2005 04:10 pm, Frank Mayhar wrote: > >>On Wed, 2005-08-10 at 09:11 -0400, John Baldwin wrote: > >>>I think this is the model that BSD/OS employed > >>>for SMP in its 4.x series before they did their version of SMPng. > >> > >>I didn't grunge around in the scheduler (much), but as far as I'm aware > >>BSD/OS 4.x used the Big Giant Lock mechanism just as FreeBSD did, and > >>for the same reason. > > > > I believe that at some point during the 4.x series they added a scheduler > > lock that covered just enough to allow threads that weren't asleep in the > > kernel to be switched to without require the big giant lock and that it > > was a pretty decent performance win over the earlier single BGL ala > > FreeBSD 4.x. > > So when a syscall is made on an AP, does it get serviced on the same AP > (assuming that the lock is available and no sleeping is needed), or does > it get serviced my the BSP? Where kernel threads explicitely pinned to > the BSP? Was the APIC explicitely programmed to deliver only to the > BSP? I think the AP would block on the BGL in the stuff BSD/OS did, but Schimmel points out that that can be non-optimal (SMP in 4.x was basically about the worst possible idea according to Schimmel). A better implementation of master/slave is for all syscalls, traps, and interrupts to run only on the BSP and have the APs just run in userland. I.e. they could take over a thread that had made it to userret (when you get to userret, you would mark the thread as a user thread somwhow) and when a thread running on an AP wanted to enter the kernel (syscall or trap), it would have to stick the thread on the runqueue for the BSP and go look for another user thread. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org