提交 df9024a8 编写于 作者: D Dave Hansen 提交者: Linus Torvalds

mm: shrinker: add nid to tracepoint output

Now that we are doing NUMA-aware shrinking, and can have shrinkers
running in parallel, or working on individual nodes, it seems like we
should also be sticking the node in the output.
Signed-off-by: NDave Hansen <dave.hansen@linux.intel.com>
Acked-by: NDave Chinner <david@fromorbit.com>
Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 7fe70475
...@@ -191,6 +191,7 @@ TRACE_EVENT(mm_shrink_slab_start, ...@@ -191,6 +191,7 @@ TRACE_EVENT(mm_shrink_slab_start,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(struct shrinker *, shr) __field(struct shrinker *, shr)
__field(void *, shrink) __field(void *, shrink)
__field(int, nid)
__field(long, nr_objects_to_shrink) __field(long, nr_objects_to_shrink)
__field(gfp_t, gfp_flags) __field(gfp_t, gfp_flags)
__field(unsigned long, pgs_scanned) __field(unsigned long, pgs_scanned)
...@@ -203,6 +204,7 @@ TRACE_EVENT(mm_shrink_slab_start, ...@@ -203,6 +204,7 @@ TRACE_EVENT(mm_shrink_slab_start,
TP_fast_assign( TP_fast_assign(
__entry->shr = shr; __entry->shr = shr;
__entry->shrink = shr->scan_objects; __entry->shrink = shr->scan_objects;
__entry->nid = sc->nid;
__entry->nr_objects_to_shrink = nr_objects_to_shrink; __entry->nr_objects_to_shrink = nr_objects_to_shrink;
__entry->gfp_flags = sc->gfp_mask; __entry->gfp_flags = sc->gfp_mask;
__entry->pgs_scanned = pgs_scanned; __entry->pgs_scanned = pgs_scanned;
...@@ -212,9 +214,10 @@ TRACE_EVENT(mm_shrink_slab_start, ...@@ -212,9 +214,10 @@ TRACE_EVENT(mm_shrink_slab_start,
__entry->total_scan = total_scan; __entry->total_scan = total_scan;
), ),
TP_printk("%pF %p: objects to shrink %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld", TP_printk("%pF %p: nid: %d objects to shrink %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld",
__entry->shrink, __entry->shrink,
__entry->shr, __entry->shr,
__entry->nid,
__entry->nr_objects_to_shrink, __entry->nr_objects_to_shrink,
show_gfp_flags(__entry->gfp_flags), show_gfp_flags(__entry->gfp_flags),
__entry->pgs_scanned, __entry->pgs_scanned,
...@@ -225,13 +228,15 @@ TRACE_EVENT(mm_shrink_slab_start, ...@@ -225,13 +228,15 @@ TRACE_EVENT(mm_shrink_slab_start,
); );
TRACE_EVENT(mm_shrink_slab_end, TRACE_EVENT(mm_shrink_slab_end,
TP_PROTO(struct shrinker *shr, int shrinker_retval, TP_PROTO(struct shrinker *shr, int nid, int shrinker_retval,
long unused_scan_cnt, long new_scan_cnt, long total_scan), long unused_scan_cnt, long new_scan_cnt, long total_scan),
TP_ARGS(shr, shrinker_retval, unused_scan_cnt, new_scan_cnt, total_scan), TP_ARGS(shr, nid, shrinker_retval, unused_scan_cnt, new_scan_cnt,
total_scan),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(struct shrinker *, shr) __field(struct shrinker *, shr)
__field(int, nid)
__field(void *, shrink) __field(void *, shrink)
__field(long, unused_scan) __field(long, unused_scan)
__field(long, new_scan) __field(long, new_scan)
...@@ -241,6 +246,7 @@ TRACE_EVENT(mm_shrink_slab_end, ...@@ -241,6 +246,7 @@ TRACE_EVENT(mm_shrink_slab_end,
TP_fast_assign( TP_fast_assign(
__entry->shr = shr; __entry->shr = shr;
__entry->nid = nid;
__entry->shrink = shr->scan_objects; __entry->shrink = shr->scan_objects;
__entry->unused_scan = unused_scan_cnt; __entry->unused_scan = unused_scan_cnt;
__entry->new_scan = new_scan_cnt; __entry->new_scan = new_scan_cnt;
...@@ -248,9 +254,10 @@ TRACE_EVENT(mm_shrink_slab_end, ...@@ -248,9 +254,10 @@ TRACE_EVENT(mm_shrink_slab_end,
__entry->total_scan = total_scan; __entry->total_scan = total_scan;
), ),
TP_printk("%pF %p: unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d", TP_printk("%pF %p: nid: %d unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
__entry->shrink, __entry->shrink,
__entry->shr, __entry->shr,
__entry->nid,
__entry->unused_scan, __entry->unused_scan,
__entry->new_scan, __entry->new_scan,
__entry->total_scan, __entry->total_scan,
......
...@@ -324,7 +324,7 @@ shrink_slab_node(struct shrink_control *shrinkctl, struct shrinker *shrinker, ...@@ -324,7 +324,7 @@ shrink_slab_node(struct shrink_control *shrinkctl, struct shrinker *shrinker,
else else
new_nr = atomic_long_read(&shrinker->nr_deferred[nid]); new_nr = atomic_long_read(&shrinker->nr_deferred[nid]);
trace_mm_shrink_slab_end(shrinker, freed, nr, new_nr, total_scan); trace_mm_shrink_slab_end(shrinker, nid, freed, nr, new_nr, total_scan);
return freed; return freed;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册