Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/msm/gem: Consolidate shrinker trace

Combine separate trace events for purge vs evict into one. When we add
support for purging/evicting active buffers we'll just add more info
into this one trace event, rather than adding a bunch more events.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Patchwork: https://patchwork.freedesktop.org/patch/496133/
Link: https://lore.kernel.org/r/20220802155152.1727594-13-robdclark@gmail.com

+21 -32
+8 -13
drivers/gpu/drm/msm/msm_gem_shrinker.c
··· 71 71 struct msm_drm_private *priv = 72 72 container_of(shrinker, struct msm_drm_private, shrinker); 73 73 long nr = sc->nr_to_scan; 74 - unsigned long freed; 74 + unsigned long freed, purged, evicted = 0; 75 75 76 - freed = drm_gem_lru_scan(&priv->lru.dontneed, nr, purge); 77 - nr -= freed; 78 - 79 - if (freed > 0) 80 - trace_msm_gem_purge(freed << PAGE_SHIFT); 76 + purged = drm_gem_lru_scan(&priv->lru.dontneed, nr, purge); 77 + nr -= purged; 81 78 82 79 if (can_swap() && nr > 0) { 83 - unsigned long evicted; 84 - 85 80 evicted = drm_gem_lru_scan(&priv->lru.willneed, nr, evict); 86 81 nr -= evicted; 87 - 88 - if (evicted > 0) 89 - trace_msm_gem_evict(evicted << PAGE_SHIFT); 90 - 91 - freed += evicted; 92 82 } 83 + 84 + freed = purged + evicted; 85 + 86 + if (freed) 87 + trace_msm_gem_shrink(sc->nr_to_scan, purged, evicted); 93 88 94 89 return (freed > 0) ? freed : SHRINK_STOP; 95 90 }
+13 -19
drivers/gpu/drm/msm/msm_gpu_trace.h
··· 115 115 ); 116 116 117 117 118 - TRACE_EVENT(msm_gem_purge, 119 - TP_PROTO(u32 bytes), 120 - TP_ARGS(bytes), 118 + TRACE_EVENT(msm_gem_shrink, 119 + TP_PROTO(u32 nr_to_scan, u32 purged, u32 evicted), 120 + TP_ARGS(nr_to_scan, purged, evicted), 121 121 TP_STRUCT__entry( 122 - __field(u32, bytes) 122 + __field(u32, nr_to_scan) 123 + __field(u32, purged) 124 + __field(u32, evicted) 123 125 ), 124 126 TP_fast_assign( 125 - __entry->bytes = bytes; 127 + __entry->nr_to_scan = nr_to_scan; 128 + __entry->purged = purged; 129 + __entry->evicted = evicted; 126 130 ), 127 - TP_printk("Purging %u bytes", __entry->bytes) 128 - ); 129 - 130 - 131 - TRACE_EVENT(msm_gem_evict, 132 - TP_PROTO(u32 bytes), 133 - TP_ARGS(bytes), 134 - TP_STRUCT__entry( 135 - __field(u32, bytes) 136 - ), 137 - TP_fast_assign( 138 - __entry->bytes = bytes; 139 - ), 140 - TP_printk("Evicting %u bytes", __entry->bytes) 131 + TP_printk("nr_to_scan=%u pages, purged=%u pages, evicted=%u pages", 132 + __entry->nr_to_scan, 133 + __entry->purged, 134 + __entry->evicted) 141 135 ); 142 136 143 137