|
From: | Bakshi, Arjun |
Subject: | Re: [Discuss-gnuradio] Dropping samples "D" when CPU at 60% |
Date: | Tue, 27 Mar 2018 18:00:30 +0000 |
Hi Marcus,
Thanks. I think it was just that ~18MSps is too much for my PC. After writing a cpp block for detecting the trigger and piping some samples, the cpu utilization jumped up to +90% on all cores, and I can now support 6.25MSps x 3 streams. But not much more. For some reason I expected that my cpu could handle the full 1Gbps connection.
The CPU is an older (Sandy Bridge/gen-2) address@hidden 4 cores, running on Ubuntu 16. Memory wasn't an issue, as the memory usage for the flow hovers around 100MB, with ~10GB to spare.
The ethernet connection is able support higher sampling rates(8Msps x 3 streams) with direct USRP source to null sink connections. So the ethernet/network should be fine. I've attached screenshots of my flowgraphs, and some code for the blocks I use.
Only concern now is if its harmful to have 90%-100% cpu utilization for an hour or so.
Thanks,
AB From: Müller, Marcus (CEL) <address@hidden>
Sent: Tuesday, March 27, 2018 4:39:10 AM To: address@hidden; Bakshi, Arjun Subject: Re: [Discuss-gnuradio] Dropping samples "D" when CPU at 60% Dear Bakshi,
again, we'd need to get a holistic view of what you're doing. All we can do is speculate wildly based on your description. > Is it just that the block I've written is not efficient enough? I would expect higher CPU utilization in that case. Possibly. Don't know. You tell us nothing about your block, especially no code. Please be more precise when asking, give your code, give actual throughput benchmark, give us hardware information (which I've asked of you before, but you never delivered). It's actually not easy to ask a good question, but you really need to get better at it! Fair warning: a sum rate of 18.75MS/s is really not that little. It's absolutely possible you have shoddy network hardware or drivers that just can't deal with that much data. Again, pure speculation, since you tell us nothing about your hardware, or your OS, or anything about the environment you're working in. All that we can say is: something in your overall system, be it hardware, your CPU, your RAM, your software or anything else, doesn't work as you want it to. Best regards, Marcus On Sat, 2018-03-24 at 19:30 +0000, Bakshi, Arjun wrote: > Hi all, > > I have written a block in python to detect and decode some packet transmissions. I've noticed that when I have 3 rx streams running at 6.25Msps (total network traffic is 75MB/s), the host starts dropping samples after a while. The CPU utilization does not exceed 60%, and the Ethernet isn't being saturated. I've increased buffer sizes (net.core.w/rmem_max) to the largest values possible > > A 'D' in the console means that the host isn't consuming samples fast enough. > > Is it just that the block I've written is not efficient enough? I would expect higher CPU utilization in that case. > > I think the most expensive thing I'm doing is looking at each sample in a stream of floats to find where the values goes above a threshold. This part is in my block, and triggers the decoding logic, which is in the same block. > > I don't know how to do this more efficiently. I'm thinking of re-writing it in C++, but I don't know how much better it'll get. > > Thank you, > > AB > _______________________________________________ > Discuss-gnuradio mailing list > address@hidden > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
|
energy_det.grc
Description: energy_det.grc
rx.png
Description: rx.png
thindesktop_rx2.grc
Description: thindesktop_rx2.grc
energy_det.png
Description: energy_det.png
trigger_pipe_samples_impl.cc
Description: trigger_pipe_samples_impl.cc
[Prev in Thread] | Current Thread | [Next in Thread] |