I think I sent this from the wrong account previously...

About a year ago, we embarked on developing a similar application.


The TLDR is we never got to 2x200, but we did get 3x100, which to me is 
actually a bit better cuz 2x200 is really only 2x160 with the analog filtering, 
yet you have all those extra samples you have to take in for no benefit.


It is my conjecture that this was no fault of UHD, its rx processing is quite 
efficient for a single channel and single processor.  Do I wish I could control 
the thread affinity of UHD spawned threads?  Sure, but that would be an akward 
thing to expose in a platform independent and correct manner and few people 
ever need that (you are in the sub 1% zone, which is where we often play as 
well).


When it comes to streaming multiple 200 MSA/sec (800 MB/sec per stream) of 
data, the key is balancing resource utilization and the path the data takes 
from USRP device to disk.  EVERYTHING IS IMPORTANT HERE.


We used multiple PCIe SSDs (1.2 GB/sec sustained write, so essentially enough 
for a single 200 MSA/sec data stream with some margin) and essentially, we ran 
out of the ability to efficiently segment the data to dedicated lanes as you 
only get about 40 PCIe lanes in a single motherboard.


The chain you need to make sure is efficient is UHD device -> UHD receive -> 
app receive and buffer -> write to disk.  That is 4 threads per channel and 
even with affinity and priority etc, it is hard for the OS to handle that 
workload with the required *latency* to keep up...  Multiply this workload 
times the number of channels you want to receive and I think you start to get 
the problem.

We can chat further if you want offline if people find this too distracting :)
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to