On 12/06/2023 22:03, Aaron Smith wrote:
Hello All,

I am trying to transmit on two UBX-160 daughterboards  within a single X310 at 200 Msps using UHD 4.1.0.5-3.

I am experiencing periodic underflows, and I have already applied all of the tips in the "USRP Host Performance Tuning Tips and Tricks" application note, with the exception of using DPDK.

I have a few questions about UHD streaming and what can be done to improve performance.

1. My current implementation uses a single tx_streamer for both channels, and uses multiple threads to populate the buffers sent to the X310. Would the performance be better if I used two separate streamers, one for each channel, in separate threads?
I don't think there's a closed-form answer to this.  Because it would depend on your particular system, application, etc.   I'd
  just do the experiment and see...


2. I have seen some claims that DPDK is not as useful with UHD 4, is this true?
I don't use DPDK myself, so I don't know if that's true or not.


3. With UHD 4, would it help to set the skip_duc and skip_ddc flags with full rate streaming?
Again, the answer here is susceptible to experiment...


4. Are underflows only created within the send() function? Or can the timing of calls to send() cause underflows, especially when the burst flags are used? For example, suppose I set the start of burst flag to true for a single buffer containing 1 second of data, and then I toggle the start of burst flag to false for subsequent buffers and continuously call send() on 1 second buffers for 10 minutes. On the last second I set end of burst flag to true. The idea is to create a 10 minute long "burst." If I call send late on one of the one second buffers in the middle of the "burst" will UHD report underflows? My thinking is the X310 should think it is in the middle of a burst, and will expect data, but send() has not been called, so there is no data for the radio to read from the host, creating underflows. Perhaps I am also misunderstanding the purpose of the burst flags, as they are not well documented.

Thanks for the help!
Armon

Underflows occur when the radio hardware underflows its FIFO, which in turn means the host isn't providing samples at   the desired rate--the radio has no idea what your "send()" boundaries are, just that it isn't getting samples when it needs   them.    The data in the "send()" has to percolate through UHD, through the kernel IP stack (or DPDK stack) and its buffers, and   then the hardware buffers.  Any information about exactly when you called "send()" is pretty invisible by the time it reaches
  the radio.

The "burst" architecture is really intended for applications like TDD or half-duplex, where you need to let the radio know to   not expect any more TX samples, so it can do things like switch antennas, etc.




_______________________________________________
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