[Intel-gfx] [PATCH 01/46] drm/i915: Return immediately if trylock fails for direct-reclaim
Chris Wilson
chris at chris-wilson.co.uk
Mon Jan 7 14:07:57 UTC 2019
Quoting Tvrtko Ursulin (2019-01-07 14:00:25)
>
> On 07/01/2019 11:54, Chris Wilson wrote:
> > Ignore trying to shrink from i915 if we fail to acquire the struct_mutex
> > in the shrinker while performing direct-reclaim. The trade-off being
> > (much) lower latency for non-i915 clients at an increased risk of being
> > unable to obtain a page from direct-reclaim without hitting the
> > oom-notifier. The proviso being that we still keep trying to hard
> > obtain the lock for kswapd so that we can reap under heavy memory
> > pressure.
> >
> > v2: Taint all mutexes taken within the shrinker with the struct_mutex
> > subclass as an early warning system, and drop I915_SHRINK_ACTIVE from
> > vmap to reduce the number of dangerous paths. We also have to drop
> > I915_SHRINK_ACTIVE from oom-notifier to be able to make the same claim
> > that ACTIVE is only used from outside context, which fits in with a
> > longer strategy of avoiding stalls due to scanning active during
> > shrinking.
>
> Oom notifier is not always the outside context?
oom-notifier is the final death throes of direct reclaim.
> > @@ -2255,8 +2256,7 @@ int i915_gem_gtt_prepare_pages(struct drm_i915_gem_object *obj,
> > } while (i915_gem_shrink(to_i915(obj->base.dev),
> > obj->base.size >> PAGE_SHIFT, NULL,
> > I915_SHRINK_BOUND |
> > - I915_SHRINK_UNBOUND |
> > - I915_SHRINK_ACTIVE));
> > + I915_SHRINK_UNBOUND));
> >
>
> Why this change?
gtt_prepare_pages is called at the end of obj->ops->get_pages() which is
not guaranteed to be outside of struct_mutex (yet). So I dropped the
ACTIVE here as part of the claim that ACTIVE is only used from kswapd (or
at known idle times such as i915_gem_freeze where I can handwave that
ACTIVE is meaningless).
-Chris
More information about the Intel-gfx
mailing list