From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail137.messagelabs.com (mail137.messagelabs.com [216.82.249.19]) by kanga.kvack.org (Postfix) with ESMTP id A57089000C2 for ; Mon, 4 Jul 2011 10:05:52 -0400 (EDT) Received: by mail-iy0-f169.google.com with SMTP id 8so6219561iyl.14 for ; Mon, 04 Jul 2011 07:05:51 -0700 (PDT) From: Minchan Kim Subject: [PATCH v4 09/10] add inorder-lru tracepoints for just measurement Date: Mon, 4 Jul 2011 23:04:42 +0900 Message-Id: <95a25958bca2f77ef8e637320034da01aaaed5df.1309787991.git.minchan.kim@gmail.com> In-Reply-To: References: In-Reply-To: References: Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton Cc: linux-mm , LKML , Johannes Weiner , KAMEZAWA Hiroyuki , KOSAKI Motohiro , Mel Gorman , Rik van Riel , Michal Hocko , Andrea Arcangeli , Minchan Kim This patch adds some tracepints for see the effect this patch series. This tracepoints isn't for merge but just see the effect. Cc: Johannes Weiner Cc: KAMEZAWA Hiroyuki Cc: KOSAKI Motohiro Cc: Mel Gorman Cc: Rik van Riel Cc: Andrea Arcangeli Cc: Michal Hocko Signed-off-by: Minchan Kim --- include/trace/events/inorder_putback.h | 88 ++++++++++++++++++++++++++++++++ mm/migrate.c | 3 + mm/swap.c | 3 + mm/vmscan.c | 4 +- 4 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 include/trace/events/inorder_putback.h diff --git a/include/trace/events/inorder_putback.h b/include/trace/events/inorder_putback.h new file mode 100644 index 0000000..fe81742 --- /dev/null +++ b/include/trace/events/inorder_putback.h @@ -0,0 +1,88 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM inorder_putback + +#if !defined(_TRACE_INP_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_INP_H + +#include +#include + +TRACE_EVENT(mm_inorder_inorder, + + TP_PROTO(struct page *page, + struct page *old_page, + struct page *prev_page), + + TP_ARGS(page, old_page, prev_page), + + TP_STRUCT__entry( + __field(struct page *, page) + __field(struct page *, old_page) + __field(struct page *, prev_page) + ), + + TP_fast_assign( + __entry->page = page; + __entry->old_page = old_page; + __entry->prev_page = prev_page; + ), + + TP_printk("pfn=%lu old pfn=%lu prev_pfn=%lu active=%d", + page_to_pfn(__entry->page), + page_to_pfn(__entry->old_page), + page_to_pfn(__entry->prev_page), + PageActive(__entry->prev_page)) +); + +TRACE_EVENT(mm_inorder_outoforder, + TP_PROTO(struct page *page, + struct page *old_page, + struct page *prev_page), + + TP_ARGS(page, old_page, prev_page), + + TP_STRUCT__entry( + __field(struct page *, page) + __field(struct page *, old_page) + __field(struct page *, prev_page) + ), + + TP_fast_assign( + __entry->page = page; + __entry->old_page = old_page; + __entry->prev_page = prev_page; + ), + + TP_printk("pfn=%lu old pfn=%lu prev_pfn=%lu active=%d", + page_to_pfn(__entry->page), + page_to_pfn(__entry->old_page), + __entry->prev_page ? page_to_pfn(__entry->prev_page) : 0, + __entry->prev_page ? PageActive(__entry->prev_page) : 0) +); + +TRACE_EVENT(mm_inorder_isolate, + + TP_PROTO(struct page *prev_page, + struct page *page), + + TP_ARGS(prev_page, page), + + TP_STRUCT__entry( + __field(struct page *, prev_page) + __field(struct page *, page) + ), + + TP_fast_assign( + __entry->prev_page = prev_page; + __entry->page = page; + ), + + TP_printk("prev_pfn=%lu pfn=%lu active=%d", + page_to_pfn(__entry->prev_page), + page_to_pfn(__entry->page), PageActive(__entry->prev_page)) +); + +#endif /* _TRACE_INP_H */ + +/* This part must be outside protection */ +#include diff --git a/mm/migrate.c b/mm/migrate.c index cf73477..1267c45 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -39,6 +39,9 @@ #include "internal.h" +#define CREATE_TRACE_POINTS +#include + #define lru_to_page(_head) (list_entry((_head)->prev, struct page, lru)) /* diff --git a/mm/swap.c b/mm/swap.c index 611013d..f2ccf81 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -32,6 +32,7 @@ #include #include +#include #include "internal.h" /* How many pages do we try to swap or page in/out together? */ @@ -846,12 +847,14 @@ static void ____pagevec_ilru_add_fn(struct page *page, void *arg, int idx) */ adjust_ilru_list(lru, old_page, page, idx); __add_page_to_lru_list(zone, page, lru, &prev_page->lru); + trace_mm_inorder_inorder(page, old_page, prev_page); } else { file = is_file_lru(lru); active = is_active_lru(lru); if (active) SetPageActive(page); add_page_to_lru_list(zone, page, lru); + trace_mm_inorder_outoforder(page, old_page, prev_page); } update_page_reclaim_stat(zone, page, file, active); diff --git a/mm/vmscan.c b/mm/vmscan.c index 957c225..48e0007 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -50,10 +50,9 @@ #include #include "internal.h" - +#include #define CREATE_TRACE_POINTS #include - /* * reclaim_mode determines how the inactive list is shrunk * RECLAIM_MODE_SINGLE: Reclaim only order-0 pages @@ -1055,6 +1054,7 @@ int isolate_ilru_page(struct page *page, isolate_mode_t mode, int file, } *prev_page = lru_to_page(&page->lru); + trace_mm_inorder_isolate(*prev_page, page); } return ret; -- 1.7.4.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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org