Table Of Contents

Data Streaming Performance Tips

Last Modified: May 14, 2020

A USRP device can deliver data at very fast sample rates or in-phase/quadrature (I/Q) rates to a host computer. High-performance computers may not keep up with a USRP device at high I/Q rates, which can cause data underruns, data overruns, or other errors. To minimize these errors when receiving data at high I/Q rates, you can maximize the data streaming capability of the host computer.

The following tips may improve streaming performance:

  • For Ethernet-based streaming, set the maximum transmission unit (MTU) size on the host computer to a value equal to the maximum MTU size supported by the USRP device according to the following table.
    Table 1. Maximum Supported MTU Size
    USRP device 1 Gigabit 10 Gigabit
    USRP-2920/2921/2922 1,500 Not supported
    USRP-2930/2932 1,500 Not supported
    USRP-2940/2942/2943/2944/2945 8,000 9,000
    USRP-2950/2952/2953/2954/2955 8,000 9,000
  • Increase the number of samples given for transmit (TX) operations or increase the number of samples requested for receive (RX) operations.
  • For Ethernet-based streaming, set the FastSendDatagramThreshold registry key to a value equal to the MTU on the USRP device. To create a new registry key, enter the following:
    • Key Location: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AFD\Parameters]
    • Key Name: FastSendDatagramThreshold
    • Value: 1500
  • Disable power manager, which attempts to save power by reducing clock frequencies or powering off devices that are not in use, on the host computer.
    1. Select Control Panel» Power Options .
    2. Choose High performance.
  • Use separate threads for data streaming operations and data processing or data presentation operations. If a loop continuously writes data to or fetches data from the device, create a separate thread for the processing operations such as spectral analysis with a fast Fourier transform (FFT). Create a separate thread for the presentation operations such as displaying a waveform on a graph. Queues are a convenient way to pass data safely between threads.
  • (TX only) If possible, use the following steps to allow the hardware buffers to fill with data before the generation starts, which reduces the likelihood of data underflows:
    1. Set the Start Trigger Type property to Time.
    2. Set the Start Trigger Time (whole seconds) and Start Trigger Time (fractional seconds) properties to a small amount of time in the future, such as 100 ms.
    3. Start writing data.

Recently Viewed Topics