discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Dropping samples "D" when CPU at 60%


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

Attachment: energy_det.grc
Description: energy_det.grc

Attachment: rx.png
Description: rx.png

Attachment: thindesktop_rx2.grc
Description: thindesktop_rx2.grc

Attachment: energy_det.png
Description: energy_det.png

Attachment: trigger_pipe_samples_impl.cc
Description: trigger_pipe_samples_impl.cc


reply via email to

[Prev in Thread] Current Thread [Next in Thread]