sched: Add a few SYNC hint knobs to play with
Currently we use overlap to weaken the SYNC hint, but allow it to set the hint as well. echo NO_SYNC_WAKEUP > /debug/sched_features echo SYNC_MORE > /debug/sched_features preserves pipe-test behaviour without using the WF_SYNC hint. Worth playing with on more workloads... Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
63859d4fe4
commit
e69b0f1b41
|
@ -1165,9 +1165,17 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p, int sync)
|
||||||
load = source_load(prev_cpu, idx);
|
load = source_load(prev_cpu, idx);
|
||||||
this_load = target_load(this_cpu, idx);
|
this_load = target_load(this_cpu, idx);
|
||||||
|
|
||||||
if (sync && (curr->se.avg_overlap > sysctl_sched_migration_cost ||
|
if (sync) {
|
||||||
|
if (sched_feat(SYNC_LESS) &&
|
||||||
|
(curr->se.avg_overlap > sysctl_sched_migration_cost ||
|
||||||
p->se.avg_overlap > sysctl_sched_migration_cost))
|
p->se.avg_overlap > sysctl_sched_migration_cost))
|
||||||
sync = 0;
|
sync = 0;
|
||||||
|
} else {
|
||||||
|
if (sched_feat(SYNC_MORE) &&
|
||||||
|
(curr->se.avg_overlap < sysctl_sched_migration_cost &&
|
||||||
|
p->se.avg_overlap < sysctl_sched_migration_cost))
|
||||||
|
sync = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If sync wakeup then subtract the (maximum possible)
|
* If sync wakeup then subtract the (maximum possible)
|
||||||
|
|
|
@ -62,6 +62,16 @@ SCHED_FEAT(SYNC_WAKEUPS, 1)
|
||||||
*/
|
*/
|
||||||
SCHED_FEAT(AFFINE_WAKEUPS, 1)
|
SCHED_FEAT(AFFINE_WAKEUPS, 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Weaken SYNC hint based on overlap
|
||||||
|
*/
|
||||||
|
SCHED_FEAT(SYNC_LESS, 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add SYNC hint based on overlap
|
||||||
|
*/
|
||||||
|
SCHED_FEAT(SYNC_MORE, 0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prefer to schedule the task we woke last (assuming it failed
|
* Prefer to schedule the task we woke last (assuming it failed
|
||||||
* wakeup-preemption), since its likely going to consume data we
|
* wakeup-preemption), since its likely going to consume data we
|
||||||
|
|
Loading…
Reference in New Issue