Using shell commands versus C equivalents
Garrett Cooper
youshi10 at u.washington.edu
Sun Jun 17 06:47:53 UTC 2007
Tim Kientzle wrote:
>> Also, were the bottlenecks seen in pkg_delete and pkg_add, or does
>> it appear to be distributed across the board?
>
> The biggest time sink in pkg_add is writing each file to a temp
> dir then copying it to its final location. There are a couple
> of strategies for avoiding this (by writing the files directly
> to their final location), but it basically requires rewriting
> pkg_add from scratch. I prototyped this a long time ago and
> found about a 3x speedup. (Parts of that prototype eventually
> became libarchive.)
>
> I haven't looked closely at pkg_delete, but I doubt there's
> much that can be done to speed it up; once you've examined the
> dependency information to determine what can be deleted,
> actually removing the files is a pretty straightforward
> operation.
>
> The two operations that people focus on performance issues have
> been index rebuilding (which requires inspecting every port in
> /usr/ports) and update (which requires inspecting every
> installed port). The modular Xorg is especially going to stress
> updates, since it greatly increases the number of ports on the
> average system.
>
> One useful tool: "truss" can include timing information that
> can give a lot of insight into where a program is really
> spending time.
>
> Tim Kientzle
>
Hmmm.. not sure if you're referring to the temp creation of files in
the playpen portion of the set of programs, or something else, but as I
see it the playpen idea is a good one because it's like the Gentoo Linux
version of a sandbox, and in case something goes wrong during an install
or the user backs out, that's the way to go when dealing with a
partially created / installed package.
Maybe the strategy behind the playpen should be revised though..
Another question for everyone who's experiencing really slow pkg_add
times though -- is it maybe because of slice boundaries that need to be
crossed going from the work dir to the installation slice in moving
files, perhaps?
I'll definitely look into strace'ing (not really a big fan of
truss(1) yet) the operation though, just to see how fast or slow stuff is.
-Garrett
More information about the freebsd-hackers
mailing list