From owner-freebsd-current@FreeBSD.ORG Thu Aug 23 20:50:28 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 938961065673; Thu, 23 Aug 2012 20:50:28 +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 66AC18FC19; Thu, 23 Aug 2012 20:50:27 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.iXsystems.com (Postfix) with ESMTP id 8ABF812E0; Thu, 23 Aug 2012 13:50:27 -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 53071-04; Thu, 23 Aug 2012 13:50:27 -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 BA66212D7; Thu, 23 Aug 2012 13:50:26 -0700 (PDT) Message-ID: <50369791.8050605@pcbsd.org> Date: Thu, 23 Aug 2012 16:50:25 -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: olli hauer References: <1345739186.30848.YahooMailClassic@web111307.mail.gq1.yahoo.com> <50365F37.7040601@pcbsd.org> <50368973.5040202@pcbsd.org> <5036933B.8030603@gmx.de> In-Reply-To: <5036933B.8030603@gmx.de> 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 20:50:28 -0000 On 08/23/2012 16:31, olli hauer wrote: > On 2012-08-23 21:50, Kris Moore wrote: >> 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? >> > Hi Kris, > > can you describe what exactly the script is doing. > > Are you aware that you can feed direct SQL to pkg ? > $> echo 'select origin,name,version,comment from packages;' | pkg shell > > At the beginning I was also a little skeptic, but even for older (slow) machines it works well here. > One note, on small systems keep an eye on /var/cache/pkg > > -- > Regards, > olli > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" I'm discussing it with Bapt off-list, but the problem isn't the initial getting of a list of packages. It's that we have to pass multiple "sets" of packages, and get some result back, like "ALL installed", "NONE installed", or "SOME installed". This means we are having to do some extra parsing after getting the initial list back, to determine those results. We have to do that with a number of collections of arbitrary packages (30+) and it is somewhat time-critical for the impatient user clicking between jails to see what package collections are installed on each :) The old way was pretty quick, usually