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.