mm: vmalloc: add purge_vmap_area_lazy trace event
authorUladzislau Rezki (Sony) <urezki@gmail.com>
Tue, 18 Oct 2022 18:10:48 +0000 (20:10 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 9 Nov 2022 01:37:17 +0000 (17:37 -0800)
It is for debug purposes to track number of freed vmap areas including a
range it occurs on.

Link: https://lkml.kernel.org/r/20221018181053.434508-3-urezki@gmail.com
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sony.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/trace/events/vmalloc.h

index 39fbd77c91e78495da4f37c5a963f80bd8a81332..afeb8003a0f25991f5647d344109270573316178 100644 (file)
@@ -50,6 +50,39 @@ TRACE_EVENT(alloc_vmap_area,
                __entry->vstart, __entry->vend, __entry->failed)
 );
 
+/**
+ * purge_vmap_area_lazy - called when vmap areas were lazily freed
+ * @start:             purging start address
+ * @end:               purging end address
+ * @npurged:   numbed of purged vmap areas
+ *
+ * This event is used for a debug purpose. It gives some
+ * indication about start:end range and how many objects
+ * are released.
+ */
+TRACE_EVENT(purge_vmap_area_lazy,
+
+       TP_PROTO(unsigned long start, unsigned long end,
+               unsigned int npurged),
+
+       TP_ARGS(start, end, npurged),
+
+       TP_STRUCT__entry(
+               __field(unsigned long, start)
+               __field(unsigned long, end)
+               __field(unsigned int, npurged)
+       ),
+
+       TP_fast_assign(
+               __entry->start = start;
+               __entry->end = end;
+               __entry->npurged = npurged;
+       ),
+
+       TP_printk("start=0x%lx end=0x%lx num_purged=%u",
+               __entry->start, __entry->end, __entry->npurged)
+);
+
 #endif /*  _TRACE_VMALLOC_H */
 
 /* This part must be outside protection */