From owner-freebsd-stable@FreeBSD.ORG Tue Feb 16 17:59:49 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 09B7C1065698 for ; Tue, 16 Feb 2010 17:59:49 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from qmta12.emeryville.ca.mail.comcast.net (qmta12.emeryville.ca.mail.comcast.net [76.96.27.227]) by mx1.freebsd.org (Postfix) with ESMTP id DFCF48FC0A for ; Tue, 16 Feb 2010 17:59:48 +0000 (UTC) Received: from omta10.emeryville.ca.mail.comcast.net ([76.96.30.28]) by qmta12.emeryville.ca.mail.comcast.net with comcast id ieW41d0020cQ2SLAChzo4M; Tue, 16 Feb 2010 17:59:49 +0000 Received: from koitsu.dyndns.org ([98.248.46.159]) by omta10.emeryville.ca.mail.comcast.net with comcast id ihzn1d00N3S48mS8WhzoWW; Tue, 16 Feb 2010 17:59:48 +0000 Received: by icarus.home.lan (Postfix, from userid 1000) id D672D1E301A; Tue, 16 Feb 2010 09:59:46 -0800 (PST) Date: Tue, 16 Feb 2010 09:59:46 -0800 From: Jeremy Chadwick To: freebsd-stable@freebsd.org Message-ID: <20100216175946.GA98082@icarus.home.lan> References: <20100215090756.GA54764@icarus.home.lan> <20100215105000.101326yj01j0f64g@webmail.leidinger.net> <20100215122744.GA57382@icarus.home.lan> <20100215161105.14071eiflhc9le68@webmail.leidinger.net> <4B79BA9C.3020402@quip.cz> <4B7AD0A3.9080701@barryp.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B7AD0A3.9080701@barryp.org> User-Agent: Mutt/1.5.20 (2009-06-14) Subject: Re: ZFS tuning [was: hardware for home use large storage] X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2010 17:59:49 -0000 On Tue, Feb 16, 2010 at 11:06:43AM -0600, Barry Pederson wrote: > On 2/15/10 7:49 PM, jhell wrote: > > >As I make final modifications to the script I will keep the below URLs > >updated and welcome any bug reports or modification requests to me > >personally. > > > >Here is the URLs: > >http://jhell.googlecode.com/files/arc_summary.pl > >http://jhell.googlecode.com/files/arc_summary.pl.asc > > Nice. How about including relevant lines from /boot/loader.conf, > maybe something like this tacked on the end of the script (excuse my > Perl, I'm a Python guy). > > ---- > #### Loader Settings ############# > open(LOADER, '/boot/loader.conf'); > print "\n/boot/loader.conf settings:\n"; > while (){ > chomp; > if (/^\s*(zfs|vfs\.zfs|vm\.kmem)/){ > print "\t$_\n"; > } > } > ---- > > Yes, it should more or less duplicate the sysctl values, but it may > make it more obvious where the settings are coming from, or if the > user has bad or ignored settings Major problems with the above code: 1) Opens /boot/loader.conf for rw access; should be read-only 2) Makes the assumption /boot/loader.conf exists 3) Does not close the fd 4) Excessively quotes variables for no justified reason 5) Makes some bad assumptions about the contents of the file (ex. comments with the word "zfs" in them would match) The code should really be something like what's below. This should be much more manageable as well (@tunables that is), although I always worry when using grep()... -- | Jeremy Chadwick jdc@parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB | #!/usr/local/bin/perl my @tunables = qw( vfs\.zfs\..+ vm\.kmem_size.* ); my $loaderconf = "/boot/loader.conf"; if (-e $loaderconf) { open(FH, "<", $loaderconf) or die; while () { # Get rid of trailing newlines and preceding spaces. chomp; s/^\s+//g; # Match against any key=value pair, and then see if the # key portion matches against any regex string in @tunables. if (/^([\w\.]+)=.+/) { if (grep $1 =~ /$_/, @tunables) { print "\t", $_ , "\n"; } } } close(FH); }