Hi Guillermo, My experience with DPDK was the following: - very difficult to configure - once configured properly, streaming was exceptional (significant improvement compared to no DPDK). I was using Intel cards (likely X520-DA2 and XL710-QDA1). - lots of bad side effects related to DPDK taking over a dedicated CPU. I'm not sure why but at times even the mouse and keyboard would get so slow that the system became unusable - it occurred to me that maybe the mouse/keyboard were mistakenly being serviced by the CPU that was dedicated to DPDK - very strange. And, it wasn't just the mouse - other applications could be affected. The side effects were severe enough for me to abandon using DPDK on a regular basis. That said, I would consider it in your situation where you needed the performance.
I never experienced the troubles you are having where DPDK is working but performing poorly. In my case, if it worked at all, the performance was good. Sorry that I don't have any good suggestions for you. Whenever I am trying to capture high data rate receive streams, I save the data to files in a RAM file system. If I need these files permanently stored, I have had best success with running a separate utility that moves the saved files from RAM to storage. It doesn't seem like this approach should be necessary (as compared to multi threads within one process and/or keeping the data in shared memory rather than buffering in 'files') but perhaps my attempts at other approaches were faulty. Rob On Thu, Nov 18, 2021 at 5:03 AM Guillermo Ortas Delgado <g.or...@gmv.com> wrote: > Hi Marcus, > > > > Wow, good to know that I’m doing good. I thought I wasn’t the only one > working at these high rates. > > I guess there is the possibility to spread the load on another computer, > but I was interested in DPDK as it showed potential to accomplish my goal > more elegantly instead of just throwing more money at the problem. > > > > I’m still puzzled by DPDK dropping samples at even 25Msps on 2 channels. > > *@Rob Kossler: do you have any more input on this matter?* > > > > Best, > > Guillermo > > > > *De:* Marcus D. Leech [mailto:patchvonbr...@gmail.com] > *Enviado el:* 17 November 2021 17:43 > *Para:* Guillermo Ortas Delgado <g.or...@gmv.com>; Rob Kossler < > rkoss...@nd.edu> > *CC:* usrp-users@lists.ettus.com > *Asunto:* Re: [USRP-users] Re: DPDK drops samples at low rates > > > > On 2021-11-17 11:27, Guillermo Ortas Delgado wrote: > > Hi Marcus, thank you for your message. > > > > I do think the network layer is indeed the most significant part of this > challenging setup, let me illustrate: > > The platform I’m using is a server form-factor computer with a Xeon Silver > 4215R, 32GB of memory and no GPU. For storage, I have 4 SSDs of 3.2TB > mounted in RAID 0 providing a write capacity of 4GB/s, so that’s no issue. > I’m using all the optimizations mentioned here > <https://urldefense.com/v3/__https:/kb.ettus.com/Getting_Started_with_DPDK_and_UHD__;!!MvyJQugb!UJ8FfsPbUrq0LfNpjFLHfw9YyY1nkelByXNeHL_5zu_b0NDpEm1rMWVt0ZYW$> > and here > <https://urldefense.com/v3/__https:/kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks__;!!MvyJQugb!UJ8FfsPbUrq0LfNpjFLHfw9YyY1nkelByXNeHL_5zu_b0NDpEm1rMVnRj1fb$>, > so raw CPU power I think should be enough. > > Each of the four x310 USRPs is attached to a dedicated network card with > dual 10GbE ports, so network capacity is theoretically more than enough > (6.4Gb out of 10Gb maximum usage per interface). > > The scheme I’m trying to run is as follows: > > 1. USRP 1: 200 Msps on both channels > > 2. USRP 2: 200 Msps on both channels > > 3. USRP 3: 50 Msps on both channels > > 4. USRP 4: 50 Msps on both channels > > I’m streaming samples directly into shared memory, from which a separate > thread converts the samples to selectable 1/2/4/8/16 bits per sample and > stores them to the RAID 0 disk volume. Bit depth conversion is fast and > doesn’t seem to be the bottleneck. In fact, converting to 4 bits per sample > achieves better results than no conversion at all, forcing me to write the > full incoming 16 bits per sample. I launch a separate instance of my > program to store samples for each USRP, as I have observed this delivers > the best performance. > > With this, I’m able to run 4 channels at 200Msps and 2 channels at 50Msps. > But when I launch the last two channels at 50Msps the system can’t keep up > and the recording starts losing/dropping samples. > > I was able to run 4 channels at 184.32Msps and 4 channels at 46.08Msps for > a few seconds, but this is also not sustainable and samples are dropped > periodically. > > The application is very sensitive, so even a single sample lost or dropped > completely invalidates the recording. > > > > At these rates, the sheer amount of kernel systems calls seems to be the > most significant performance hit, that’s why I was looking at DPDK as a > potential solution. That being said, I’m able to sustain a solid stream > using the benchmark_rate program (discarding the samples) with 4 channels > at 200Msps and 4 channels at 50Msps without any drops/overflows. > > Do you have a sample program for high-performance/high-rate sample > streaming? The provided rx_samples_to_file is not nearly enough. > > What’s the preferred way to approach storing samples for maximum > performance? > > > > Thank you a lot and best regards, > > Guillermo > > 1Gsps is a totally *eye-watering* sample-rate for an ordinary computer to > "swallow" and write to disk. You are very likely at the very bleeding edge > with this, and > I'm not aware of anyone else doing work at these aggregate rates. The > fact that you are able to *both* "do stuff with the samples" AND write them > to a RAID > array at ~1Gsps is amazing. > > Do all USRPs have to be on the same computer for your application? Are > there opportunities to use a more distributed approach? > > > > *De:* Marcus D. Leech [mailto:patchvonbr...@gmail.com > <patchvonbr...@gmail.com>] > *Enviado el:* 17 November 2021 16:51 > *Para:* Guillermo Ortas Delgado <g.or...@gmv.com> <g.or...@gmv.com>; Rob > Kossler <rkoss...@nd.edu> <rkoss...@nd.edu> > *CC:* usrp-users@lists.ettus.com > *Asunto:* Re: [USRP-users] Re: DPDK drops samples at low rates > > > > On 2021-11-17 04:50, Guillermo Ortas Delgado wrote: > > Thanks for your message, I already have the mbuf size maxed out to 512 > (that’s the maximum value it will take). > > > > I have noticed that DPDPK v19.11 made great improvements to the BNXT > driver. Is there any chance to get UHD running with DPDK 19.11? Or even > better 20.11.3? > > Both are long-term support releases which are more mature and support > vector mode, which offers must better performance. > > Quote from DPDK 19.11: > “The BNXT PMD includes support for SSE vector mode on x86 platforms. > Vector provides *significantly improved performance* over the base > implementation” > > > > I already tried building UHD 4.1.0.4 with DPDK 19.11 by modifying the > makefile to accept this version, but the build fails. > > I would really appreciate it if you could add support for newer versions > of DPDK. > > > > Best, > > Guillermo > > > > > > P Please consider the environment before printing this e-mail. > > > > P Please consider the environment before printing this e-mail. >
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com