Re: 2.6.13 brings buffer underruns when recording DVDs in 16x (was Re: "Read my lips: no more merges" - aka Linux 2.6.14-rc1)

Mathieu Fluhr
2005-09-14T10:33:09Z

On Wed, 2005-09-14 at 01:30 -0700, Andrew Morton wrote:
> Mathieu Fluhr <mfluhr@nero.com> wrote:
> >
> > According to the MMC documentation, you can thoeriticaly send at most
> > 65535 (16 bits int) blocks in one WRITE(10) CDB. This would means
> > sending a buffer of ~127 MB on case of writing a mode 1 data track (2048
> > bytes per block)...
> >
> > Now, practically, it is really not safe to send more than 64 KB per CDB
> > (Mostly device related). And with such values, you have the following:
> > - at 100 Hz -> 64 KB * 100 = 6400 KB/s <=> ~4.62x DVD
> > - at 250 Hz -> 64 KB * 250 = 16000 KB/s <=> ~11.55x DVD
> > - at 1000 Hz -> 64 KB * 1000 = 64000 KB/s <=> ~46.20x DVD
>
> But that implies that there's some piece of code somewhere (could be
> userspace, could be kernel) which is doing a timer-based sleep() in between
> each CDB. It shouldn't do that - it should be using the disk
> controller's completion interrupt for synchronisation.
>

Hummm... you are definitly right. So forget my calculations. I does not
mean anything. Honestly, I was just trying to find an explanation why it
was working with HZ set to 1000 and not with HZ set to 250 or 100.

> What userspace application are you using to write the DVDs, and is it
> possible to test a different one?

I am using NeroLINUX to make my tests. I also tried out
cdrecord/growisofs, but I was not even able to burn at 16x (I get some
error message that max speed is 10x... and nothing more).

But there seems to be somehow some I/O limitation: I configured a pure
2.6.13.1 to have HZ set to 100. I then made a 3 GB compilation with
small files (about 3 to 5 MB each).
- If you burn this directly without creating a temp ISO image in 4x
(5440 KB/s), you will get buffer underruns soon or later... (about 2%)
- If you create an ISO image out of the compilation (using mkisofs or
other tool), and then burn this image, then no buffer underruns occurs.

After that, you speed up your recorder with this image (for example at
8x), you will have these buffer underruns back again.
And as I tell you, no such stuff is happening when HZ is set to 1000.

>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/