[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <39d1affb-9cfa-208d-8bf4-f4c802e8c7f9@arm.com>
Date: Fri, 16 Aug 2019 15:02:04 +0100
From: Valentin Schneider <valentin.schneider@....com>
To: Liangyan <liangyan.peng@...ux.alibaba.com>
Cc: Ingo Molnar <mingo@...hat.com>,
Peter Zijlstra <peterz@...radead.org>,
linux-kernel@...r.kernel.org, shanpeic@...ux.alibaba.com,
xlpang@...ux.alibaba.com, pjt@...gle.com
Subject: Re: [PATCH] sched/fair: don't assign runtime for throttled cfs_rq
On 16/08/2019 08:08, Liangyan wrote:
> Please check below dmesg log with “WARN_ON(cfs_rq->runtime_remaining > 0)”. If apply my patch, the warning is gone. Append the reproducing case in the end.
>
[...]
Huh, thanks for the log & the reproducer. I'm still struggling to
understand how we could hit the condition you're adding, since
account_cfs_rq_runtime() shouldn't be called for throttled cfs_rqs (which
I guess is the bug). Also, if the cfs_rq is throttled, shouldn't we
prevent any further decrement of its ->runtime_remaining ?
I had a look at the callers of account_cfs_rq_runtime():
- update_curr(). Seems safe, but has a cfs_rq->curr check at the top. This
won't catch throttled cfs_rq's because AFAICT their curr pointer isn't
NULL'd on throttle.
- check_enqueue_throttle(). Already has a cfs_rq_throttled() check.
- set_next_task_fair(). Peter shuffled the whole set/put task thing
recently but last I looked it seemed all sane.
I'll try to make sense of it, but have also Cc'd Paul since unlike me he
actually knows this stuff.
Powered by blists - more mailing lists