Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Jun 2007 21:53:06 -0700
From:      Tim Kientzle <kientzle@freebsd.org>
To:        Garrett Cooper <youshi10@u.washington.edu>
Cc:        hackers@freebsd.org
Subject:   Re: Using shell commands versus C equivalents
Message-ID:  <4674BE32.300@freebsd.org>
In-Reply-To: <4674B268.4030502@u.washington.edu>
References:  <Pine.LNX.4.43.0706131018120.25469@hymn01.u.washington.edu> <46703EE9.1030804@freebsd.org> <4674B268.4030502@u.washington.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
>    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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4674BE32.300>