]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.trace/lttng-instrumentation-filemap.patch
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.trace / lttng-instrumentation-filemap.patch
diff --git a/src/patches/suse-2.6.27.31/patches.trace/lttng-instrumentation-filemap.patch b/src/patches/suse-2.6.27.31/patches.trace/lttng-instrumentation-filemap.patch
new file mode 100644 (file)
index 0000000..b923d60
--- /dev/null
@@ -0,0 +1,72 @@
+From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+Subject: LTTng instrumentation - filemap
+
+Original patch header:
+  LTTng instrumentation - filemap
+  
+  Instrumentation of waits caused by memory accesses on mmap regions.
+  
+  Those tracepoints are used by LTTng.
+  
+  About the performance impact of tracepoints (which is comparable to markers),
+  even without immediate values optimizations, tests done by Hideo Aoki on ia64
+  show no regression. His test case was using hackbench on a kernel where
+  scheduler instrumentation (about 5 events in code scheduler code) was added.
+  See the "Tracepoints" patch header for performance result detail.
+  
+  Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+  CC: linux-mm@kvack.org
+  CC: Dave Hansen <haveblue@us.ibm.com>
+  CC: Masami Hiramatsu <mhiramat@redhat.com>
+  CC: 'Peter Zijlstra' <peterz@infradead.org>
+  CC: "Frank Ch. Eigler" <fche@redhat.com>
+  CC: 'Ingo Molnar' <mingo@elte.hu>
+  CC: 'Hideo AOKI' <haoki@redhat.com>
+  CC: Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
+  CC: 'Steven Rostedt' <rostedt@goodmis.org>
+  CC: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
+  
+Acked-by: Jan Blunck <jblunck@suse.de>
+---
+ include/trace/filemap.h |   13 +++++++++++++
+ mm/filemap.c            |    3 +++
+ 2 files changed, 16 insertions(+)
+
+--- /dev/null
++++ b/include/trace/filemap.h
+@@ -0,0 +1,13 @@
++#ifndef _TRACE_FILEMAP_H
++#define _TRACE_FILEMAP_H
++
++#include <linux/tracepoint.h>
++
++DEFINE_TRACE(wait_on_page_start,
++      TPPROTO(struct page *page, int bit_nr),
++      TPARGS(page, bit_nr));
++DEFINE_TRACE(wait_on_page_end,
++      TPPROTO(struct page *page, int bit_nr),
++      TPARGS(page, bit_nr));
++
++#endif
+--- a/mm/filemap.c
++++ b/mm/filemap.c
+@@ -34,6 +34,7 @@
+ #include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
+ #include <linux/memcontrol.h>
+ #include "internal.h"
++#include <trace/filemap.h>
+ /*
+  * FIXME: remove all knowledge of the buffer layer from the core VM
+@@ -540,9 +541,11 @@ void wait_on_page_bit(struct page *page,
+ {
+       DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
++      trace_wait_on_page_start(page, bit_nr);
+       if (test_bit(bit_nr, &page->flags))
+               __wait_on_bit(page_waitqueue(page), &wait, sync_page,
+                                                       TASK_UNINTERRUPTIBLE);
++      trace_wait_on_page_end(page, bit_nr);
+ }
+ EXPORT_SYMBOL(wait_on_page_bit);