On Tue, Dec 18, 2007 at 02:03:55AM -0800, Alfred Perlstein wrote:
> * Diomidis Spinellis <dds@FreeBSD.org> [071218 00:48] wrote:
> > dds 2007-12-18 08:49:47 UTC
> > FreeBSD src repository
> > Modified files:
> > tools/regression/bin/mv regress.sh
> > Log:
> > Add more tests. All rename(2)-based tests now succeed.
> > The performance of the cross-device equivalents is under investigation.
> Does 'mv' spawn off tar or something to do the copy part?
> You can _usually_ get much better cross device performance
> by hooking two processes together like so:
> tar -cf - -C /path/to/source . | tar -xf - -C /path/to/dst
> This will keep the disks a lot busier, but this can make
> things worse on cross device moves that happen to be
> on the same disk.
I was thinking about adding two options to cp(1) (-1 and -2) to give
cp(1) a hint if the copy is done inside one disk or between separate
disks. In -1 case cp(1) will read as large blocks as possible and then
write them, in -2 case it will spawn two threads: one reader and one
writer working in parallel. Performance improvements are very visible
from what I tested.
Pawel Jakub Dawidek http://www.wheel.pl
FreeBSD committer Am I Evil? Yes, I Am!