diff options
author | Mel Gorman <mel@csn.ul.ie> | 2010-08-09 20:19:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-09 23:44:59 -0400 |
commit | a8a94d151521b248727c1f88756174e15260815a (patch) | |
tree | 81ea18e9c52f6260f9b52b16e592cc89bfd9d260 /mm | |
parent | 33906bc5c87b50028364405ec425de9638afc719 (diff) |
vmscan: tracing: add trace events for LRU page isolation
Add an event for when pages are isolated en-masse from the LRU lists.
This event augments the information available on LRU traffic and can be
used to evaluate lumpy reclaim.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Acked-by: Rik van Riel <riel@redhat.com>
Acked-by: Larry Woodman <lwoodman@redhat.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Nick Piggin <npiggin@suse.de>
Cc: Rik van Riel <riel@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Michael Rubin <mrubin@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmscan.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index c99bc418c4cf..3d006d91a526 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -919,6 +919,9 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, | |||
919 | unsigned long *scanned, int order, int mode, int file) | 919 | unsigned long *scanned, int order, int mode, int file) |
920 | { | 920 | { |
921 | unsigned long nr_taken = 0; | 921 | unsigned long nr_taken = 0; |
922 | unsigned long nr_lumpy_taken = 0; | ||
923 | unsigned long nr_lumpy_dirty = 0; | ||
924 | unsigned long nr_lumpy_failed = 0; | ||
922 | unsigned long scan; | 925 | unsigned long scan; |
923 | 926 | ||
924 | for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) { | 927 | for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) { |
@@ -996,12 +999,25 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, | |||
996 | list_move(&cursor_page->lru, dst); | 999 | list_move(&cursor_page->lru, dst); |
997 | mem_cgroup_del_lru(cursor_page); | 1000 | mem_cgroup_del_lru(cursor_page); |
998 | nr_taken++; | 1001 | nr_taken++; |
1002 | nr_lumpy_taken++; | ||
1003 | if (PageDirty(cursor_page)) | ||
1004 | nr_lumpy_dirty++; | ||
999 | scan++; | 1005 | scan++; |
1006 | } else { | ||
1007 | if (mode == ISOLATE_BOTH && | ||
1008 | page_count(cursor_page)) | ||
1009 | nr_lumpy_failed++; | ||
1000 | } | 1010 | } |
1001 | } | 1011 | } |
1002 | } | 1012 | } |
1003 | 1013 | ||
1004 | *scanned = scan; | 1014 | *scanned = scan; |
1015 | |||
1016 | trace_mm_vmscan_lru_isolate(order, | ||
1017 | nr_to_scan, scan, | ||
1018 | nr_taken, | ||
1019 | nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, | ||
1020 | mode); | ||
1005 | return nr_taken; | 1021 | return nr_taken; |
1006 | } | 1022 | } |
1007 | 1023 | ||