The second problem I encountered that I forgot to mention is:
when I send multiple of packets from a source block to a sink block and I
measure the latency for each packet, the latency is increasing constantly
as time advances. Why is this happening?

Best,
Mostafa


On Sun, Sep 7, 2014 at 8:04 PM, Mostafa Alizadeh <m.alizade...@gmail.com>
wrote:

> Hi Marcus,
>
> I did what you recommended for measuring latency which is defined as
> followed:
>
> "the traveling duration of a packet through blocks until some specified
> processing in one block is done".
>
> However, there are obstacles again. Firstly, how can optimize I/O buffers
> of my blocks to obtain a minimum latency. I tried to use "set_alignment"
> for output buffers. When I change them a little, the latency will change
> within a hundred of milliseconds. Although, the input buffers must be
> determined in an efficient manner but how to do so?
>
> This is important to mention that the latency here is just accounted for
> GNURadio latency which is not included other delays such as hardware and
> UHD delays.
>
> Thanks in advance,
> Mostafa
>
>
>
> On Fri, Sep 5, 2014 at 3:32 PM, Marcus Müller <marcus.muel...@ettus.com>
> wrote:
>
>>  Hi Mostafa,
>>
>> I never tire to say that such measurements are often meaningless, as a)
>> on general purpose processors and operating systems *anything* can happen,
>> stalling your flow graph, and b) as GNU Radio scales well on multiprocessor
>> platforms and algorithms are steadily optimized, you can expect no two
>> installations to exhibit the same latency. That being said, it's still a
>> helpful measurement when actually implementing something for a given system
>> configuration, so here's my advice:
>>
>> Just compare the nitems_written() of an upstream block with the
>> nitems_read() of a downstream block at singulare times, which will give you
>> the numbers of items "in the flow" between these two.
>> Also, take the nitems_read() of an upstream block, and measure the host
>> time passing until nitems_read() of a downstream block is greater or equal
>> that number. Apply statistics.
>> The easiest way to find out how long an item has been "in the flight"
>> would be adding a stream tag containing the current host time at an
>> upstream block, and reading that tag somewhere downstream, comparing the
>> contained timestamp with the now current system time.
>>
>> Also, since I bet this ends up on the Google search results for "GNU
>> Radio latency" sooner or later, a word to the uninitiated reader: Usually,
>> real time doesn't matter in DSP systems such as GNU Radio. Samples are not
>> processed at their "signal theoretical" speed, but at the rate that they
>> become available, limited by the speed at which the processor can process
>> them. In the GNU Radio case, this is even more evident because normally,
>> GNU Radio lets blocks process samples en bloc, meaning that you usually see
>> something like 4096 samples going into a block, which then processes them,
>> and outputs another chunk of samples (often of the same length), and then
>> goes to sleep, until its woken up to process another chunk of samples at
>> its input. Latency is thus strongly dependent on how big GNU Radio makes
>> these chunks, which is a thing that as developer/user you can configure,
>> but lowering buffer sizes usually decreases efficiency, and thus doesn't
>> necessarily reduce latency. Generally, if you try to optimize something for
>> throughput, just write your blocks as efficiently as possible and use GNU
>> Radio/volk optimized things as often as sensible; if you try to optimize
>> for latency, you need to put in more thought, optimize individual buffer
>> sizes, consider what optimal work chunk sizes are and if you want to go as
>> far as breaking up GNU Radios highly modular approach.
>>
>>
>> Greetings,
>> Marcus
>> On 05.09.2014 12:14, Mostafa Alizadeh wrote:
>>
>> Hi guys,
>>
>> In simulation, sometime we need to measure the latency of a packet in terms
>> of the duration is needed to perform some certain signal processing on the
>> packet. Assume that we have a source which generates packets with specific
>> lengths. I want to know how long does it take for the packet to go through
>> blocks and receive to a particular block?
>>
>> Is there any solution in GNURadio? I think it's possible with *performance
>> counters* but I don't know how?
>>
>> Best,
>> Mostafa
>>
>>
>>
>>
>> _______________________________________________
>> Discuss-gnuradio mailing 
>> listDiscuss-gnuradio@gnu.orghttps://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> Discuss-gnuradio@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>
>
> --
> ***********************************************************
> Department of Electrical Engineering
> Aboureyhan Building
> MMWCL LAB
> Amirkabir University Of Technology
> Tehran
> IRAN
> Tel: +98 (919) 158-7730
> LAB: http://ele.aut.ac.ir/~mmwcl/?page_id=411
> Homepage: http://ele.aut.ac.ir/~alizadeh/
> ***********************************************************
>



-- 
***********************************************************
Department of Electrical Engineering
Aboureyhan Building
MMWCL LAB
Amirkabir University Of Technology
Tehran
IRAN
Tel: +98 (919) 158-7730
LAB: http://ele.aut.ac.ir/~mmwcl/?page_id=411
Homepage: http://ele.aut.ac.ir/~alizadeh/
***********************************************************
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to