On 11/09/2020 18.57, Bernhard Voelker wrote:
On 2020-09-09 21:21, Carlos E. R. wrote:
I don't think it was slow read, but that ddrescue can not do read and write simultaneously, as dd does.
GNU dd does not read/write simultaneously either.
But it does manage to maximize the i/o, the graph doesn't show alternating phases. It shows more or less continuous, with speed around 150 Mbytes or more.
That would require threading or multi-processing. E.g. rsync does.
I can't tell for ddrescue, but for dd(1) it makes a huge difference if you use the default block size (4k) or a custom one like e.g. bs=32M. Larger block sizes make the (good) reads/writes faster.
I do use larger blocks with dd, but I did not see an equivalent setting for ddrescue. I hoped it would do it automatically.
The problem comes when there's a read error. AFAIR this is ddrescue's domain, because it re-tries with smaller block to find the physical bad block(s) ... which it will set to NULs when writing the output.
Certainly. The question is why doesn't ddrescue go fast when there are no errors, and thread carefully when errors are detected. -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)