dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Dave Airlie <airlied@gmail.com>
Cc: Intel Graphics Development <Intel-gfx@lists.freedesktop.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Subject: Re: [PATCH 1/1] drm/i915: Inherit submitter nice when scheduling requests
Date: Fri, 8 Apr 2022 11:29:17 +0100	[thread overview]
Message-ID: <b03c8d96-26d2-9ef9-1589-f47dd529146e@linux.intel.com> (raw)
In-Reply-To: <CAPM=9tyJTMBidxLip9XkJjYPNr5s7=oQqLYo9++UtHEemR9DQQ@mail.gmail.com>


On 08/04/2022 10:50, Dave Airlie wrote:
> On Fri, 8 Apr 2022 at 18:25, Tvrtko Ursulin
> <tvrtko.ursulin@linux.intel.com> wrote:
>>
>>
>> On 08/04/2022 08:58, Daniel Vetter wrote:
>>> On Thu, Apr 07, 2022 at 04:16:27PM +0100, Tvrtko Ursulin wrote:
>>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>
>>>> Inherit submitter nice at point of request submission to account for long
>>>> running processes getting either externally or self re-niced.
>>>>
>>>> This accounts for the current processing landscape where computational
>>>> pipelines are composed of CPU and GPU parts working in tandem.
>>>>
>>>> Nice value will only apply to requests which originate from user contexts
>>>> and have default context priority. This is to avoid disturbing any
>>>> application made choices of low and high (batch processing and latency
>>>> sensitive compositing). In this case nice value adjusts the effective
>>>> priority in the narrow band of -19 to +20 around
>>>> I915_CONTEXT_DEFAULT_PRIORITY.
>>>>
>>>> This means that userspace using the context priority uapi directly has a
>>>> wider range of possible adjustments (in practice that only applies to
>>>> execlists platforms - with GuC there are only three priority buckets), but
>>>> in all cases nice adjustment has the expected effect: positive nice
>>>> lowering the scheduling priority and negative nice raising it.
>>>>
>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>
>>> I don't think adding any more fancy features to i915-scheduler makes
>>> sense, at least not before we've cut over to drm/sched.
>>
>> Why do you think so?
>>
>> Drm/sched has at least low/normal/high priority and surely we will keep
>> the i915 context priority ABI.
>>
>> Then this patch is not touching the i915 scheduler at all, neither it is
>> fancy.
>>
>> The cover letter explains how it implements the same approach as the IO
>> scheduler. And it explains the reasoning and benefits. Provides an user
>> experience benefit today, which can easily be preserved.
> 
> won't this cause uAPI divergence between execlists and GuC, like if
> something nices to -15 or -18 with execlists and the same with GuC it
> won't get the same sort of result will it?

Not sure what you consider new ABI divergence but the general problem 
space of execlists vs GuC priority handling is not related to this patch.

Existing GEM context ABI has -1023 - +1023 for user priorities while GuC 
maps that to low/normal/high only. I915_CONTEXT_DEFAULT_PRIORITY is zero 
which maps to GuC normal. Negatives map to GuC low and positives to 
high. Drm/sched is I understand similar or the same.

So any userspace using the existing uapi can already observe differences 
between GuC and execlists. With your example of -15 vs -18 I mean.

I don't think anyone considered that a problem because execution order 
based on priority is not a hard guarantee. Neither is proportionality of 
timeslicing. Otherwise GuC would already be breaking the ABI.

With this patch it simply allows external control - whereas before only 
applications could change their priorities, now users can influence the 
priority of the ones which did not bother to set a non-default priority.

In the case of GuC if user says "nice 10 churn-my-dataset-on-gpu && 
run-my-game", former part get low prio, latter gets normal. I don't see 
any issues there. Same as if the "churn-my-dataset-on-gpu" command 
implemented a command line switch which passed context priority to i915 
via the existing GEM context param ioctl.

I've described the exact experiments in both modes in the cover letter 
which shows it works. (Ignoring the GuC scheduling quirk where 
apparently low-vs-normal timeslices worse than normal-vs-high).

Regards,

Tvrtko

  reply	other threads:[~2022-04-08 10:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-07 15:16 [PATCH 0/1] Inherit GPU scheduling priority from process nice Tvrtko Ursulin
2022-04-07 15:16 ` [PATCH 1/1] drm/i915: Inherit submitter nice when scheduling requests Tvrtko Ursulin
2022-04-08  7:58   ` Daniel Vetter
2022-04-08  8:25     ` Tvrtko Ursulin
2022-04-08  9:50       ` Dave Airlie
2022-04-08 10:29         ` Tvrtko Ursulin [this message]
2022-04-08 15:10           ` Daniel Vetter
2022-04-25 11:54             ` Tvrtko Ursulin
2022-04-07 15:28 [PATCH 0/1] Inherit GPU scheduling priority from process nice Tvrtko Ursulin
2022-04-07 15:28 ` [PATCH 1/1] drm/i915: Inherit submitter nice when scheduling requests Tvrtko Ursulin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b03c8d96-26d2-9ef9-1589-f47dd529146e@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=Intel-gfx@lists.freedesktop.org \
    --cc=airlied@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=tvrtko.ursulin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).