2012-02-10 18:43:21

by Peter Zijlstra

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

On Wed, 2012-01-25 at 11:50 -0800, Arun Sharma wrote:
> # perf record -agP -e sched:sched_switch --filter "prev_state == 1 ||
> prev_state == 2" -e sched:sched_stat_sleep -- sleep 3

Problem with that is it'll try and do a backtrace for all events, not
only the sched_switch but also sched_stat_sleep, which is completely
superfluous (and expensive).

Currently perf tool doesn't support individual -g flags though and its
slightly non-trivial to make it so. Easiest work-around would be two
records and then merge the two files.


2012-02-10 20:08:01

by Arun Sharma

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

On 2/10/12 10:43 AM, Peter Zijlstra wrote:
> On Wed, 2012-01-25 at 11:50 -0800, Arun Sharma wrote:
>> # perf record -agP -e sched:sched_switch --filter "prev_state == 1 ||
>> prev_state == 2" -e sched:sched_stat_sleep -- sleep 3
>
> Problem with that is it'll try and do a backtrace for all events, not
> only the sched_switch but also sched_stat_sleep, which is completely
> superfluous (and expensive).
>
> Currently perf tool doesn't support individual -g flags though and its
> slightly non-trivial to make it so. Easiest work-around would be two
> records and then merge the two files.

If we have a sequence of:

SL1, SW1, SL2, SW2, SL3, SW3

I think you're suggesting:

perf.data1: SL1, SL2, SL3 (without -g)
perf.data2: SW1, SW2, SW3 (with -g)

and then munge the data to create perf.data. But making sure that all
matching sleep and switch events are captured seems hard.

-Arun