[mythtv-users] Playback of recordings ends a short way into them

Richard Townsend townsend at astro.wisc.edu
Mon Nov 17 02:21:34 UTC 2014


> On Nov 12, 2014, at 6:15 AM, Rich Freeman <r-mythtv at thefreemanclan.net> wrote:
> 
> On Wed, Nov 12, 2014 at 1:37 AM, Richard Townsend
> <townsend at astro.wisc.edu> wrote:
>> 2014-11-11 23:37:15.747353 E [2187/4174] HDHRStreamHandler threadedfilewriter.cpp:239
>> (Write) - TFW(/mnt/mythtv/tv/1571_20141112053000.mpg:68): Maximum buffer size exceeded.
>>                        file will be truncated, no further writing will be done.
>>                        This generally indicates your disk performance
>>                        is insufficient to deal with the number of on-going
>>                        recordings, or you have a disk failure.
>> 2014-11-11 23:40:09.661866 W [2187/4171] TFWWrite threadedfilewriter.cpp:571 (DiskLoop) -
>> TFW(/mnt/mythtv/tv/1571_20141112053000.mpg:68): write(58092) cnt 1149 total 67108856
>> -- took a long time, 231384 ms
>> 
>> I’ve been trying to see if my NFS performance is a bottleneck,
>> but it doesn’t seem to be. Is this possibly an issue with the HD
>> HomeRun?
>> 
> 
> I used to have that kind of problem all the time with multi-disk
> arrays and multiple recordings.  I found that disabling mythtv's fsync
> calls and increasing the buffer size fixed the problem for me. I did
> have a conversation with a developer a while ago and they indicated
> that this change could be problematic, so they wouldn't recommend it
> for general use.
> 
> Writes to RAID tend to be happier with larger write sizes and longer
> latencies, since the bandwidth of all those drives is high, but the
> cost to seek them all is also high.  I think that all those fsync
> calls basically kill the write cache and make it harder for the kernel
> to manage the IO queue.  On the other hand, the mythtv devs put in the
> fsync calls because their experience was that the kernel doesn't do
> such a great job with the queue anyway.
> 
> I also run my mythbackend process with realtime IO scheduling class.
> 
> If you want to try it, here is my patch, but you're probably on your
> own with this one:
> 
> --- mythtv/libs/libmythbase/threadedfilewriter.cpp.orig 2014-03-21
> 18:21:22.067061254 -0400
> +++ mythtv/libs/libmythbase/threadedfilewriter.cpp      2014-03-21
> 18:21:47.325630103 -0400
> @@ -41,7 +41,7 @@ void TFWSyncThread::run(void)
>     RunEpilog();
> }
> 
> -const uint ThreadedFileWriter::kMaxBufferSize   = 8 * 1024 * 1024;
> +const uint ThreadedFileWriter::kMaxBufferSize   = 64 * 1024 * 1024;
> const uint ThreadedFileWriter::kMinWriteSize    = 64 * 1024;
> const uint ThreadedFileWriter::kMaxBlockSize    = 1 * 1024 * 1024;
> 
> @@ -382,9 +382,9 @@ void ThreadedFileWriter::Sync(void)
>         // fdatasync tries to avoid updating metadata, but will in
>         // practice always update metadata if any data is written
>         // as the file will usually have grown.
> -        fdatasync(fd);
> +//        fdatasync(fd);
> #else
> -        fsync(fd);
> +//        fsync(fd);
> #endif
>     }
> }

Thanks for the suggestion. In fact, it turned out that the transfer rate to my NFS-mounted NAS was the culprit — for some yet-to-be-ascertained reason, it’s severely impaired right now, which is in turn causing problems for myth.

Thanks to all who responded.

cheers,

Rich



More information about the mythtv-users mailing list