[Top][All Lists]

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

Re: [Discuss-gnuradio] gnuradio dataflow, buffering and scheduling

From: Anh Duc Nguyen
Subject: Re: [Discuss-gnuradio] gnuradio dataflow, buffering and scheduling
Date: Thu, 24 Jul 2014 10:22:41 +0700

Thank Nathan and Marcus,

Yes, as you said the source code should be the best place to study the details. However,  as you may experience, it is fairly challenging to just look at the code, analyze, and make connections among stuffs. It should be better if there are some references to guide us through the complicated codes such as the one Tom wrote, hopefully, there should be more similar presentations/documents like that. With that references, I believe we can have got how gnuradio works more comprehensively and more rapidly. I also agree it is not easy to describe the scheduler in a short, simple, but pretty in-depth ways; then I have asked for just some supplement readings

Thank Nathan for your recommended two dissertations, I have just given them a quick look, and they appear to satisfy my desire. I also thank Marcus for key points and trends in the gnuradio scheduler and your frank suggestions how to approach the problems.

To be honest, I am studying software structures/platform for software defined radio (SDR), of which, the scheduler is one of the most crucial that I wish to analyze in detail; and in turn, gnuradio scheduler for sure draws much of my attention due to it success and popularity. I hope I could receive more support and help from you all

With best regards,
Nguyen Anh Duc

On Thu, Jul 24, 2014 at 12:51 AM, Marcus Müller <address@hidden> wrote:
Hi Anh,
in addition to what Nathan explained very nicely, I'd like to point out that the GNU Radio scheduler is not a static thing, it's actively being worked on. Whilst the buffer architecture dates back quite a while, things like message passing and the associated asynchronous communication between blocks are fairly new. Also, you have to realize that there were several approaches to scheduling of GNU Radio blocks over the time -- right now, it seems that GNU Radio has largely settled for the Thread-Per-Block scheduler, that  has one block_executors per block that itself runs in a thread of its own.

You asked:

>Could you please provide me with some relevant or supplement readings to
>that presentation? I would grateful for it.
I think since you have your very own level of understanding, your very own background in data processing and scheduling, and your very own interest in details, there will be no way around reading at least block_executor and some of the tpb_ stuff in detail, with a big piece of paper/whiteboard at hand and trying to understand these concepts yourself.
Although scheduling is always a bit of a convoluted task, I find the thread-per-block architecture fairly understandable, and the idea of blocks notifying their neighbors' threads when they have finished filling/reading a buffer quite intuitive. The details, however, like how the scheduler keeps record of the flowgraph, how GNU Radio allocates and manages the circular buffers, and what happens when you reconfigure a graph, are so specific, that it's hard to write a text about it that is shorter or  easier to understand for the skilled reader than the code itself.
I'm afraid that's the reason that only Tom (and maybe, in very simplifying attempts, some GSoC student[1]) has written relevant details on that.

That being said, "Explain what the scheduler does, so that beginners understand it and experts get an in-depth comprehension" has been on the "GNU Radio needs this" list for as long as I've been meddling with GNU Radio -- and that's really not because no one else had this problem, but because it is a hard thing to understand and a harder thing to textually represent correctly.


[1] http://gsoc.hostalia.de/posts/a-measurement-toolbox-for-gnu-radio-my-google-summer-of-code-project.html#evaluating-block-performance but that barely scratches the subject

On 23.07.2014 18:37, Anh Duc Nguyen wrote:
Thank Vanush,

I have read this presentation already; unfortunately, I found it rather
hard to draw an overall picture of gnuradio scheduler to some extent of
details. Perhaps, as Tom said on his webpage (
the scheduler is the most mysterious and complicated part of gnuradio - not
easy to digest it

Could you please provide me with some relevant or supplement readings to
that presentation? I would grateful for it.
My first intuitive question is that since each signal processing block does
require both input and output buffers, then it may cause the source-sink
latency to be significantly large. Is this true and is there any design
analysis on this?

With best regards,

Nguyen Anh Duc

On Wed, Jul 23, 2014 at 10:08 AM, Vanush Vaswani <address@hidden> wrote:


On Wed, Jul 23, 2014 at 2:32 AM, Anh Duc Nguyen <address@hidden> wrote:

Dear all,

I wish to study how gnuradio handles the dataflow,e.g., buffering,
scheduling, synchronization, optimization as well as resultant latency in
detail. However, I can not find any material that explain such things
clearly. Could you please point me to direct or indirect resources e.g., in
literature which present I need. I would appreciate it much,

With best regards,

Nguyen Anh Duc

Discuss-gnuradio mailing list



Discuss-gnuradio mailing list

reply via email to

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