|
@@ -739,6 +739,17 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
|
|
update_stats_wait_end(cfs_rq, se);
|
|
update_stats_wait_end(cfs_rq, se);
|
|
update_stats_curr_start(cfs_rq, se);
|
|
update_stats_curr_start(cfs_rq, se);
|
|
set_cfs_rq_curr(cfs_rq, se);
|
|
set_cfs_rq_curr(cfs_rq, se);
|
|
|
|
+#ifdef CONFIG_SCHEDSTATS
|
|
|
|
+ /*
|
|
|
|
+ * Track our maximum slice length, if the CPU's load is at
|
|
|
|
+ * least twice that of our own weight (i.e. dont track it
|
|
|
|
+ * when there are only lesser-weight tasks around):
|
|
|
|
+ */
|
|
|
|
+ if (rq_of(cfs_rq)->ls.load.weight >= 2*se->load.weight) {
|
|
|
|
+ se->slice_max = max(se->slice_max,
|
|
|
|
+ se->sum_exec_runtime - se->prev_sum_exec_runtime);
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
se->prev_sum_exec_runtime = se->sum_exec_runtime;
|
|
se->prev_sum_exec_runtime = se->sum_exec_runtime;
|
|
}
|
|
}
|
|
|
|
|