Date: Sat, 16 Jun 2007 23:47:51 -0700 From: Garrett Cooper <youshi10@u.washington.edu> To: Tim Kientzle <kientzle@freebsd.org> Cc: hackers@freebsd.org Subject: Re: Using shell commands versus C equivalents Message-ID: <4674D917.7000502@u.washington.edu> In-Reply-To: <4674BE32.300@freebsd.org> References: <Pine.LNX.4.43.0706131018120.25469@hymn01.u.washington.edu> <46703EE9.1030804@freebsd.org> <4674B268.4030502@u.washington.edu> <4674BE32.300@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4674D917.7000502>