[mythtv] ringbuffer.cpp
Jonas Arndt
jonas.arndt at thearndtfamily.com
Sat Feb 22 03:52:35 UTC 2014
> best to guess what's going on would be to run the backend with the extra option:
> -v file --loglevel=debug
>
> the logs are going to be extremely verbose, I suggest you comment in
> mythtv/libs/libmythbase/threadedfilewriter.cpp
>
> line 291 at the end of the ThreadedFileWriter::Write() function, comment
> the line:
> LOG(VB_FILE, LOG_DEBUG, LOC + QString("Write(*, %1) total %2 cnt %3")
> .arg(count,4).arg(totalBufferUse).arg(writeBuffers.size()));
>
> change it to:
> // LOG(VB_FILE, LOG_DEBUG, LOC + QString("Write(*, %1) total %2 cnt %3")
> // .arg(count,4).arg(totalBufferUse).arg(writeBuffers.size()));
>
> that will reduce the verbosity by about 90% as that log is displayed
> whenever you write 188 bytes to disk (but will still very verbose).
>
>
> After that, run some basic disk speed test:
>
> dd if=/dev/zero of=/data1/Recordings/test.mpg bs=64k count=1M
>
> that will write 64gig on your disk and report the writing speed
>
> then do the opposite:
> dd if=/data1/Recordings/test.mpg of=/dev/null bs=64k count=1M
>
> that will read the 64gig and report the reading speed.
>
> will take over 10 minutes on a disk sustaining 100MB/s
>
> I'll push some unit test that report the reading and writing speed
> using the existing mythtv buffer class.
> _______________________________________________
>
So my friend had another freeze. I was running the flags -v file
--loglevel=debug
This was in the back-end log:
===============================================================
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:912 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): total read so far:
208359648 bytes
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:968 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): @ end of read ahead loop
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:871 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg):
safe_read(... at 2838752, 1048576) -- begin
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:475 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): not reading,
reached EOF
Feb 21 18:10:44 mythbackend: last message repeated 3 times
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D TFWWrite
threadedfilewriter.cpp:489 (DiskLoop)
TFW(/data1/Recordings/2655_20140222010733.mpg:49): write(65424) cnt 0
total 0
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D TFWWrite
threadedfilewriter.cpp:526 (DiskLoop)
TFW(/data1/Recordings/2655_20140222010733.mpg:49): total written so far:
208425072 bytes
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:486 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): About to reach
EOF, reading 65424 wanted 1048576
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:494 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): read(65424) -- begin
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:497 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): read(65424) ->
65424 end
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: I RingBuffer
ringbuffer.cpp:892 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg):
safe_read(... at 2838752, 1048576) -> 65424, took 240 ms (2.1808Mbps)
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:905 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): rbwpos += 63K
requested 1024K in read
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:912 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): total read so far:
208425072 bytes
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:968 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): @ end of read ahead loop
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:871 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg):
safe_read(... at 2904176, 1048576) -- begin
Feb 21 18:10:44 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:475 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): not reading,
reached EOF
Feb 21 18:10:45 mythbackend: last message repeated 16 times
Feb 21 18:10:45 howarddvr mythbackend: mythbackend[5006]: W
ProcessRequest ringbuffer.cpp:1055 (WaitForReadsAllowed)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): Taking too long to
be allowed to read..
Feb 21 18:10:45 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:475 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): not reading,
reached EOF
Feb 21 18:10:46 mythbackend: last message repeated 16 times
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: W
ProcessRequest ringbuffer.cpp:1055 (WaitForReadsAllowed)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): Taking too long to
be allowed to read..
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
fileringbuffer.cpp:475 (safe_read)
FileRingBuf(/data1/Recordings/2655_20140222010733.mpg): not reading,
reached EOF
Feb 21 18:10:46 mythbackend: last message repeated 5 times
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: I RingBuffer
ringbuffer.cpp:892 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg):
safe_read(... at 2904176, 1048576) -> 0, took 2343 ms (0Mbps)
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:905 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): rbwpos += 0K
requested 1024K in read
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:912 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): total read so far:
208425072 bytes
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:958 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): setting ateof
(read_return == 0)
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:968 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): @ end of read ahead loop
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: W
ProcessRequest ringbuffer.cpp:1055 (WaitForReadsAllowed)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ..Taking too long to
be allowed to read
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:921 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): We are not reading
anything (totfree: 4009871 commserror:0 ateof:1 setswitchtonext:0
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D RingBuffer
ringbuffer.cpp:968 (run)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): @ end of read ahead loop
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1298 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..294912,
normal) -- copying data
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1313 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..294912,
normal) -- checksum 45194
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1214 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..294912,
normal) @2904176 -- begin
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: N
ProcessRequest ringbuffer.cpp:1288 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..294912,
normal): ReadBufAvail() == 0
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1214 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal) @2904176 -- begin
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: N
ProcessRequest ringbuffer.cpp:1288 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal): ReadBufAvail() == 0
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1214 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal) @2904176 -- begin
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: N
ProcessRequest ringbuffer.cpp:1288 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal): ReadBufAvail() == 0
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1214 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal) @2904176 -- begin
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: N
ProcessRequest ringbuffer.cpp:1288 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal): ReadBufAvail() == 0
Feb 21 18:10:46 howarddvr mythbackend: mythbackend[5006]: D
ProcessRequest ringbuffer.cpp:1214 (ReadPriv)
RingBuf(/data1/Recordings/2655_20140222010733.mpg): ReadPriv(..262144,
normal) @2904176 -- begin
=========================================
Seems like we are hitting EOF multiple times and then we get "Taking too
long to be allowed to read"
So the front seem to not like that:
=================== Front End =================
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 611ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 713ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 815ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 917ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:47 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1019ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:47 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1120ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:47 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1222ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:47 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 6 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1323ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1424ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1526ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 6 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1627ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1730ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1831ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 6 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 1933ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 2035ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:48 mythfrontend.real: last message repeated 6 times
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 2136ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:48 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:49 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:49 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 2239ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:49 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:49 mythfrontend.real: last message repeated 5 times
Feb 21 18:10:49 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 2340ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:49 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
....................
Feb 21 18:10:53 zbox mythfrontend.real: mythfrontend[10937]: N
CoreContext mythplayer.cpp:2130 (PrebufferEnoughFrames) Player(0):
Waited 7023ms for video buffers AAAAffALAAAAAA
Feb 21 18:10:53 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:53 zbox mythfrontend.real: mythfrontend[10937]: W Decoder
ringbuffer.cpp:1035 (WaitForReadsAllowed)
RingBuf(myth://192.168.1.9:6543/2655_20140222010733.mpg): Taking too
long to be allowed to read..
Feb 21 18:10:57 zbox mythfrontend.real: mythfrontend[10937]: I
CoreContext tv_play.cpp:2201 (HandleStateChange) TV: Attempting to
change from WatchingLiveTV to None
===================================================================
Can this be some issue with the HDHomerun feeding MythTV? Like an
underrun. I did start tshark to filter on that traffic but the rotation
of the logs replaced the interesting log unfortunately.
Cheers,
// Jonas
More information about the mythtv-dev
mailing list