Re: [RFC PATCHSET 0/6] timer/hrtimer/timer_stats: Improvement on timer_stats

From: Yong Zhang
Date: Sun Aug 29 2010 - 23:27:23 EST


On Sun, Aug 29, 2010 at 11:44 PM, Arjan van de Ven
<arjan@xxxxxxxxxxxxxxx> wrote:
> On 8/29/2010 8:05 AM, Yong Zhang wrote:
>>
>> Hi,
>>
>> This patchset focus on two problem:
>>
>> 1)timer_stats_timer_*_start_info() should belong to timer core only.
>> Â It should not be seen by outsider, such as workqueue. And should
>> Â not resident in timer.h.
>> Â Patch-0001~0003 first remove the only explicit out call, then move
>> Â timer_stats_timer_*_start_info() from timer.h to timer.c.
>>
>> 2)call site recorded by timer_stats sometimes show the timer core
>> functions
>> Â instead of the real call site.
>> Â Now /proc/timer_stats is like below on my machine:
>> ---now---
>>
>
>
> one question; have you tested this with powertop? (powertop being one of the
> prime consumers of this interface)
>

Now, vanilla kernel with powtop is
Top causes for wakeups:
49.4% (250.3) kworker/0:0 : hrtimer_start_range_ns (tick_sched_timer)
49.4% (250.3) <kernel core> : hrtimer_start_range_ns (tick_sched_timer)
0.4% ( 2.0) <kernel core> : clocksource_watchdog (clocksource_watchdog)
0.4% ( 1.8) <interrupt> : eth1
0.2% ( 1.0) kworker/0:0 : add_timer (tg3_timer)
0.1% ( 0.3) <kernel core> : dev_watchdog (dev_watchdog)
0.0% ( 0.2) sendmail : hrtimer_start_range_ns (hrtimer_wakeup)
0.0% ( 0.2) init : hrtimer_start_range_ns (hrtimer_wakeup)
0.0% ( 0.1) <kernel core> : bdi_arm_supers_timer (sync_supers_timer_fn)
0.0% ( 0.1) flush-0:13 : bdi_writeback_thread (process_timeout)
0.0% ( 0.1) <kernel core> : __enqueue_rt_entity (sched_rt_period_timer)

And the patched kernel:
Top causes for wakeups:
34.9% ( 2.0) kworker/0:0 : clocksource_watchdog (clocksource_watchdog)
29.1% ( 1.7) <interrupt> : eth1
17.4% ( 1.0) kworker/0:0 : tg3_timer (tg3_timer)
3.5% ( 0.2) sendmail : schedule_hrtimeout_range_clock
(hrtimer_wakeup)
3.5% ( 0.2) <kernel core> : dev_watchdog (dev_watchdog)
3.5% ( 0.2) init : schedule_hrtimeout_range_clock
(hrtimer_wakeup)
2.3% ( 0.1) <kernel core> : bdi_arm_supers_timer (sync_supers_timer_fn)
2.3% ( 0.1) flush-0:13 : bdi_writeback_thread (process_timeout)
1.2% ( 0.1) <kernel core> : __enqueue_rt_entity (sched_rt_period_timer)
1.2% ( 0.1) syslogd : do_setitimer (it_real_fn)

The difference is tick_sched_timer() is gone in the patches version.

And after taking a look at powertop, I think you want to get rid of the tick
events, right? Or maybe I'm missing something?

Thanks,
Yong
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/