sched: Fix sched::sched_stat_wait tracepoint field
This weird perf trace output: cc1-9943 [001] 2802.059479616: sched_stat_wait: task: as:9944 wait: 2801938766276 [ns] Is caused by setting one component field of the delta to zero a bit too early. Move it to later. ( Note, this does not affect the NEW_FAIR_SLEEPERS interactivity bug, it's just a reporting bug in essence. ) Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Nikos Chantziaras <realnc@arcor.de> Cc: Jens Axboe <jens.axboe@oracle.com> Cc: Mike Galbraith <efault@gmx.de> LKML-Reference: <4AA93D34.8040500@arcor.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
3f2aa307c4
commit
e1f8450854
|
@ -545,14 +545,13 @@ update_stats_wait_end(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||||
schedstat_set(se->wait_count, se->wait_count + 1);
|
schedstat_set(se->wait_count, se->wait_count + 1);
|
||||||
schedstat_set(se->wait_sum, se->wait_sum +
|
schedstat_set(se->wait_sum, se->wait_sum +
|
||||||
rq_of(cfs_rq)->clock - se->wait_start);
|
rq_of(cfs_rq)->clock - se->wait_start);
|
||||||
schedstat_set(se->wait_start, 0);
|
|
||||||
|
|
||||||
#ifdef CONFIG_SCHEDSTATS
|
#ifdef CONFIG_SCHEDSTATS
|
||||||
if (entity_is_task(se)) {
|
if (entity_is_task(se)) {
|
||||||
trace_sched_stat_wait(task_of(se),
|
trace_sched_stat_wait(task_of(se),
|
||||||
rq_of(cfs_rq)->clock - se->wait_start);
|
rq_of(cfs_rq)->clock - se->wait_start);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
schedstat_set(se->wait_start, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
|
Loading…
Reference in New Issue