[RFC PATCH 133/162] drm/i915/dg1: Track swap in/out stats via debugfs

Matthew Auld matthew.auld at intel.com
Fri Nov 27 12:06:49 UTC 2020


From: Sudeep Dutt <sudeep.dutt at intel.com>

cat /sys/kernel/debug/dri/0/i915_gem_objects
num_bytes_swapped_out 94170000 num_bytes_swapped_in 56120000

Signed-off-by: Sudeep Dutt <sudeep.dutt at intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_region.c | 6 ++++++
 drivers/gpu/drm/i915/i915_debugfs.c        | 3 +++
 drivers/gpu/drm/i915/i915_drv.h            | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_region.c b/drivers/gpu/drm/i915/gem/i915_gem_region.c
index e1793c5f8d8c..ed108dbcb34e 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_region.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_region.c
@@ -64,6 +64,9 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj,
 	else
 		i915_gem_object_put(dst);
 
+	if (!err)
+		atomic_long_add(sizes, &i915->num_bytes_swapped_out);
+
 	return err;
 }
 
@@ -118,6 +121,9 @@ i915_gem_object_swapin_pages(struct drm_i915_gem_object *obj,
 		i915_gem_object_put(src);
 	}
 
+	if (!err)
+		atomic_long_add(sizes, &i915->num_bytes_swapped_in);
+
 	return err;
 }
 
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 6d1482c82694..1b7e9b6ab660 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -372,6 +372,9 @@ static int i915_gem_object_info(struct seq_file *m, void *data)
 	for_each_memory_region(mr, i915, id)
 		seq_printf(m, "%s: total:%pa, available:%pa bytes\n",
 			   mr->name, &mr->total, &mr->avail);
+	seq_printf(m, "num_bytes_swapped_out %ld num_bytes_swapped_in %ld\n",
+		   atomic_long_read(&i915->num_bytes_swapped_out),
+		   atomic_long_read(&i915->num_bytes_swapped_in));
 	seq_putc(m, '\n');
 
 	print_context_stats(m, i915);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 1366b53ac8c9..7b1e95d494e6 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1214,6 +1214,9 @@ struct drm_i915_private {
 	 * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
 	 * will be rejected. Instead look for a better place.
 	 */
+
+	atomic_long_t num_bytes_swapped_out;
+	atomic_long_t num_bytes_swapped_in;
 };
 
 static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
-- 
2.26.2



More information about the dri-devel mailing list