drm/i915: Add a tracepoint for the shrinker
Often it is very useful to know why we suddenly purge vast tracts of memory and surprisingly up until now we didn't even have a tracepoint for when we shrink our memory. Note that there are slab_start/end tracepoints already, but those don't cover the internal recursion when we directly call into our shrinker code. Hence a separate tracepoint seems justified. Also note that we don't really need a separate tracepoint for the actual amount of pages freed since we already have an unbind tracpoint for that. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> [danvet: Add a note that there's also slab_start/end and why they're insufficient.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
cb42261997
commit
3abafa539d
|
@ -85,6 +85,8 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
|
||||||
}, *phase;
|
}, *phase;
|
||||||
unsigned long count = 0;
|
unsigned long count = 0;
|
||||||
|
|
||||||
|
trace_i915_gem_shrink(dev_priv, target, flags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As we may completely rewrite the (un)bound list whilst unbinding
|
* As we may completely rewrite the (un)bound list whilst unbinding
|
||||||
* (due to retiring requests) we have to strictly process only
|
* (due to retiring requests) we have to strictly process only
|
||||||
|
|
|
@ -107,6 +107,26 @@ TRACE_EVENT(i915_gem_object_create,
|
||||||
TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
|
TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
TRACE_EVENT(i915_gem_shrink,
|
||||||
|
TP_PROTO(struct drm_i915_private *i915, unsigned long target, unsigned flags),
|
||||||
|
TP_ARGS(i915, target, flags),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(int, dev)
|
||||||
|
__field(unsigned long, target)
|
||||||
|
__field(unsigned, flags)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->dev = i915->dev->primary->index;
|
||||||
|
__entry->target = target;
|
||||||
|
__entry->flags = flags;
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk("dev=%d, target=%lu, flags=%x",
|
||||||
|
__entry->dev, __entry->target, __entry->flags)
|
||||||
|
);
|
||||||
|
|
||||||
TRACE_EVENT(i915_vma_bind,
|
TRACE_EVENT(i915_vma_bind,
|
||||||
TP_PROTO(struct i915_vma *vma, unsigned flags),
|
TP_PROTO(struct i915_vma *vma, unsigned flags),
|
||||||
TP_ARGS(vma, flags),
|
TP_ARGS(vma, flags),
|
||||||
|
|
Loading…
Reference in New Issue