Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758671Ab0G3NhJ (ORCPT ); Fri, 30 Jul 2010 09:37:09 -0400 Received: from gir.skynet.ie ([193.1.99.77]:55671 "EHLO gir.skynet.ie" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758597Ab0G3NhB (ORCPT ); Fri, 30 Jul 2010 09:37:01 -0400 From: Mel Gorman To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, Dave Chinner , Chris Mason , Nick Piggin , Rik van Riel , Johannes Weiner , Christoph Hellwig , Wu Fengguang , KAMEZAWA Hiroyuki , KOSAKI Motohiro , Andrea Arcangeli , Mel Gorman Subject: [PATCH 2/6] vmscan: tracing: Update trace event to track if page reclaim IO is for anon or file pages Date: Fri, 30 Jul 2010 14:36:56 +0100 Message-Id: <1280497020-22816-3-git-send-email-mel@csn.ul.ie> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1280497020-22816-1-git-send-email-mel@csn.ul.ie> References: <1280497020-22816-1-git-send-email-mel@csn.ul.ie> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2722 Lines: 92 It is useful to distinguish between IO for anon and file pages. This patch updates vmscan-tracing-add-trace-event-when-a-page-is-written.patch to include that information. The patches can be merged together. Signed-off-by: Mel Gorman --- include/trace/events/vmscan.h | 30 ++++++++++++++++++++++++------ mm/vmscan.c | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index f2da66a..69789dc 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -8,6 +8,24 @@ #include #include "gfpflags.h" +#define RECLAIM_WB_ANON 0x0001u +#define RECLAIM_WB_FILE 0x0002u +#define RECLAIM_WB_SYNC 0x0004u +#define RECLAIM_WB_ASYNC 0x0008u + +#define show_reclaim_flags(flags) \ + (flags) ? __print_flags(flags, "|", \ + {RECLAIM_WB_ANON, "RECLAIM_WB_ANON"}, \ + {RECLAIM_WB_FILE, "RECLAIM_WB_FILE"}, \ + {RECLAIM_WB_SYNC, "RECLAIM_WB_SYNC"}, \ + {RECLAIM_WB_ASYNC, "RECLAIM_WB_ASYNC"} \ + ) : "RECLAIM_WB_NONE" + +#define trace_reclaim_flags(page, sync) ( \ + (page_is_file_cache(page) ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \ + (sync == PAGEOUT_IO_SYNC ? RECLAIM_WB_SYNC : RECLAIM_WB_ASYNC) \ + ) + TRACE_EVENT(mm_vmscan_kswapd_sleep, TP_PROTO(int nid), @@ -158,24 +176,24 @@ TRACE_EVENT(mm_vmscan_lru_isolate, TRACE_EVENT(mm_vmscan_writepage, TP_PROTO(struct page *page, - int sync_io), + int reclaim_flags), - TP_ARGS(page, sync_io), + TP_ARGS(page, reclaim_flags), TP_STRUCT__entry( __field(struct page *, page) - __field(int, sync_io) + __field(int, reclaim_flags) ), TP_fast_assign( __entry->page = page; - __entry->sync_io = sync_io; + __entry->reclaim_flags = reclaim_flags; ), - TP_printk("page=%p pfn=%lu sync_io=%d", + TP_printk("page=%p pfn=%lu flags=%s", __entry->page, page_to_pfn(__entry->page), - __entry->sync_io) + show_reclaim_flags(__entry->reclaim_flags)) ); #endif /* _TRACE_VMSCAN_H */ diff --git a/mm/vmscan.c b/mm/vmscan.c index 63447ff..d83812a 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -402,7 +402,7 @@ static pageout_t pageout(struct page *page, struct address_space *mapping, ClearPageReclaim(page); } trace_mm_vmscan_writepage(page, - sync_writeback == PAGEOUT_IO_SYNC); + trace_reclaim_flags(page, sync_writeback)); inc_zone_page_state(page, NR_VMSCAN_WRITE); return PAGE_SUCCESS; } -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/