diff mbox series

[01/10] drm/i915: Note the addition of timeslicing to the pretend scheduler

Message ID 20191010071434.31195-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series [01/10] drm/i915: Note the addition of timeslicing to the pretend scheduler | expand

Commit Message

Chris Wilson Oct. 10, 2019, 7:14 a.m. UTC
Since writing the comment that the scheduler is entirely passive, we've
added minimal timeslicing which adds the most primitive of active
elements (a timeout and reschedule).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Ramalingam C <ramalingam.c@intel.com>
---
 drivers/gpu/drm/i915/i915_scheduler_types.h | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Tvrtko Ursulin Oct. 11, 2019, 8:16 a.m. UTC | #1
On 10/10/2019 08:14, Chris Wilson wrote:
> Since writing the comment that the scheduler is entirely passive, we've
> added minimal timeslicing which adds the most primitive of active
> elements (a timeout and reschedule).
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Cc: Ramalingam C <ramalingam.c@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_scheduler_types.h | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_scheduler_types.h b/drivers/gpu/drm/i915/i915_scheduler_types.h
> index aad81acba9dc..d18e70550054 100644
> --- a/drivers/gpu/drm/i915/i915_scheduler_types.h
> +++ b/drivers/gpu/drm/i915/i915_scheduler_types.h
> @@ -49,6 +49,15 @@ struct i915_sched_attr {
>    * DAG of each request, we are able to insert it into a sorted queue when it
>    * is ready, and are able to reorder its portion of the graph to accommodate
>    * dynamic priority changes.
> + *
> + * Ok, there is now one active element to the "scheduler" in the backends.
> + * We let a new context run for a small amount of time before re-evaluating
> + * the run order. As we re-evaluate, we maintain the strict ordering of
> + * dependencies, but attempt to rotate the active contexts (the current context
> + * is put to the back of its priority queue, then reshuffling its dependents).
> + * This provides minimal timeslicing and prevents a userspace hog (e.g.
> + * something waiting on a user semaphore [VkEvent]) from denying service to
> + * others.
>    */
>   struct i915_sched_node {
>   	struct list_head signalers_list; /* those before us, we depend upon */
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/i915_scheduler_types.h b/drivers/gpu/drm/i915/i915_scheduler_types.h
index aad81acba9dc..d18e70550054 100644
--- a/drivers/gpu/drm/i915/i915_scheduler_types.h
+++ b/drivers/gpu/drm/i915/i915_scheduler_types.h
@@ -49,6 +49,15 @@  struct i915_sched_attr {
  * DAG of each request, we are able to insert it into a sorted queue when it
  * is ready, and are able to reorder its portion of the graph to accommodate
  * dynamic priority changes.
+ *
+ * Ok, there is now one active element to the "scheduler" in the backends.
+ * We let a new context run for a small amount of time before re-evaluating
+ * the run order. As we re-evaluate, we maintain the strict ordering of
+ * dependencies, but attempt to rotate the active contexts (the current context
+ * is put to the back of its priority queue, then reshuffling its dependents).
+ * This provides minimal timeslicing and prevents a userspace hog (e.g.
+ * something waiting on a user semaphore [VkEvent]) from denying service to
+ * others.
  */
 struct i915_sched_node {
 	struct list_head signalers_list; /* those before us, we depend upon */