SATA DVD speed's too slow (Modified by Joshua Isom)
jrisom at gmail.com
Sun Nov 11 13:21:57 PST 2007
On Nov 11, 2007, at 1:20 PM, Andresen, Jason R. wrote:
> From: owner-freebsd-hackers at freebsd.org
> [mailto:owner-freebsd-hackers at freebsd.org] On Behalf Of Joshua Isom
>> Redirected from freebsd-questions after no reply.
>> I currently have an SATA DVD-RW drive for my computer. I have to boot
>> using a CURRENT kernel to get the drive recognized, and dmesg lists it
>> as running at 3.3MB/s. Running mplayer -dumpstream gets around 3 megs
>> a second. Copying off a data dvd gets about the same. But I recall
>> reading about playing a dvd before trying to get the data off of it
>> when using dd, and it seems to work. But the odd part is, it can get
>> up to 20 megabytes a second. Does anyone know how to get the higher
>> speeds all the time?
> What you're probably seeing is a feature of how modern optical drives
> work. Unlike the "4x" drives of old, the drive does not speed up or
> slow down the disc based on the position of the head, instead they
> maintain a fixed rotation speed. Because of this, the pits on the edge
> of the disc move much faster than the ones near the center of the disc.
> As you write to the disc you will see your speed increase as the laser
> gets closer to the edge. Of course the drive manufacturers advertise
> the speed of reading/writing the outermost track when selling the
I think you don't really notice some of the details. The kernel says
the drive is only capable of 3.3M/s. Mplayer can dump a dvd at around
3.0M/s. If I "play" the dvd a little bit(just a few seconds), and then
use dd to dump it, I can achieve three times the speed that the kernel
says is possible. If I mount as UDF, I get around 3.0M/s. If I mount
as cd9660, I get the higher speeds. I believe it is largely due to
block size(too much time spent on read calls and protocols than reading
data, as the speed can quickly triple when the reads are cut down to
10% of what they were).
It seems to me as though the fastest ways for FreeBSD to copy DVD are
to use dd or mount_cd9660, or else wait an excruciatingly long time.
But, the drive is getting speeds far faster than the kernel lists it as
capable of, and in gstat not even listing it as 100% busy. Here's a
quick snapshot of gstat, using cp -R with the dvd mounted as cd9660.
dT: 1.002s w: 1.000s filter: ^[a-z]+[0-9]+$
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
0 0 0 0 0.0 0 0 0.0 0.0| ad0
0 0 0 0 0.0 0 0 0.0 0.0| cd0
0 0 0 0 0.0 0 0 0.0 0.0| acd0
0 126 0 0 0.0 126 16096 1.6 19.9| ad4
0 0 0 0 0.0 0 0 0.0 0.0| cd1
1 250 250 15968 3.5 0 0 0.0 87.3| acd1
The drive is reading five times faster than I can achieve with mplayer
or a udf filesystem, and five times faster than the kernel says is
possible. Is the drive initially lieing about it's speed and somehow
sending an updated speed that's not being reported? Here's the product
page for the drive.
More information about the freebsd-questions