• Chris Wilson's avatar
    drm/i915: Encourage our shrinker more when our shmemfs allocations fails · b8d5a9cc
    Chris Wilson authored
    Commit 24f8e00a ("drm/i915: Prefer to report ENOMEM rather than
    incur the oom for gfx allocations") made the bold decision to try and
    avoid the oomkiller by reporting -ENOMEM to userspace if our allocation
    failed after attempting to free enough buffer objects. In short, it
    appears we were giving up too easily (even before we start wondering if
    one pass of reclaim is as strong as we would like). Part of the problem
    is that if we only shrink just enough pages for our expected allocation,
    the likelihood of those pages becoming available to us is less than 100%
    To counter-act that we ask for twice the number of pages to be made
    available. Furthermore, we allow the shrinker to pull pages from the
    active list in later passes.
    
    v2: Be a little more cautious in paging out gfx buffers, and leave that
    to a more balanced approach from shrink_slab(). Important when combined
    with "drm/i915: Start writeback from the shrinker" as anything shrunk is
    immediately swapped out and so should be more conservative.
    
    Fixes: 24f8e00a ("drm/i915: Prefer to report ENOMEM rather than incur the oom for gfx allocations")
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170609110350.1767-1-chris@chris-wilson.co.uk
    (cherry picked from commit 4846bf0c)
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    b8d5a9cc
i915_gem.c 139 KB