[PATCH 1/3] writeback: Account for time spent congestion_waited

Previous thread: [PATCH] NOMMU: Stub out vm_get_page_prot() if there's no MMU by David Howells on Thursday, August 26, 2010 - 8:00 am. (1 message)

Next thread: [PATCH 2/3] writeback: Record if the congestion was unnecessary by Mel Gorman on Thursday, August 26, 2010 - 8:14 am. (14 messages)
From: Mel Gorman
Date: Thursday, August 26, 2010 - 8:14 am

There is strong evidence to indicate a lot of time is being spent in
congestion_wait(), some of it unnecessarily. This patch adds a
tracepoint for congestion_wait to record when congestion_wait() occurred
and how long was spent.

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
---
 include/trace/events/writeback.h |   17 +++++++++++++++++
 mm/backing-dev.c                 |    4 ++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
index f345f66..e3bee61 100644
--- a/include/trace/events/writeback.h
+++ b/include/trace/events/writeback.h
@@ -153,6 +153,23 @@ DEFINE_WBC_EVENT(wbc_balance_dirty_written);
 DEFINE_WBC_EVENT(wbc_balance_dirty_wait);
 DEFINE_WBC_EVENT(wbc_writepage);
 
+TRACE_EVENT(writeback_congest_waited,
+
+	TP_PROTO(unsigned int usec_delayed),
+
+	TP_ARGS(usec_delayed),
+
+	TP_STRUCT__entry(
+		__field(	unsigned int,	usec_delayed	)
+	),
+
+	TP_fast_assign(
+		__entry->usec_delayed	= usec_delayed;
+	),
+
+	TP_printk("usec_delayed=%u", __entry->usec_delayed)
+);
+
 #endif /* _TRACE_WRITEBACK_H */
 
 /* This part must be outside protection */
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index eaa4a5b..7ae33e2 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -759,12 +759,16 @@ EXPORT_SYMBOL(set_bdi_congested);
 long congestion_wait(int sync, long timeout)
 {
 	long ret;
+	unsigned long start = jiffies;
 	DEFINE_WAIT(wait);
 	wait_queue_head_t *wqh = &congestion_wqh[sync];
 
 	prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
 	ret = io_schedule_timeout(timeout);
 	finish_wait(wqh, &wait);
+
+	trace_writeback_congest_waited(jiffies_to_usecs(jiffies - start));
+
 	return ret;
 }
 EXPORT_SYMBOL(congestion_wait);
-- 
1.7.1

--

From: Minchan Kim
Date: Thursday, August 26, 2010 - 10:23 am

Reviewed-by: Minchan Kim <minchan.kim@gmail.com>

I think that's enough to add tracepoint until solving this issue at least.

-- 
Kind regards,
Minchan Kim
--

From: Johannes Weiner
Date: Thursday, August 26, 2010 - 11:10 am

Reviewed-by: Johannes Weiner <hannes@cmpxchg.org>
--

Previous thread: [PATCH] NOMMU: Stub out vm_get_page_prot() if there's no MMU by David Howells on Thursday, August 26, 2010 - 8:00 am. (1 message)

Next thread: [PATCH 2/3] writeback: Record if the congestion was unnecessary by Mel Gorman on Thursday, August 26, 2010 - 8:14 am. (14 messages)