From owner-freebsd-arch@FreeBSD.ORG Fri Jul 25 02:30:21 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D3221065672 for ; Fri, 25 Jul 2008 02:30:21 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: from wa-out-1112.google.com (wa-out-1112.google.com [209.85.146.176]) by mx1.freebsd.org (Postfix) with ESMTP id 578F28FC14 for ; Fri, 25 Jul 2008 02:30:21 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: by wa-out-1112.google.com with SMTP id j4so1706064wah.3 for ; Thu, 24 Jul 2008 19:30:20 -0700 (PDT) Received: by 10.114.89.1 with SMTP id m1mr1387048wab.146.1216953020653; Thu, 24 Jul 2008 19:30:20 -0700 (PDT) Received: from ?10.0.1.199? ( [24.94.72.120]) by mx.google.com with ESMTPS id n37sm15385400wag.43.2008.07.24.19.30.17 (version=SSLv3 cipher=RC4-MD5); Thu, 24 Jul 2008 19:30:19 -0700 (PDT) Date: Thu, 24 Jul 2008 16:30:36 -1000 (HST) From: Jeff Roberson X-X-Sender: jroberson@desktop To: John Baldwin In-Reply-To: <200807211141.09387.jhb@freebsd.org> Message-ID: <20080724162733.B954@desktop> References: <20080718163231.B954@desktop> <200807211141.09387.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: attilio@freebsd.org, arch@freebsd.org, ivmaykov@gmail.com Subject: Re: witness performance improvements 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: Fri, 25 Jul 2008 02:30:21 -0000 On Mon, 21 Jul 2008, John Baldwin wrote: > On Friday 18 July 2008 10:41:58 pm Jeff Roberson wrote: >> Hello, >> >> I have a patch that improves witness performance available at: >> >> http://people.freebsd.org/~jeff/witness.diff >> >> This improvement comes at the cost of some significant space overhead. It >> changes the witness graph from a linked tree to a matrix based approach. >> Relationships can be quickly resolved with a table lookup. The table size >> is WITNESS_COUNT^2, or 1MB with the current count of 1024. > > Woo! Thanks for polishing this. > >> This patch also makes struct witness objects persistent even after the >> last lock using this name has been removed. This is helpful for short >> lived objects which may be created frequently. > > Originally, the idea was that if one had a LOR bug in a driver, one could > kldunload the driver and have WITNESS forget about any orders for the > driver's lock, fix the bug, and try again, but the short-lived names problem > is much more common in practice, and trying to remove info about a specific > lock class from the graph is a bit tenuous, so I think this is the better > approach going forward. > >> To reduce lock contention on SMP witness_checkorder() now runs without the >> w_mtx when there are no lock violations. I also cache a lock_list_entry >> in each thread as allocating these requires the w_mtx. The entry is >> disposed of at thread_exit(). > > Neat. > >> I'm mostly interested in hearing what people have to say about the space >> bloat. I believe it is in a commit ready state. > > I think the space usage is perfectly fine. Also, now that you malloc the > actual witness objects instead of putting them in the BSS (something that > should have been done anyway I think), I would make the number of witness > objects a loader tunable. Well, I'm glad there is a consensus that this is the right way forward. The state of the code is that there may be a bug in the dot output but I've not had any problems with the regular witness operation. There are still some style bugs in it. Attilio has expressed some interest in a full review and style clean-up. I'd like to get what I have now, minus the dot output, into svn. And then do a set of follow on commits to add back dot or Attilio's comma separated graph output that can be parsed to dot. Any objections to commiting this knowing it has some style bugs and a little work left? I'd like to get people testing the core functionality more. We've sat on this patch for a couple of years now as well. Thanks, Jeff > > -- > John Baldwin >