[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201006100113.GP2628@hirez.programming.kicks-ass.net>
Date: Tue, 6 Oct 2020 12:01:13 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Rob Clark <robdclark@...il.com>, Qais Yousef <qais.yousef@....com>,
dri-devel <dri-devel@...ts.freedesktop.org>,
linux-arm-msm <linux-arm-msm@...r.kernel.org>,
Tejun Heo <tj@...nel.org>, Tim Murray <timmurray@...gle.com>,
Rob Clark <robdclark@...omium.org>,
open list <linux-kernel@...r.kernel.org>,
Steven Rostedt <rostedt@...dmis.org>
Subject: Re: [PATCH v2 0/3] drm: commit_work scheduling
On Tue, Oct 06, 2020 at 11:08:59AM +0200, Daniel Vetter wrote:
> vblank work needs to preempt commit work.
>
> Right now we don't have any driver requiring this, but if we e.g. roll out
> the gamma table update for i915, then this _has_ to happen in the vblank
> period.
>
> Whereas the commit work can happen in there, but it can also be delayed a
> bit (until the vblank worker has finished) we will not miss any additional
> deadline due to that.
>
> So that's why we have 2 levels. I'm not even sure you can model that with
> SCHED_DEADLINE, since essentially we need a few usec of cpu time very
> vblank (16ms normally), but thos few usec _must_ be scheduled within a
> very specific time slot or we're toast. And that vblank period is only
> 1-2ms usually.
Depends a bit on what the hardware gets us. If for example we're
provided an interrupt on vblank start, then that could wake a DEADLINE
job with (given your numbers above):
.sched_period = 16ms,
.sched_deadline = 1-2ms,
.sched_runtime = 1-2ms,
The effective utilization of that task would be: 1-2/16.
> deadline has the upshot that it compose much better than SCHED_FIFO:
> Everyone just drops their deadline requirements onto the scheduler,
> scheduler makes sure it's all obeyed (or rejects your request).
>
> The trouble is we'd need to know how long a commit takes, worst case, on a
> given platform. And for that you need to measure stuff, and we kinda can't
> spend a few minutes at boot-up going through the combinatorial maze of
> atomic commits to make sure we have it all.
>
> So I think in practice letting userspace set the right rt priority/mode is
> the only way to go here :-/
Or you can have it adjust it's expected runtime as the system runs
(always keeping a little extra room over what you measure to make sure).
Given you have period > deadline, you can simply start with runtime =
deadline and adjust downwards during use (carefully).
Powered by blists - more mailing lists