On Wed, Feb 27, 2013 at 9:06 AM, Michael D. [email protected]
Hi Almohanad - From my (now old) memory of the GR runtime scheduler (STS and
TBP), I believe you are roughly correct in the technical terminology, except that
the schedules are not guaranteed to be periodic. They are opportunistic /
aperiodic: process as much data as “makes sense” given the blocks constraints and
how much data is available and how much output space is available. Tom (et.al.)
have done some work on the TBP scheduler more recently than my memories, so maybe
they have been tweaked to be truly periodic?
That said, I do not believe either scheduler was created specifically with those
terms or concepts in mind; I believe the current scheduler(s) were programmed as
they are because they work well and were original creations. They might have been
influenced by reading others works on SDF and the like, but I really doubt there
was any true intent on recreating others works.
Again, these are memories that I believe are correct; but then who knows. I
believe Eric B. wrote both of the schedulers, and he’s no longer around on
this list to answer more officially (though I understand that folks do interact
with him in person). - MLD
Yeah, that about sums it up from my understanding of the history, too.
The single-threaded scheduler was basically a dataflow model and I’m
sure Eric used that concept to inform his design.
When it comes to the TPB scheduler, the task was to make GNU Radio
multi-threaded. So Eric adapted the STS one and rethought how it could
work in parallel with some push-pull concepts about how much data is
available on the input versus how much buffer space is available on
the output. At this point, I’m not sure any strict concepts of
scheduler theory were necessarily adhered to, though it wouldn’t
surprise me to learn that it’s similar to some standard model(s) of
computation (Eric has a long history in that area, so he would be well
aware of the various concepts, models, and ideas).