[lttng-dev] Changed scheduling when using lttng

Mats Liljegren liljegren.mats2 at gmail.com
Mon Apr 29 02:53:04 EDT 2013


On Fri, Apr 26, 2013 at 6:14 PM, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
>> > AFAIU, your initial question was about not preventing the CPU from going
>> > to low power mode when tracing. The deferred timers should do just that.
>> >
>> > Indeed, the timers will fire on CPUs that are active.
>> >
>> > I guess what you want there is no intrusiveness for CPU shielding.
>> > Indeed, for this kind of use-case, you may need to centralise the timer
>> > handling into lttng-consumerd.
>>
>> I realize I didn't express myself very clearly: There is a distinction
>> between "full nohz" and "nohz idle". Full nohz means that if there are
>> no competing threads there is no reason to have ticks, so turn ticks
>> off. POSIX timers complicates things, but this was the simplistic view
>> of it... This is currently implemented as an extension of nohz idle
>> although they are quite orthogonal. Full nohz has been called "full
>> dynticks" and "extended nohz", quite a lot of naming confusion here.
>>
>> I need to read up on the code to see what seems to be the best design.
>> I thought just changing lib_ring_buffer_start_switch_timer() so that
>> it used "add_timer_on(&buff->switch_timer, 0)" would do the trick,
>> perhaps by using some kind of config for this case... But things are
>> usually not as simple as they first appear to be.
>
> If you go for this approach, I would recommend having a single timer
> handler per channel (rather than per buffer). Within the handler, you
> can iterate on each buffer.

Thanks for the advice!
I'll dive into the code and see if I can make something that works.

/Mats



More information about the lttng-dev mailing list