From owner-freebsd-arch@FreeBSD.ORG Wed Feb 18 15:26:09 2004 Return-Path: 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 0805016A4CE for ; Wed, 18 Feb 2004 15:26:09 -0800 (PST) Received: from mail.chesapeake.net (chesapeake.net [208.142.252.6]) by mx1.FreeBSD.org (Postfix) with ESMTP id A6A7643D1D for ; Wed, 18 Feb 2004 15:26:08 -0800 (PST) (envelope-from jroberson@mail.chesapeake.net) Received: from mail.chesapeake.net (localhost [127.0.0.1]) by mail.chesapeake.net (8.12.10/8.12.10) with ESMTP id i1INQ7XJ074540; Wed, 18 Feb 2004 18:26:07 -0500 (EST) (envelope-from jroberson@mail.chesapeake.net) Received: from localhost (jroberson@localhost)i1INQ6xe074521; Wed, 18 Feb 2004 18:26:07 -0500 (EST) (envelope-from jroberson@mail.chesapeake.net) Date: Wed, 18 Feb 2004 18:26:05 -0500 (EST) From: Jeff Roberson To: Doug Rabson In-Reply-To: <1077137806.28133.10.camel@herring.nlsystems.com> Message-ID: <20040218182136.S5430@mail.chesapeake.net> References: <1077137806.28133.10.camel@herring.nlsystems.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-arch@freebsd.org Subject: Re: Read Copy Update X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Feb 2004 23:26:09 -0000 On Wed, 18 Feb 2004, Doug Rabson wrote: > So, I was reading the latest installment of the SCO soap on slashdot > today (bizarre - they seem to be claiming that they own all code that > was ever linked to a System V kernel) and I ended up trying to figure > out exactly what this RCU thing is that they claim is infringing their > right to obtain money with menaces. > > I read one of the original papers at > http://www.rdrop.com/users/paulmck/paper/rclockpdcsproof.pdf and its a > surprisingly simple idea. Basically for certain data structures which > are read-mostly, you can make the entire read path lock-free at the > expense of making updates quite a bit more expensive. They claim that > its much faster than reader-writer locks both for light contention and > for heavy contention. > > I imagine that a FreeBSD implementation of RCU wouldn't actually be too > hard and it might be well worth it as an alternative way of managing > concurrency, e.g. for the routing cache and the name cache (and probably > lots of other things). > I've looked into this a bit myself. My general feeling is that it would not be terribly difficult to do, but I would prefer to start with stronger primitives and work our way into more efficient mechanisms. I say this for two reasons. First, as a general rule of optimizations, you only optimize the things that need it. I think we should wait and measure contention and then optimize things. Secondly, we need to get more confidence in the correctness of simpler mechanisms in most subsystems before we go to something more complex. It will be easier to move to RCU once a subsystem is already protected by mutexes. I think that this is a good path to go down, but I really don't think we're ready yet. I'd rather see energy spent protecting code than building more infrastructure. Cheers, Jeff