Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e69b0f1b authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

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: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 63859d4f
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -1165,9 +1165,17 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p, int sync)
	load	  = source_load(prev_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))
		       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)
+10 −0
Original line number Diff line number Diff line
@@ -62,6 +62,16 @@ SCHED_FEAT(SYNC_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
 * wakeup-preemption), since its likely going to consume data we