Commit 32b3f297 authored by Michal Hocko's avatar Michal Hocko Committed by Linus Torvalds

mm, vmscan: show LRU name in mm_vmscan_lru_isolate tracepoint

mm_vmscan_lru_isolate currently prints only whether the LRU we isolate
from is file or anonymous but we do not know which LRU this is.

It is useful to know whether the list is active or inactive, since we
are using the same function to isolate pages from both of them and it's
hard to distinguish otherwise.

Link: http://lkml.kernel.org/r/20170104101942.4860-5-mhocko@kernel.orgSigned-off-by: default avatarMichal Hocko <mhocko@suse.com>
Acked-by: default avatarHillf Danton <hillf.zj@alibaba-inc.com>
Acked-by: default avatarMel Gorman <mgorman@suse.de>
Acked-by: default avatarMinchan Kim <minchan@kernel.org>
Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1265e3a6
...@@ -239,6 +239,13 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) \ ...@@ -239,6 +239,13 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) \
IFDEF_ZONE_HIGHMEM( EM (ZONE_HIGHMEM,"HighMem")) \ IFDEF_ZONE_HIGHMEM( EM (ZONE_HIGHMEM,"HighMem")) \
EMe(ZONE_MOVABLE,"Movable") EMe(ZONE_MOVABLE,"Movable")
#define LRU_NAMES \
EM (LRU_INACTIVE_ANON, "inactive_anon") \
EM (LRU_ACTIVE_ANON, "active_anon") \
EM (LRU_INACTIVE_FILE, "inactive_file") \
EM (LRU_ACTIVE_FILE, "active_file") \
EMe(LRU_UNEVICTABLE, "unevictable")
/* /*
* First define the enums in the above macros to be exported to userspace * First define the enums in the above macros to be exported to userspace
* via TRACE_DEFINE_ENUM(). * via TRACE_DEFINE_ENUM().
...@@ -252,6 +259,7 @@ COMPACTION_STATUS ...@@ -252,6 +259,7 @@ COMPACTION_STATUS
COMPACTION_PRIORITY COMPACTION_PRIORITY
COMPACTION_FEEDBACK COMPACTION_FEEDBACK
ZONE_TYPE ZONE_TYPE
LRU_NAMES
/* /*
* Now redefine the EM() and EMe() macros to map the enums to the strings * Now redefine the EM() and EMe() macros to map the enums to the strings
......
...@@ -277,9 +277,9 @@ TRACE_EVENT(mm_vmscan_lru_isolate, ...@@ -277,9 +277,9 @@ TRACE_EVENT(mm_vmscan_lru_isolate,
unsigned long nr_skipped, unsigned long nr_skipped,
unsigned long nr_taken, unsigned long nr_taken,
isolate_mode_t isolate_mode, isolate_mode_t isolate_mode,
int file), int lru),
TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_skipped, nr_taken, isolate_mode, file), TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_skipped, nr_taken, isolate_mode, lru),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(int, classzone_idx) __field(int, classzone_idx)
...@@ -289,7 +289,7 @@ TRACE_EVENT(mm_vmscan_lru_isolate, ...@@ -289,7 +289,7 @@ TRACE_EVENT(mm_vmscan_lru_isolate,
__field(unsigned long, nr_skipped) __field(unsigned long, nr_skipped)
__field(unsigned long, nr_taken) __field(unsigned long, nr_taken)
__field(isolate_mode_t, isolate_mode) __field(isolate_mode_t, isolate_mode)
__field(int, file) __field(int, lru)
), ),
TP_fast_assign( TP_fast_assign(
...@@ -300,10 +300,10 @@ TRACE_EVENT(mm_vmscan_lru_isolate, ...@@ -300,10 +300,10 @@ TRACE_EVENT(mm_vmscan_lru_isolate,
__entry->nr_skipped = nr_skipped; __entry->nr_skipped = nr_skipped;
__entry->nr_taken = nr_taken; __entry->nr_taken = nr_taken;
__entry->isolate_mode = isolate_mode; __entry->isolate_mode = isolate_mode;
__entry->file = file; __entry->lru = lru;
), ),
TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_skipped=%lu nr_taken=%lu file=%d", TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_skipped=%lu nr_taken=%lu lru=%s",
__entry->isolate_mode, __entry->isolate_mode,
__entry->classzone_idx, __entry->classzone_idx,
__entry->order, __entry->order,
...@@ -311,7 +311,7 @@ TRACE_EVENT(mm_vmscan_lru_isolate, ...@@ -311,7 +311,7 @@ TRACE_EVENT(mm_vmscan_lru_isolate,
__entry->nr_scanned, __entry->nr_scanned,
__entry->nr_skipped, __entry->nr_skipped,
__entry->nr_taken, __entry->nr_taken,
__entry->file) __print_symbolic(__entry->lru, LRU_NAMES))
); );
TRACE_EVENT(mm_vmscan_writepage, TRACE_EVENT(mm_vmscan_writepage,
......
...@@ -1509,8 +1509,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, ...@@ -1509,8 +1509,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
} }
*nr_scanned = scan + total_skipped; *nr_scanned = scan + total_skipped;
trace_mm_vmscan_lru_isolate(sc->reclaim_idx, sc->order, nr_to_scan, trace_mm_vmscan_lru_isolate(sc->reclaim_idx, sc->order, nr_to_scan,
scan, skipped, nr_taken, mode, scan, skipped, nr_taken, mode, lru);
is_file_lru(lru));
update_lru_sizes(lruvec, lru, nr_zone_taken); update_lru_sizes(lruvec, lru, nr_zone_taken);
return nr_taken; return nr_taken;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment