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;
|
||||
unsigned long count = 0;
|
||||
|
||||
trace_i915_gem_shrink(dev_priv, target, flags);
|
||||
|
||||
/*
|
||||
* As we may completely rewrite the (un)bound list whilst unbinding
|
||||
* (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)
|
||||
);
|
||||
|
||||
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,
|
||||
TP_PROTO(struct i915_vma *vma, unsigned flags),
|
||||
TP_ARGS(vma, flags),
|
||||
|
|
Loading…
Reference in New Issue