• Chris Wilson's avatar
    drm/i915: Keep the mm.bound_list in rough LRU order · 6c246959
    Chris Wilson authored
    When we shrink our working sets, we want to avoid stealing pages from
    objects that likely to be reused in the near future. We first look at
    inactive objects before processing active objects - but what about a
    recently active object that is about to be used again. That object's
    position in the bound_list is ordered by the time of binding, not the
    time of last use, so the most recently used inactive object could well
    be at the head of the shrink list. To compensate, give the object a bump
    to MRU when it becomes inactive (thus transitioning to the end of the
    first pass in shrink lists). Conversely, bumping on inactive makes
    bumping on active useless, since when we do have to reap from the active
    working set, everything is going to become inactive very quickly and the
    order pretty much random - just hope for the best at that point, as once
    we start stalling on active objects, we can hope that the rebinding
    neatly orders vital objects.
    Suggested-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    [danvet: Resolve merge conflict.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    6c246959
i915_gem.c 130 KB