Re: [RFC PATCH v2 3/6] sched: Add over-utilization/tipping point indicator

From: Dietmar Eggemann
Date: Tue Apr 17 2018 - 13:39:33 EST


On 04/17/2018 04:25 PM, Leo Yan wrote:

@@ -5394,8 +5416,10 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
update_cfs_group(se);
}
- if (!se)
+ if (!se) {
add_nr_running(rq, 1);
+ update_overutilized_status(rq);
+ }

Maybe this isn't a good question, why only update overutilized flag
for enqueue flow but not for dequeue flow?

[...]

@@ -9955,6 +10009,8 @@ static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued)
if (static_branch_unlikely(&sched_numa_balancing))
task_tick_numa(rq, curr);
+
+ update_overutilized_status(rq);

Can sched tick clear overutilized flag if under tipping point?

No, only the load balancer for this particular sched domain level is able to clear the flag. We want to use the existing iteration over all cpus of the sched domain span to reset the flag.