[PATCH] drm/scheduler: select the least loaded sched during entity init
Nayan Deshmukh
nayan26deshmukh at gmail.com
Fri Aug 3 11:53:24 UTC 2018
Ah...you are correct. We will reschedule on the first job push. I didn't
take that into account. Let's drop this patch then.
Thanks,
Nayan
On Fri, Aug 3, 2018, 4:12 PM Christian König <
ckoenig.leichtzumerken at gmail.com> wrote:
> Am 03.08.2018 um 09:06 schrieb Nayan Deshmukh:
> > Instead of assigning entity to the first scheduler in the list
> > assign it to the least loaded scheduler.
>
> I thought about that as well, but then abandoned the idea.
>
> The reason is that we are going to reassign the rq when the first job is
> pushed to it anyway.
>
> This will only become useful when we take the number of entities a rq
> has into account for the decision as well.
>
> Christian.
>
> >
> > Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com>
> > ---
> > drivers/gpu/drm/scheduler/gpu_scheduler.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c
> b/drivers/gpu/drm/scheduler/gpu_scheduler.c
> > index 21fa0d8a8783..dbd707d24597 100644
> > --- a/drivers/gpu/drm/scheduler/gpu_scheduler.c
> > +++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c
> > @@ -61,6 +61,8 @@
> > static bool drm_sched_entity_is_ready(struct drm_sched_entity *entity);
> > static void drm_sched_wakeup(struct drm_gpu_scheduler *sched);
> > static void drm_sched_process_job(struct dma_fence *f, struct
> dma_fence_cb *cb);
> > +static struct drm_sched_rq *
> > +drm_sched_entity_get_free_sched(struct drm_sched_entity *entity);
> >
> > /**
> > * drm_sched_rq_init - initialize a given run queue struct
> > @@ -186,13 +188,13 @@ int drm_sched_entity_init(struct drm_sched_entity
> *entity,
> >
> > memset(entity, 0, sizeof(struct drm_sched_entity));
> > INIT_LIST_HEAD(&entity->list);
> > - entity->rq = rq_list[0];
> > entity->guilty = guilty;
> > entity->num_rq_list = num_rq_list;
> > entity->rq_list = kcalloc(num_rq_list, sizeof(struct drm_sched_rq
> *),
> > GFP_KERNEL);
> > for (i = 0; i < num_rq_list; ++i)
> > entity->rq_list[i] = rq_list[i];
> > + entity->rq = drm_sched_entity_get_free_sched(entity);
> > entity->last_scheduled = NULL;
> >
> > spin_lock_init(&entity->rq_lock);
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180803/214d4efc/attachment.html>
More information about the dri-devel
mailing list