From owner-freebsd-current@FreeBSD.ORG Thu Aug 23 19:50:15 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3A9BD1065670; Thu, 23 Aug 2012 19:50:15 +0000 (UTC) (envelope-from kris@pcbsd.org) Received: from mail.iXsystems.com (newknight.ixsystems.com [206.40.55.70]) by mx1.freebsd.org (Postfix) with ESMTP id B669F8FC1B; Thu, 23 Aug 2012 19:50:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.iXsystems.com (Postfix) with ESMTP id DFC061B25; Thu, 23 Aug 2012 12:50:13 -0700 (PDT) Received: from mail.iXsystems.com ([127.0.0.1]) by localhost (mail.ixsystems.com [127.0.0.1]) (maiad, port 10024) with ESMTP id 46394-06; Thu, 23 Aug 2012 12:50:13 -0700 (PDT) Received: from [192.168.0.182] (75-130-56-30.static.kgpt.tn.charter.com [75.130.56.30]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.iXsystems.com (Postfix) with ESMTPSA id D50831B23; Thu, 23 Aug 2012 12:50:12 -0700 (PDT) Message-ID: <50368973.5040202@pcbsd.org> Date: Thu, 23 Aug 2012 15:50:11 -0400 From: Kris Moore User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:13.0) Gecko/20120621 Thunderbird/13.0.1 MIME-Version: 1.0 To: Jeremy Messenger References: <1345739186.30848.YahooMailClassic@web111307.mail.gq1.yahoo.com> <50365F37.7040601@pcbsd.org> In-Reply-To: X-Enigmail-Version: 1.4.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-current@freebsd.org, FreeBSD Ports Subject: Re: pkgng default schedule... registering a few reasons for rethinking the final implementation... X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Aug 2012 19:50:15 -0000 On 08/23/2012 13:10, Jeremy Messenger wrote: > On Thu, Aug 23, 2012 at 11:49 AM, Kris Moore wrote: >> On 08/23/2012 12:26, Jeffrey Bouquet wrote: >>> I am following with dread the planned implementation of the deprecation of /var/db/pkg as a package registry... I use each /var/db/pkg directory as a database into the port installation/status, using sed/grep/portmaster/portmanager/.sh scripts/find/pipes etc... to fix stuff. For instance, an upgrade py26 > py27. >>> cd /var/db/pkg >>> ls -lac | grep py26 >>> ls -lac | grep python >>> as the more simple example. >>> .... >>> With due respect to its developers and the persons who agree that >>> the package tools could be upgraded, the mandatory >>> usage of a front-end database to a file directory one >>> is here viewd as mutt-only-mbox, registry-and-bsod rather >>> than /etc/local/rc files, deprecation of sed/grep/find/locate/.sh/portmaster/portmanager as tools to fixup/upgrade the ports that are registered; >>> ... >>> I see concurrently too few tests on lower-end p2, p3 as to whether >>> pkg can run with lesser memory machines (routers...) (pfsense) >>> ... >>> I suspect stalling of successful frontends to bsd (pc-bsd, ghostbsd, >>> pfsense..) due to less-reliability, more-possibility of bugs.. >>> >> This is of some concern to me as well. A number of our utilities / >> scripts rely on checking /var/db/pkg as a means to test if a particular >> package is installed. This is often much faster than running the pkg_* >> commands, especially when we may be checking thousands of packages in a >> single run. It will be some work to adjust our utilities to using the >> various "pkg" commands now, but it can be done. What worries me is >> performance. If this is significantly slower, it may cause some issues >> on our end. > Guys, please test it before you say anything. Otherwise it's going to > be moved forward without you. > > Well, it was about time I got to doing a benchmark of this anyway :) I did quick benchmark of how one of our utilities parses through a list of 1k packages on a newer i5 system: First test, using /var/db/pkg/ check we have been doing: 0.178s 0:00.31 54.8% 0.123s 0:00.26 61.5% 0.099s 0:00.15 60.0% Second test, using "pkg info ": 5.347s 0:11.41 91.7% 5.444s 0:11.52 91.3% 5.878s 0:11.32 91.4% The pkg info command is quite a bit slower in this case, but 5 seconds isn't horrible. Now I ran the same benchmark on a slower 1.66gz Atom system, checking about 1200~ packages: First test, using /var/db/pkg/ check we have been doing: 0.604s 0:00.76 86.8% 0.622s 0:00.77 84.4% 0.614s 0:00.73 90.4% Second test, using "pkg info ": 28.507s 0:54.80 99.1% 28.282s 0:54.60 99.4% 28.302s 0:54.52 99.4% Now this is what concerns me a bit. It took closer to 30 seconds, which is quite a while to wait, especially if a utility like ours has to run these checks when it starts up, to show the user whats installed / not installed on the system. The only way around It I've found is to do a quick "pkg info" on the entire DB, dump that to a list, then begin to grep through that list for each item, but it still takes 10~ seconds on the atom. That may be what I end up having to do, but it still stinks to go from a half a second startup, to 10 seconds each time. Any other ideas on how to do this faster with the new pkgng? -- Kris Moore PC-BSD Software iXsystems