[prev in list] [next in list] [prev in thread] [next in thread]
List: rpm-devel
Subject: Cache priming issues with __db* files
From: Jeff Johnson <n3npq () mac ! com>
Date: 2009-12-03 13:10:33
Message-ID: 7FD2F346-E7A5-4B87-A1BC-BABAC1C5592D () mac ! com
[Download RAW message or body]
Sadly, there's a modest cost to cold starting caches in Berkeley DB:
[jbj@fedora10 wdj]$ sudo /usr/bin/time rpm -qa > /tmp/qa
1.95user 3.98system 0:11.47elapsed 51%CPU (0avgtext+0avgdata 0maxresident)k
1166552inputs+9248outputs (1018major+35645minor)pagefaults 0swaps
[jbj@fedora10 wdj]$ sudo /usr/bin/time rpm -qa > /tmp/qa
0.04user 0.37system 0:00.60elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k
11456inputs+96outputs (74major+31597minor)pagefaults 0swaps
The behavior is root-only as well, since only root can create the cache
in /var/lib/rpm. Non-root doesn't use a dbenv.
Which means that most lusers attempts to benchmark "rpm -qa" are going to be
flawed not only because of digest/signature overhead, and headerLoad() byte swabbing,
but also because the dominant paradigm everywhere is
rm -f /var/lib/rpm/__db*
While I can easily crank the configgery screws down to cap the cache size, thereby shortening
the cold start cache prime overhead, teensy caches are obviously sub-optimal. Duh.
Note that the problem is gonna get worse when a dbenv is opened with
DB_RECOVER because the install log will be replayed to ensure ACID behavior.
(aside)
There's a vector I can stuff with a progress bar for DB_RECOVER, but
not for the cache priming (progress can be handled in many ways however).
Gak ... I loathe progress bars ... and RPM is a "batch" installer that
isn't supposed to spew by design.
Meanwhile its likely time to relearn to _NOT_ do
rm -f /var/lib/rpm/__db*
unnecessarily.
Or take some valium and be happy!
73 de Jeff
______________________________________________________________________
RPM Package Manager http://rpm5.org
Developer Communication List rpm-devel@rpm5.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic