[Intel-gfx] [RFC PATCH 134/162] drm/i915/dg1: Measure swap in/out timing stats
Chris Wilson
chris at chris-wilson.co.uk
Fri Nov 27 14:11:01 UTC 2020
Quoting Matthew Auld (2020-11-27 12:06:50)
> From: Sudeep Dutt <sudeep.dutt at intel.com>
>
> Signed-off-by: Sudeep Dutt <sudeep.dutt at intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_region.c | 16 ++++++++++++++--
> drivers/gpu/drm/i915/i915_debugfs.c | 3 +++
> drivers/gpu/drm/i915/i915_drv.h | 2 ++
> 3 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_region.c b/drivers/gpu/drm/i915/gem/i915_gem_region.c
> index ed108dbcb34e..4fab9f6b4bee 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_region.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_region.c
> @@ -15,6 +15,7 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj,
> {
> struct drm_i915_private *i915 = to_i915(obj->base.dev);
> struct drm_i915_gem_object *dst, *src;
> + unsigned long start, diff, msec;
> int err;
>
> GEM_BUG_ON(obj->swapto);
> @@ -24,6 +25,7 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj,
> GEM_BUG_ON(!i915->params.enable_eviction);
>
> assert_object_held(obj);
> + start = jiffies;
>
> /* create a shadow object on smem region */
> dst = i915_gem_object_create_shmem(i915, obj->base.size);
> @@ -64,8 +66,12 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj,
> else
> i915_gem_object_put(dst);
>
> - if (!err)
> + if (!err) {
> + diff = jiffies - start;
> + msec = diff * 1000 / HZ;
> + atomic_long_add(msec, &i915->time_swap_out_ms);
> atomic_long_add(sizes, &i915->num_bytes_swapped_out);
> + }
This can be done using a kprobe, and with prettier statistics as builtin
functionality.
-Chris
More information about the dri-devel
mailing list