I always read my buffers. That's the whole point. Not using my X310 for
anything else.
Not transmitting anything.
Besides, between your X310 estimations and my calculations, it turns out,
that *no buffer* is ever cleared.
I could understand missing a couple of reads, which I don't, but all of
them?
The buffer current pointer is advanced fine. I always read in the new data,
never the same.
But it doesn't delete the old reads below the current pointer:(
Maybe it has to do with the "strange memory" I use.
UHD uses a lot of "weird" code that is not very portable.
What UHD file is it? I need to check it, and run it through gdb...

TIA
Nikos

On Thu, Jul 31, 2025 at 11:25 PM Martin Braun <martin.br...@ettus.com>
wrote:

> It sounds like you are not permanently reading samples. Everytime
> rx_streamer::recv() returns, the samples are "removed" from the buffers.
>
> --M
>
> On Thu, Jul 31, 2025 at 8:04 PM Nikos Balkanas <nbalka...@gmail.com>
> wrote:
>
>> Thanks Martin,
>>
>> for your fast response.
>> My bad not mentioning my setup. But you got them right:)
>> Ubuntu 24.04, UHD 4.6, X310, 10 Gbe line.
>>
>> 1) Yup. I start the recv() right after I start the streamer.
>> 2) Can't change that. Buffers are created in OpenCL and am mapping them
>> to the host side to write them. They are limited to the FFT size, 1024
>> samples.
>>
>> The interesting thing is that at first I am using an FFT batch size of
>> 16x, that is 16384 samples.
>> That means that I have to back and get more samples 16x!
>> However, i am not getting  the OOs then.
>> Later on, I only do a single pass, .num_samples = 1024, just enough for 1
>> FFT, for now. This might change in the future.
>> But this is where I'm getting the OO's.
>> My test results, couldn't get OO's with 3e5 samples ~ 5 MB in 11 hrs.
>> That shows that rx_streamer buffers are larger than 5 MB, in line with your
>> estimation of 25 MBs:)
>> These are big buffers:)
>> Doing a few calculations, I read 1133 samples in 16x mode ~18.5 MB +
>> 6.054 MB in  1x single FFT mode ~24.6 MBs before OOs appear.
>> Seems that I don't read anything! But I read every single sample:(
>> Must be  that rx_streamer delivers the samples but doesn't reduce its
>> buffers...
>>
>> This shouldn't be happening. Where in UHD sources is this controlled?
>>
>> TIA
>> Nikos
>>
>> On Thu, Jul 31, 2025 at 12:00 PM Martin Braun <martin.br...@ettus.com>
>> wrote:
>>
>>> The size of the recv buffer depends on a bunch of things. On X310, when
>>> using 10 GbE, UHD will try and make the socket buffer 25MB in size. Until
>>> the socket buffer is full, there will be no overrun.
>>>
>>> BTW if you want to find O in UHD, grep for "\<O\>" (or ag "\bO\b"). But
>>> you don't have to, I can tell you that you will end up in
>>> radio_control_impl.cpp.
>>>
>>> There are several knobs for you to tune:
>>>
>>> - Are you starting your recv() call soon enough, or is the radio
>>> streaming before you recv?
>>> - Can you increase the buffer size that you pass into recv? In an
>>> extreme case, you would pass a buffer that is big enough for all num_samps,
>>> and let UHD handle it.
>>>
>>> Also, what's your rate, your device, your transport...
>>>
>>> --M
>>>
>>> On Thu, Jul 31, 2025 at 10:17 AM Nikos Balkanas <nbalka...@gmail.com>
>>> wrote:
>>>
>>>> Did some more testing. Tried to fill rx_streamer's buffers in purpose.
>>>> .stream_mode = UHD_STREAM_MODE_NUM_SAMPS_AND_DONE
>>>> streamer timeout set to 3".
>>>>
>>>> 1) .num_samples = 16384. Read 1024 each time in a loop sleeping 1" each
>>>> turn.
>>>> More than 16" to complete the read. No OO's.
>>>> 2) .num_samps = 3e5. Read 1024 samples each time in a loop adding 1" to
>>>> sleep
>>>> in each turn (1, 2, 3, 4, ...). 11 hrs to complete the read. No OO's.
>>>>
>>>> Is overflow even working right?
>>>> How large are the streamer's receive buffers?
>>>>
>>>> Nikos
>>>>
>>>> On Wed, Jul 30, 2025 at 3:04 PM Nikos Balkanas <nbalka...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am getting a few overflow errors after sometime, from using my code..
>>>>> First OOs in stdout and then metadata at which point it stalls.
>>>>> I'm using .stream_mode = UHD_STREAM_MODE_NUM_SAMPS_AND_DONE,
>>>>> Each time I read .num_samps in a loop until complete and then restart
>>>>> the streamer.
>>>>> I can't think of any case that I don't read all of the samples, so
>>>>> this shouldn't happen.
>>>>> What tools are there to debug this issue?
>>>>> A function to monitor the rx_streamer internal buffers would be very
>>>>> useful.
>>>>> Even the filename that implements this overflow would be helpful.
>>>>> Grepping "OO" in the sources doesn't help. Always hits in "BOOST":(
>>>>>
>>>>> TIA
>>>>> Nikos
>>>>>
>>>>> _______________________________________________
>>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>>
>>> _______________________________________________
>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>
>> _______________________________________________
> USRP-users mailing list -- usrp-users@lists.ettus.com
> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to