提交 32b3f297 编写于 作者: M Michal Hocko 提交者: 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: NMichal Hocko <mhocko@suse.com>
Acked-by: NHillf Danton <hillf.zj@alibaba-inc.com>
Acked-by: NMel Gorman <mgorman@suse.de>
Acked-by: NMinchan Kim <minchan@kernel.org>
Acked-by: NVlastimil Babka <vbabka@suse.cz>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册