bug-ddrescue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Suggestion: A No-write Option, e.g. --scrub.


From: Ralph Corderoy
Subject: Re: Suggestion: A No-write Option, e.g. --scrub.
Date: Fri, 06 Mar 2020 17:44:10 +0000

Hi Antonio,

> > I should have also asked: is using /dev/null a special value that
> > avoids the write(2) system calls, e.g. as shown by 'strace -c'?
>
> No. Ddrescue does not implement special values. I have not even tested
> if avoiding the write calls would speed up the operation significantly
> because I think this use case has not been suggested here before.

/dev/null obviously implements write(2) cheaply, but there's still the
context switch associated with the system call.  A very rough test here:

    $ f=/boot/initramfs-linux-lts-fallback.img
    $ stat -c %s $f
    30658665
    $
    $ strace -c tee <$f 2>&1 >/dev/null | sed 4q
    % time     seconds  usecs/call     calls    errors syscall
    ------ ----------- ----------- --------- --------- ----------------
     56.73    0.126982          33      3750           read
     43.23    0.096779          25      3743           write
    $
    $ strace -c tee /dev/null <$f 2>&1 >/dev/null | sed 4q
    % time     seconds  usecs/call     calls    errors syscall
    ------ ----------- ----------- --------- --------- ----------------
     59.84    0.194545          25      7486           write
     39.70    0.129078          34      3750           read
    $

The extra writes to /dev/null are adding 0.1 s and that's about 75% of
the time taken by all the read()s.

    (0.126982 + 0.129078) / 2 = 0.12803           # Mean read.
    0.194545 - 0.096779 = 0.097766                # Difference write.
    0.097766 / 0.12803 = 0.76361790205420604545   # Difference / mean.

So it might be a measurable saving to avoid the write()s when scrubbing
1 TB, say.

-- 
Cheers, Ralph.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]