Thread (72 messages) 72 messages, 8 authors, 2018-08-12

Re: [PATCH v5 09/14] sched: Add over-utilization/tipping point indicator

From: Quentin Perret <hidden>
Date: 2018-08-02 13:19:03
Also in: lkml

On Thursday 02 Aug 2018 at 15:08:01 (+0200), Peter Zijlstra wrote:
On Thu, Aug 02, 2018 at 02:03:38PM +0100, Quentin Perret wrote:
quoted
On Thursday 02 Aug 2018 at 14:26:29 (+0200), Peter Zijlstra wrote:
quoted
On Tue, Jul 24, 2018 at 01:25:16PM +0100, Quentin Perret wrote:
quoted
@@ -5100,8 +5118,17 @@ 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);
+		/*
+		 * The utilization of a new task is 'wrong' so wait for it
+		 * to build some utilization history before trying to detect
+		 * the overutilized flag.
+		 */
+		if (flags & ENQUEUE_WAKEUP)
+			update_overutilized_status(rq);
+
+	}
 
 	hrtick_update(rq);
 }
That is a somewhat dodgy hack. There is no guarantee what so ever that
when the task wakes next its history is any better. The comment doesn't
reflect this I feel.
AFAICT the main use-case here is to avoid re-enabling the load balance
and ruining all the task placement because of a tiny task. I don't
really see how we can do that differently ...
Sure I realize that.. but it doesn't completely avoid it. Suppose this
new task instantly blocks and wakes up again. Then its util signal will
be exactly what you didn't want but we'll account it and cause the above
scenario you wanted to avoid.
That is true. ... I also realize now that this patch was written long
before util_est, and that also has an impact here, especially in the
scenario you described where the task blocks. So any wake-up after the
first enqueue will risk to overutilize the system, even if the task
blocked for ages.

Hmm ...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help