On Thu, Jun 14, 2012 at 5:15 PM, Phelps Williams <phel...@gmail.com> wrote:

> I am not throttling the amount of data generated by my custom udp
> source.  I am generating enough output to match noutput_items passed
> as the first argument to work().  My understanding is that
> noutput_items is the number of bytes the main event loop is requesting
> from my block for it to prevent an underrun.  What establishes this
> demand?  How is this noutput_items value generated?
>
> I notice in the first two calls to work() noutput_items == 32768.
> After those first two cycles it settles down to match the expected
> data rate.  I think the correct solution is to change the total amount
> of buffering that is driving that demand rather than institute
> throttling in my core which will surely not be quite in sink with the
> UHD throttling source.
>
> Running the same test with a normal udp source results in the data
> being instantaneously modulated as I would expect.  It seems clear
> that large buffers resulting in a large noutput_items is the source of
> this issue.
>

If "the same test with a normal udp source results in the data being
instantaneously modulated", how are the buffers to blame?  The normal UDP
source uses the same buffers, right?  Or have I missed something here?


>
> Any idea on how to modify these per block buffer sizes?
>
>
> On Wed, Jun 13, 2012 at 5:58 PM, Josh Blum <j...@ettus.com> wrote:
> >
> >
> > On 06/13/2012 05:15 PM, Phelps Williams wrote:
> >> I have a simple bpsk transmitter setup with a custom udp source block
> >> which outputs a fixed pattern if no data is available from the socket.
> >>  I have instrumented the block to indicate when data is read from the
> >> socket inside of work().
> >>
> >> My radio looks like this:
> >> Custom UDP Source -> DPSK Mod (DBPSK, 10 samp/sym) -> Multiply Const
> >> (0.3) -> UHD: USRP Sink
> >>
> >> My sample rate is 1e6.
> >>
> >> I can tell from my instrumented UDP Source that udp traffic is handled
> >> by work and passed on almost immediately.  However I can tell from
> >> both monitoring the spectrum and the receiver output on the other side
> >> that the data takes between 7 and 10 seconds before I see the expected
> >> output from the N200.  I thought this could be improved by reducing
> >> the maximum socket buffer size (sudo sysctl -w
> >> net.core.wmem_max=5000000) but that didn't seem to make a difference.
> >> I went as low as wmem_max=10000 with no difference in delay.  My goal
> >> is to get the total delay to < 1sec.
> >>
> >> What else could be adding delay to my transmission path?  Are there
> >> other buffers I can tweak?  Where else should I be looking?
> >>
> >
> > Well the usrp only has a megabyte of buffering, as does the socket. At
> > that rate, you couldnt not be buffering more than half a second's worth
> > in the post-gnuradio part of the chain.
> >
> > I bet you have produced a lot of data all at once, filled up all of the
> > gnuradio buffering, and you are simply measuring the time it takes to
> > drain these buffers at a rate of 1Msps.
> >
> > If thats the case, you might pace your inputs. Or not transmit when you
> > have nothing to transmit, this lets things flush out and idle.
> >
> > -josh
> >
> > _______________________________________________
> > Discuss-gnuradio mailing list
> > Discuss-gnuradio@gnu.org
> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to