Commit 3abafa53 authored by Chris Wilson's avatar Chris Wilson Committed by Daniel Vetter

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: default avatarChris 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: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent cb422619
...@@ -85,6 +85,8 @@ i915_gem_shrink(struct drm_i915_private *dev_priv, ...@@ -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, ...@@ -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),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment