[mythtv] [PATCH] RingBuffer - fsync thread

Daniel Thor Kristjansson danielk at mrl.nyu.edu
Mon Dec 13 17:51:17 UTC 2004


John, I tried your patches out and everything worked dandy until I began 
a compile. A few minutes later I started getting 
"IOBOUND - blocking in ThreadedFileWriter::Write()"
messages and the dmesg started reporting lost data. As soon as I stopped 
the compile both the IOBOUND messages and the buffer overrun messages 
stopped. The thing is, the buffer reports never reported a buffer over 
6% full.

I was compiling myth (niced), which is was mostly cached with ccache so 
I'm assuming the problem was actually that ccache was initiating a lot 
of disk activity (the system was 40% idle throughout). This must 
also have been a case of priority inversion since the compile was 
niced. Are writes to the buffer somehow blocked during the syncs? Or 
does the write disk access just monopolize the CPU too long?

Admitedly, compiling with ccache enabled is a pretty tough test for 
MythTV, but it's the only way I can reliably get buffer overruns 
normally.

BTW I set the PCI latency timers to 60, which normally avoids starving 
any particular device on the bus.

-- Daniel

Here's is the important portion of the log:

mythtv at thesis mythtv $ mythbackend
Starting up as the master server.
....
2004-12-12 20:26:18.633 Started recording "National Lampoon's Christmas 
Vacation" on channel: 3004 on cardid: 4, sourceid 3
2004-12-12 20:26:19.148 Changing from None to RecordingOnly
2004-12-12 20:26:19.554 Maximum signal strength detected: 81% after 0 msec wait
2004-12-12 20:26:19.668 Desired program #1 not found in PAT. Substituting program #3
2004-12-12 20:26:26.650 Found changes in the todo list.
2004-12-12 20:26:28.653 Scheduled 267 items in 2.0 seconds.
2004-12-12 20:28:26.456 /dev/video34 ringbuf avg 0.0183095% max 0.3479% samples17044
2004-12-12 20:30:56.588 /dev/video34 ringbuf avg 0.0183105% max 0.823975% samples 20167
2004-12-12 20:33:27.087 /dev/video34 ringbuf avg 0.0183105% max 0.860596% samples 20217
2004-12-12 20:35:58.614 /dev/video34 ringbuf avg 0.0268591% max 1.24512% samples 20355
2004-12-12 20:38:30.153 /dev/video34 ringbuf avg 0.027269% max 1.22681% samples20356
2004-12-12 20:41:02.626 /dev/video34 ringbuf avg 0.0385751% max 1.97754% samples 20482
2004-12-12 20:43:36.724 /dev/video34 ringbuf avg 0.0601566% max 2.16064% samples 20700
2004-12-12 20:46:11.362 /dev/video34 ringbuf avg 0.0762239% max 2.6001% samples20773
2004-12-12 20:49:03.308 /dev/video34 ringbuf avg 0.0972768% max 3.22266% samples 20883
2004-12-12 20:49:35.187 IOBOUND - blocking in ThreadedFileWriter::Write()
2004-12-12 20:49:37.101 IOBOUND - blocking in ThreadedFileWriter::Write()
2004-12-12 20:49:39.252 IOBOUND - blocking in ThreadedFileWriter::Write()
2004-12-12 20:51:41.644 /dev/video34 ringbuf avg 0.12151% max 5.51147% samples 21026
2004-12-12 20:54:14.689 /dev/video34 ringbuf avg 0.0463993% max 1.57471% samples 20559
2004-12-12 20:56:48.308 /dev/video34 ringbuf avg 0.0547135% max 1.79443% samples 20636
....



More information about the mythtv-dev mailing list