Ping.

Shaoyun, do you mind reviewing this patch?

Thanks,
   Felix

On 2019-06-20 3:43 p.m., Kuehling, Felix wrote:
> Oversubscription of queues or processes results in poor performance
> mostly because HWS blinbly schedules busy and idle queues, resulting
> in poor occupancy if many queues are idle.
>
> Let users know with a warning message when transitioning from a
> non-oversubscribed to an oversubscribed runlist.
>
> Signed-off-by: Felix Kuehling <felix.kuehl...@amd.com>
> ---
>   drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c | 6 +++++-
>   drivers/gpu/drm/amd/amdkfd/kfd_priv.h           | 1 +
>   2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> index c72c8f5fd54c..ccf6b2310316 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> @@ -203,11 +203,15 @@ static int pm_create_runlist_ib(struct packet_manager 
> *pm,
>   
>       pr_debug("Finished map process and queues to runlist\n");
>   
> -     if (is_over_subscription)
> +     if (is_over_subscription) {
> +             if (!pm->is_over_subscription)
> +                     pr_warn("Runlist is getting oversubscribed. Expect 
> reduced ROCm performance.\n");
>               retval = pm->pmf->runlist(pm, &rl_buffer[rl_wptr],
>                                       *rl_gpu_addr,
>                                       alloc_size_bytes / sizeof(uint32_t),
>                                       true);
> +     }
> +     pm->is_over_subscription = is_over_subscription;
>   
>       for (i = 0; i < alloc_size_bytes / sizeof(uint32_t); i++)
>               pr_debug("0x%2X ", rl_buffer[i]);
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h 
> b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> index 4070e6d24ef7..d4bba0124d29 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> @@ -937,6 +937,7 @@ struct packet_manager {
>       bool allocated;
>       struct kfd_mem_obj *ib_buffer_obj;
>       unsigned int ib_size_bytes;
> +     bool is_over_subscription;
>   
>       const struct packet_manager_funcs *pmf;
>   };
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to