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