• Chris Wilson's avatar
    drm/i915: Hack and slash, throttle execbuffer hogs · d6f328bf
    Chris Wilson authored
    Apply backpressure to hogs that emit requests faster than the GPU can
    process them by waiting for their ring to be less than half-full before
    proceeding with taking the struct_mutex.
    
    This is a gross hack to apply throttling backpressure, the long term
    goal is to remove the struct_mutex contention so that each client
    naturally waits, preferably in an asynchronous, nonblocking fashion
    (pipelined operations for the win), for their own resources and never
    blocks another client within the driver at least. (Realtime priority
    goals would extend to ensuring that resource contention favours high
    priority clients as well.)
    
    This patch only limits excessive request production and does not attempt
    to throttle clients that block waiting for eviction (either global GTT or
    system memory) or any other global resources, see above for the long term
    goal.
    
    No microbenchmarks are harmed (to the best of my knowledge).
    
    Testcase: igt/gem_exec_schedule/pi-ringfull-*
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: John Harrison <John.C.Harrison@Intel.com>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190207071829.5574-1-chris@chris-wilson.co.uk
    d6f328bf
intel_ringbuffer.c 60.9 KB