Why Am I Getting Lower Than Expected Streaming Rates on my NI 2900/2901 Device?

Updated Aug 29, 2022

Reported In

Hardware

  • USRP-2901
  • USRP-2900

Issue Details

I am getting lower than expected streaming rates on my 290x device. I am seeing underflows/overflows when streaming at the rates I need to for my application. How can I resolve this?

Solution

In order to increase streaming rates to meet your applications requirements, we recommend going down the list of options you have below. Overall there are multiple reasons that you may experience lower than expected streaming rates. These reasons are as follows, in order of what makes the most difference: 
  1. USB 2.0 vs. USB 3.0​
    Please ensure you are using the 290x with USB 3.0/USB (SS) to maximize streaming throughput. You can ensure this by opening the NI USRP Configuration Utility and noting that the device says it is connected over USB 3.0.
  2. Any processing in the same thread as your data stream
    When streaming data, it is best to follow the producer consumer architecture in LabVIEW as seen in: Producer/Consumer Architecture in LabVIEW.
  3. Other processes running on the PC
    As USB is host driven protocol, other processes running on the PC can slow down streaming throughput. Please shut down and non-critical process like anti-virus scanners.
  4. Multiple Channel Streaming
    There is additional overhead with each stream so throughput on multiple channels is less than your ideal max of 1 channel divided by 2 for max of 2 channels, 3 for 3 channels, etc. Keeping streams to the minimal amount that your application requires will maximize throughput.
  5. Overall PC Performance (Processor power, RAM speed, Disk writing speed)
    Using a faster PC also has proven to increase streaming throughput due to the nature of the host driven protocol.
  6. USB Controller
    Certain USB controllers have greater compatibility with the 290x. Intel Series 7, 8, and 9 USB controllers are recommended. Please see this page for further information: External Link: What samples rates should I expect with USB 3.0? USB 2.0?

Additional Information

USB streaming requires the ability for a device to process multiple streams at the same time and be able to quickly move data to and from PC memory. PCI and PCI Express are ideal for data acquisition designs because these buses provide high bandwidth, low latency, bus mastering, and DMA channels to stream data directly to PC memory. USB and other external buses are often viewed as lower-performance because they lack the bandwidth and latency specifications of internal buses.

Unlike PCI designs, USB, Ethernet, and wireless data acquisition devices are limited by a host-driven protocol with no DMA channels. The OS must initiate any request to transfer data to or from the device. This adds significant overhead to data transfers because devices are no longer able to take control of the bus and transfer data without CPU interaction. Additionally, data moving to or from the device to PC memory is controlled by the computer processor, which adds significant communication overhead.