[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] High Flowgraph Latency in

From: John Malsbury
Subject: Re: [Discuss-gnuradio] High Flowgraph Latency in
Date: Fri, 17 Oct 2014 09:58:20 -0700

So...  there were actually several contributors to this long latency.  Some of it was related to GNU Radio's inner workings, some were external.  With all of the "external" things removed, there was still 1+ minute of latency at low bitrates.

I thought I would share my findings, for the sake of getting this experience publicly archived.  (and maybe someone can build on these insights?)

First, a little background on the application.  The use case-here is that there is some moderately complex that isn't data-specific per-se.  But the quality of the demodulated data is evaluated on a periodic basis to determine alignment through multiple, parallel FEC decoding chains.  After alignment is detected, an appropriate chain is selected, and downstream delays are adjusted.   Here are specific things that were observed:
  1. We gave up on the stock selector block early on.  It was misaligning samples, which effected a down-stream interleaving process. What are the general thoughts/feelings on how the selector block is currently implmeneted.

  2. We tried several "clever" (ha) methods to select the desired stream.  Most of them revolved around the concept of summering/xoring streams after multiplying or and'ing the streams according to which stream we wanted (operand = 1 if we wanted the stream, 0 if not).  Through various methods we found that anything with a constant source, and const, etc, create this very long latencies.  The behavior was this:

    After the streams were selected and the long latency expired the data would be valid, and latency would be quite good for such a low data rate.  This seemed to indicate that somehting in the blocks used to select the stream was causing a delay - ie. inserting a lot of samples with the previous evaluated results where things would be misaligned.  Either that, or the callbacks to set the new operands for stream selection were not "executing" right away.  The specific offenders seem to be 1) constant source   2) and constant   3) mult_const.  I haven't figured out why yet...

The end solution was to do a dumb selector block that just copied the specified input to the output.  Derp...


On Fri, Oct 10, 2014 at 7:09 PM, John Malsbury <address@hidden> wrote:

Is there something i can force on a per block basis in 3.6?  Is there some trickery in the forecast function I might use?

On Oct 10, 2014 6:40 PM, "Ed Criscuolo" <address@hidden> wrote:
On 10/10/14 9:15 PM, John Malsbury wrote:
Sounds dangerous if you also happen to have very high throughput
applications to run?  Am I wrong?

Yes, it was a fine line between getting it small enough for acceptable
latency while still maintaining enough throughput to not overrun.
Fortunately for our application we were able to strike that balance.

Your mileage may vary.

@(^.^)@  Ed

Discuss-gnuradio mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]