cvs commit: src/tools/regression/bin/mv regress.sh
Diomidis Spinellis
dds at aueb.gr
Mon Mar 17 09:12:42 PDT 2008
Pawel Jakub Dawidek wrote:
> On Tue, Dec 18, 2007 at 02:03:55AM -0800, Alfred Perlstein wrote:
>> * Diomidis Spinellis <dds at 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.
>> Diomidis,
>>
>> 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.
>
Adding hints to cp(1) hinders portability. Even on the same OS, if two
systems have their disks differently configured, a script may end up
with an inappropriate hint on one of the two. Why not use fstat(2) to
automatically determine if the file resides on different disks, and act
accordingly?
--
Diomidis Spinellis - http://www.spinellis.gr
More information about the cvs-src
mailing list