[Top][All Lists]

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

Re: Tag Best Practices & Performance?

From: Nicholas Long
Subject: Re: Tag Best Practices & Performance?
Date: Tue, 24 Nov 2020 12:08:45 -0600

I guess I am slightly confused by the rationale for tagged streams. It seems like you could do any of your chunk type processing by just placing a tag saying "new data chunk starts here" on the first sample of the new data chunk and an end tag on the last sample of the data chunk (like the sob and eob tags the USRPs use).

Also is a tagged stream chunk in an input buffer all at once? If so does that have an issue with buffer sizes if the chunks get really large?

With regards to performance, I do not have any specific issues, This is more me trying to understand the limits/things I might run into. I generally like to fully understand the issues before I run into them (or more so that I can avoid them), especially with something like gnu radio where there are multiple ways of doing something. It is also part of my attempt to wrap my head around the architecture. 

One of the things mentioned on the wiki that tags can add overhead. As one moves towards high throughput/low latency applications, does tag handling/propagation become a limiting factor? or is the bottleneck generally something else, (obviously this depends on a case by case basis and needs to be profiled) but I am curious about other people's general experiences.

On Tue, Nov 24, 2020 at 10:49 AM Jeff Long <willcode4@gmail.com> wrote:
A tag is a piece of metadata that points to a specific sample in a stream. Tagged streams operate on chunks of samples, using a certain tag to determine the chunk length. Streams are simpler to deal with, unless you need data chunked.

What kind of performance issues are you finding?

If you are implementing a block, and do not want tags passed through, `set_tag_propagation_policy(TPP_DONT)`.

On Mon, Nov 23, 2020 at 3:55 PM Nicholas Long <nicholaslong94@gmail.com> wrote:
Hi, So I am not sure exactly how to ask this, but I have a few questions about tag best practices when creating OOT modules, apologies if this is answered elsewhere...

What is the main source of performance issues with tag propagation: Is it primarily copying overhead? Are there contention issues? or is most of the overhead in the actual reading/setting of tags? I guess part of my question is how are tags passed between blocks, I understand the ring buffers, but tags are still somewhat a mystery to me.

Are tagged stream blocks better than just a stream with tags? From my limited ability to parse tagged stream blocks seem to limit the number of calls to get_tags_in_range, but they still pass on all other tags on the input buffer to the output buffer regardless. 


reply via email to

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