From: Mel Gorman <mel@csn.ul.ie>
To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-mm@kvack.org
Cc: Dave Chinner <david@fromorbit.com>,
Chris Mason <chris.mason@oracle.com>,
Nick Piggin <npiggin@suse.de>, Rik van Riel <riel@redhat.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Christoph Hellwig <hch@infradead.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Andrew Morton <akpm@linux-foundation.org>,
Mel Gorman <mel@csn.ul.ie>
Subject: [PATCH 02/12] tracing, vmscan: Add trace events for LRU page isolation
Date: Mon, 14 Jun 2010 12:17:43 +0100 [thread overview]
Message-ID: <1276514273-27693-3-git-send-email-mel@csn.ul.ie> (raw)
In-Reply-To: <1276514273-27693-1-git-send-email-mel@csn.ul.ie>
This patch adds 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.
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
---
include/trace/events/vmscan.h | 46 +++++++++++++++++++++++++++++++++++++++++
mm/vmscan.c | 14 ++++++++++++
2 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h
index f76521f..a331454 100644
--- a/include/trace/events/vmscan.h
+++ b/include/trace/events/vmscan.h
@@ -109,6 +109,52 @@ TRACE_EVENT(mm_vmscan_direct_reclaim_end,
TP_printk("nr_reclaimed=%lu", __entry->nr_reclaimed)
);
+TRACE_EVENT(mm_vmscan_lru_isolate,
+
+ TP_PROTO(int order,
+ unsigned long nr_requested,
+ unsigned long nr_scanned,
+ unsigned long nr_taken,
+ unsigned long nr_lumpy_taken,
+ unsigned long nr_lumpy_dirty,
+ unsigned long nr_lumpy_failed,
+ int isolate_mode),
+
+ TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode),
+
+ TP_STRUCT__entry(
+ __field(int, order)
+ __field(unsigned long, nr_requested)
+ __field(unsigned long, nr_scanned)
+ __field(unsigned long, nr_taken)
+ __field(unsigned long, nr_lumpy_taken)
+ __field(unsigned long, nr_lumpy_dirty)
+ __field(unsigned long, nr_lumpy_failed)
+ __field(int, isolate_mode)
+ ),
+
+ TP_fast_assign(
+ __entry->order = order;
+ __entry->nr_requested = nr_requested;
+ __entry->nr_scanned = nr_scanned;
+ __entry->nr_taken = nr_taken;
+ __entry->nr_lumpy_taken = nr_lumpy_taken;
+ __entry->nr_lumpy_dirty = nr_lumpy_dirty;
+ __entry->nr_lumpy_failed = nr_lumpy_failed;
+ __entry->isolate_mode = isolate_mode;
+ ),
+
+ TP_printk("isolate_mode=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu contig_taken=%lu contig_dirty=%lu contig_failed=%lu",
+ __entry->isolate_mode,
+ __entry->order,
+ __entry->nr_requested,
+ __entry->nr_scanned,
+ __entry->nr_taken,
+ __entry->nr_lumpy_taken,
+ __entry->nr_lumpy_dirty,
+ __entry->nr_lumpy_failed)
+);
+
#endif /* _TRACE_VMSCAN_H */
/* This part must be outside protection */
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 6bfb579..25bf05a 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -917,6 +917,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
unsigned long *scanned, int order, int mode, int file)
{
unsigned long nr_taken = 0;
+ unsigned long nr_lumpy_taken = 0, nr_lumpy_dirty = 0, nr_lumpy_failed = 0;
unsigned long scan;
for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) {
@@ -994,12 +995,25 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
list_move(&cursor_page->lru, dst);
mem_cgroup_del_lru(cursor_page);
nr_taken++;
+ nr_lumpy_taken++;
+ if (PageDirty(cursor_page))
+ nr_lumpy_dirty++;
scan++;
+ } else {
+ if (mode == ISOLATE_BOTH &&
+ page_count(cursor_page))
+ nr_lumpy_failed++;
}
}
}
*scanned = scan;
+
+ trace_mm_vmscan_lru_isolate(order,
+ nr_to_scan, scan,
+ nr_taken,
+ nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed,
+ mode);
return nr_taken;
}
--
1.7.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-06-14 11:17 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-14 11:17 [PATCH 0/12] Avoid overflowing of stack during page reclaim V2 Mel Gorman
2010-06-14 11:17 ` [PATCH 01/12] tracing, vmscan: Add trace events for kswapd wakeup, sleeping and direct reclaim Mel Gorman
2010-06-14 15:45 ` Rik van Riel
2010-06-14 21:01 ` Larry Woodman
2010-06-14 11:17 ` Mel Gorman [this message]
2010-06-14 16:47 ` [PATCH 02/12] tracing, vmscan: Add trace events for LRU page isolation Rik van Riel
2010-06-14 21:02 ` Larry Woodman
2010-06-14 11:17 ` [PATCH 03/12] tracing, vmscan: Add trace event when a page is written Mel Gorman
2010-06-14 16:48 ` Rik van Riel
2010-06-14 21:02 ` Larry Woodman
2010-06-14 11:17 ` [PATCH 04/12] tracing, vmscan: Add a postprocessing script for reclaim-related ftrace events Mel Gorman
2010-06-14 17:55 ` Rik van Riel
2010-06-14 21:03 ` Larry Woodman
2010-06-14 11:17 ` [PATCH 05/12] vmscan: kill prev_priority completely Mel Gorman
2010-06-14 18:04 ` Rik van Riel
2010-06-16 23:37 ` Andrew Morton
2010-06-16 23:45 ` Rik van Riel
2010-06-17 0:18 ` Andrew Morton
2010-06-17 0:34 ` Rik van Riel
2010-06-25 8:29 ` KOSAKI Motohiro
2010-06-28 10:35 ` Mel Gorman
2010-06-14 11:17 ` [PATCH 06/12] vmscan: simplify shrink_inactive_list() Mel Gorman
2010-06-14 18:06 ` Rik van Riel
2010-06-15 10:13 ` Mel Gorman
2010-06-14 11:17 ` [PATCH 07/12] vmscan: Remove unnecessary temporary vars in do_try_to_free_pages Mel Gorman
2010-06-14 18:14 ` Rik van Riel
2010-06-14 11:17 ` [PATCH 08/12] vmscan: Setup pagevec as late as possible in shrink_inactive_list() Mel Gorman
2010-06-14 18:59 ` Rik van Riel
2010-06-15 10:47 ` Christoph Hellwig
2010-06-15 15:56 ` Mel Gorman
2010-06-16 23:43 ` Andrew Morton
2010-06-17 10:30 ` Mel Gorman
2010-06-14 11:17 ` [PATCH 09/12] vmscan: Setup pagevec as late as possible in shrink_page_list() Mel Gorman
2010-06-14 19:24 ` Rik van Riel
2010-06-16 23:48 ` Andrew Morton
2010-06-17 10:46 ` Mel Gorman
2010-06-14 11:17 ` [PATCH 10/12] vmscan: Update isolated page counters outside of main path in shrink_inactive_list() Mel Gorman
2010-06-14 19:42 ` Rik van Riel
2010-06-14 11:17 ` [PATCH 11/12] vmscan: Write out dirty pages in batch Mel Gorman
2010-06-14 21:13 ` Rik van Riel
2010-06-15 10:18 ` Mel Gorman
2010-06-14 23:11 ` Dave Chinner
2010-06-14 23:21 ` Andrew Morton
2010-06-15 0:39 ` Dave Chinner
2010-06-15 1:16 ` Rik van Riel
2010-06-15 1:45 ` Andrew Morton
2010-06-15 4:08 ` Rik van Riel
2010-06-15 4:37 ` Andrew Morton
2010-06-15 5:12 ` Nick Piggin
2010-06-15 5:43 ` [patch] mm: vmscan fix mapping use after free Nick Piggin
2010-06-15 13:23 ` Mel Gorman
2010-06-15 11:01 ` [PATCH 11/12] vmscan: Write out dirty pages in batch Christoph Hellwig
2010-06-15 13:32 ` Rik van Riel
2010-06-15 1:39 ` Andrew Morton
2010-06-15 3:20 ` Dave Chinner
2010-06-15 4:15 ` Andrew Morton
2010-06-15 6:36 ` Dave Chinner
2010-06-15 10:28 ` Evgeniy Polyakov
2010-06-15 10:55 ` Nick Piggin
2010-06-15 11:10 ` Christoph Hellwig
2010-06-15 11:20 ` Nick Piggin
2010-06-15 23:20 ` Dave Chinner
2010-06-16 6:04 ` Nick Piggin
2010-06-15 11:08 ` Christoph Hellwig
2010-06-15 11:43 ` Mel Gorman
2010-06-15 13:07 ` tytso
2010-06-15 15:44 ` Mel Gorman
2010-06-15 10:57 ` Christoph Hellwig
2010-06-15 10:53 ` Christoph Hellwig
2010-06-15 11:11 ` Mel Gorman
2010-06-15 11:13 ` Nick Piggin
2010-06-14 11:17 ` [PATCH 12/12] vmscan: Do not writeback pages in direct reclaim Mel Gorman
2010-06-14 21:55 ` Rik van Riel
2010-06-15 11:45 ` Mel Gorman
2010-06-15 13:34 ` Rik van Riel
2010-06-15 13:37 ` Christoph Hellwig
2010-06-15 13:54 ` Mel Gorman
2010-06-16 0:30 ` KAMEZAWA Hiroyuki
2010-06-15 14:02 ` Rik van Riel
2010-06-15 13:59 ` Mel Gorman
2010-06-15 14:04 ` Rik van Riel
2010-06-15 14:16 ` Mel Gorman
2010-06-16 0:17 ` KAMEZAWA Hiroyuki
2010-06-16 0:29 ` Rik van Riel
2010-06-16 0:39 ` KAMEZAWA Hiroyuki
2010-06-16 0:53 ` Rik van Riel
2010-06-16 1:40 ` KAMEZAWA Hiroyuki
2010-06-16 2:20 ` KAMEZAWA Hiroyuki
2010-06-16 5:11 ` Christoph Hellwig
2010-06-16 10:51 ` Jens Axboe
2010-06-16 5:07 ` Christoph Hellwig
2010-06-16 5:06 ` Christoph Hellwig
2010-06-17 0:25 ` KAMEZAWA Hiroyuki
2010-06-17 6:16 ` Christoph Hellwig
2010-06-17 6:23 ` KAMEZAWA Hiroyuki
2010-06-14 15:10 ` [PATCH 0/12] Avoid overflowing of stack during page reclaim V2 Christoph Hellwig
2010-06-15 11:45 ` Mel Gorman
2010-06-15 0:08 ` KAMEZAWA Hiroyuki
2010-06-15 11:49 ` Mel Gorman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1276514273-27693-3-git-send-email-mel@csn.ul.ie \
--to=mel@csn.ul.ie \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=david@fromorbit.com \
--cc=hannes@cmpxchg.org \
--cc=hch@infradead.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@suse.de \
--cc=riel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox