Re: [PATCH] trace: reset sleep/block start time on task switch

From: Frederic Weisbecker
Date: Wed Jan 25 2012 - 04:20:22 EST


On Tue, Jan 24, 2012 at 01:46:52PM -0800, Arun Sharma wrote:
> On 1/24/12 6:27 AM, Peter Zijlstra wrote:
>
> >Bah, you're right. Also yes your proposal is too intrusive, but that can
> >be fixed, I actually did, but then I noticed its broken too, it doesn't
> >matter if the schedule that schedules a task back in preempted another
> >task or not, what matters is if the task we're scheduling back in was
> >itself preempted or recently woken. And we simply don't know.
>
> Yes - we'd need an extra bit in the task_struct to do this right.
>
> >I'm tempted to revert 1ac9bc69 for now, userspace will simply have to
> >correlate trace_sched_switch() and trace_sched_stat_{sleep,blocked}(),
> >which shouldn't be too hard.
>
> We tried it and it didn't work very well. Especially when used with
> perf record -g. There are too many uninteresting
> trace_sched_switch() events.

You mean context switches happening when the prev task doesn't need
to block or so? As it happens with preemption for example?

In this case you can use filters to drop context switches for
which the prev state is not S or D.

>
> Other possibilites: make a copy of {sleep,block}_start somewhere
> else in the perf_events subsystem in the sleep/wakeup path and leave
> sched_statistics untouched.
>
> -Arun
>
>
--
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/