• Andrey Grodzovsky's avatar
    drm/sched: Add FIFO sched policy to run queue · 08fb97de
    Andrey Grodzovsky authored
    When many entities are competing for the same run queue
    on the same scheduler, we observe an unusually long wait
    times and some jobs get starved. This has been observed on GPUVis.
    
    The issue is due to the Round Robin policy used by schedulers
    to pick up the next entity's job queue for execution. Under stress
    of many entities and long job queues within entity some
    jobs could be stuck for very long time in it's entity's
    queue before being popped from the queue and executed
    while for other entities with smaller job queues a job
    might execute earlier even though that job arrived later
    then the job in the long queue.
    
    Fix:
    Add FIFO selection policy to entities in run queue, chose next entity
    on run queue in such order that if job on one entity arrived
    earlier then job on another entity the first job will start
    executing earlier regardless of the length of the entity's job
    queue.
    
    v2:
    Switch to rb tree structure for entities based on TS of
    oldest job waiting in the job queue of an entity. Improves next
    entity extraction to O(1). Entity TS update
    O(log N) where N is the number of entities in the run-queue
    
    Drop default option in module control parameter.
    
    v3:
    Various cosmetical fixes and minor refactoring of fifo update function. (Luben)
    
    v4:
    Switch drm_sched_rq_select_entity_fifo to in order search (Luben)
    
    v5: Fix up drm_sched_rq_select_entity_fifo loop (Luben)
    
    v6: Add missing drm_sched_rq_remove_fifo_locked
    
    v7: Fix ts sampling bug and more cosmetic stuff (Luben)
    
    v8: Fix module parameter string (Luben)
    
    Cc: Luben Tuikov <luben.tuikov@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Direct Rendering Infrastructure - Development <dri-devel@lists.freedesktop.org>
    Cc: AMD Graphics <amd-gfx@lists.freedesktop.org>
    Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
    Tested-by: default avatarYunxiang Li (Teddy) <Yunxiang.Li@amd.com>
    Signed-off-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
    Reviewed-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220930041258.1050247-1-luben.tuikov@amd.com
    08fb97de
gpu_scheduler.h 18.6 KB