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