* [patch 09/17] LTTng instrumentation - filemap
[not found] <20080715222604.331269462@polymtl.ca>
@ 2008-07-15 22:26 ` Mathieu Desnoyers
2008-07-16 8:35 ` Peter Zijlstra
2008-07-17 6:25 ` Nick Piggin
2008-07-15 22:26 ` [patch 10/17] LTTng instrumentation - swap Mathieu Desnoyers
2008-07-15 22:26 ` [patch 11/17] LTTng instrumentation - memory page faults Mathieu Desnoyers
2 siblings, 2 replies; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-15 22:26 UTC (permalink / raw)
To: akpm, Ingo Molnar, linux-kernel, Peter Zijlstra, Masami Hiramatsu
Cc: Mathieu Desnoyers, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
[-- Attachment #1: lttng-instrumentation-filemap.patch --]
[-- Type: text/plain, Size: 2835 bytes --]
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>
---
include/trace/filemap.h | 13 +++++++++++++
mm/filemap.c | 3 +++
2 files changed, 16 insertions(+)
Index: linux-2.6-lttng/mm/filemap.c
===================================================================
--- linux-2.6-lttng.orig/mm/filemap.c 2008-07-15 14:51:50.000000000 -0400
+++ linux-2.6-lttng/mm/filemap.c 2008-07-15 15:14:46.000000000 -0400
@@ -33,6 +33,7 @@
#include <linux/cpuset.h>
#include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
#include <linux/memcontrol.h>
+#include <trace/filemap.h>
#include "internal.h"
/*
@@ -541,9 +542,11 @@ void wait_on_page_bit(struct page *page,
{
DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
+ trace_filemap_wait_start(page, bit_nr);
if (test_bit(bit_nr, &page->flags))
__wait_on_bit(page_waitqueue(page), &wait, sync_page,
TASK_UNINTERRUPTIBLE);
+ trace_filemap_wait_end(page, bit_nr);
}
EXPORT_SYMBOL(wait_on_page_bit);
Index: linux-2.6-lttng/include/trace/filemap.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6-lttng/include/trace/filemap.h 2008-07-15 15:14:46.000000000 -0400
@@ -0,0 +1,13 @@
+#ifndef _TRACE_FILEMAP_H
+#define _TRACE_FILEMAP_H
+
+#include <linux/tracepoint.h>
+
+DEFINE_TRACE(filemap_wait_start,
+ TPPROTO(struct page *page, int bit_nr),
+ TPARGS(page, bit_nr));
+DEFINE_TRACE(filemap_wait_end,
+ TPPROTO(struct page *page, int bit_nr),
+ TPARGS(page, bit_nr));
+
+#endif
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 10/17] LTTng instrumentation - swap
[not found] <20080715222604.331269462@polymtl.ca>
2008-07-15 22:26 ` [patch 09/17] LTTng instrumentation - filemap Mathieu Desnoyers
@ 2008-07-15 22:26 ` Mathieu Desnoyers
2008-07-16 8:39 ` Peter Zijlstra
2008-07-15 22:26 ` [patch 11/17] LTTng instrumentation - memory page faults Mathieu Desnoyers
2 siblings, 1 reply; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-15 22:26 UTC (permalink / raw)
To: akpm, Ingo Molnar, linux-kernel, Peter Zijlstra, Masami Hiramatsu
Cc: Mathieu Desnoyers, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
[-- Attachment #1: lttng-instrumentation-swap.patch --]
[-- Type: text/plain, Size: 4805 bytes --]
Instrumentation of waits caused by swap activity. Also instrumentation
swapon/swapoff events to keep track of active swap partitions.
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>
---
include/trace/swap.h | 20 ++++++++++++++++++++
mm/memory.c | 2 ++
mm/page_io.c | 2 ++
mm/swapfile.c | 4 ++++
4 files changed, 28 insertions(+)
Index: linux-2.6-lttng/mm/memory.c
===================================================================
--- linux-2.6-lttng.orig/mm/memory.c 2008-07-15 13:54:46.000000000 -0400
+++ linux-2.6-lttng/mm/memory.c 2008-07-15 14:02:54.000000000 -0400
@@ -51,6 +51,7 @@
#include <linux/init.h>
#include <linux/writeback.h>
#include <linux/memcontrol.h>
+#include <trace/swap.h>
#include <asm/pgalloc.h>
#include <asm/uaccess.h>
@@ -2213,6 +2214,7 @@ static int do_swap_page(struct mm_struct
/* Had to read the page from swap area: Major fault */
ret = VM_FAULT_MAJOR;
count_vm_event(PGMAJFAULT);
+ trace_swap_in(page, entry);
}
if (mem_cgroup_charge(page, mm, GFP_KERNEL)) {
Index: linux-2.6-lttng/mm/page_io.c
===================================================================
--- linux-2.6-lttng.orig/mm/page_io.c 2008-07-15 13:54:46.000000000 -0400
+++ linux-2.6-lttng/mm/page_io.c 2008-07-15 14:02:54.000000000 -0400
@@ -17,6 +17,7 @@
#include <linux/bio.h>
#include <linux/swapops.h>
#include <linux/writeback.h>
+#include <trace/swap.h>
#include <asm/pgtable.h>
static struct bio *get_swap_bio(gfp_t gfp_flags, pgoff_t index,
@@ -114,6 +115,7 @@ int swap_writepage(struct page *page, st
rw |= (1 << BIO_RW_SYNC);
count_vm_event(PSWPOUT);
set_page_writeback(page);
+ trace_swap_out(page);
unlock_page(page);
submit_bio(rw, bio);
out:
Index: linux-2.6-lttng/mm/swapfile.c
===================================================================
--- linux-2.6-lttng.orig/mm/swapfile.c 2008-07-15 13:54:46.000000000 -0400
+++ linux-2.6-lttng/mm/swapfile.c 2008-07-15 14:02:54.000000000 -0400
@@ -32,6 +32,7 @@
#include <asm/pgtable.h>
#include <asm/tlbflush.h>
#include <linux/swapops.h>
+#include <trace/swap.h>
DEFINE_SPINLOCK(swap_lock);
unsigned int nr_swapfiles;
@@ -1310,6 +1311,7 @@ asmlinkage long sys_swapoff(const char _
swap_map = p->swap_map;
p->swap_map = NULL;
p->flags = 0;
+ trace_swap_file_close(swap_file);
spin_unlock(&swap_lock);
mutex_unlock(&swapon_mutex);
vfree(swap_map);
@@ -1695,6 +1697,7 @@ asmlinkage long sys_swapon(const char __
} else {
swap_info[prev].next = p - swap_info;
}
+ trace_swap_file_open(swap_file, name);
spin_unlock(&swap_lock);
mutex_unlock(&swapon_mutex);
error = 0;
@@ -1796,6 +1799,7 @@ get_swap_info_struct(unsigned type)
{
return &swap_info[type];
}
+EXPORT_SYMBOL_GPL(get_swap_info_struct);
/*
* swap_lock prevents swap_map being freed. Don't grab an extra
Index: linux-2.6-lttng/include/trace/swap.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6-lttng/include/trace/swap.h 2008-07-15 14:02:54.000000000 -0400
@@ -0,0 +1,20 @@
+#ifndef _TRACE_SWAP_H
+#define _TRACE_SWAP_H
+
+#include <linux/swap.h>
+#include <linux/tracepoint.h>
+
+DEFINE_TRACE(swap_in,
+ TPPROTO(struct page *page, swp_entry_t entry),
+ TPARGS(page, entry));
+DEFINE_TRACE(swap_out,
+ TPPROTO(struct page *page),
+ TPARGS(page));
+DEFINE_TRACE(swap_file_open,
+ TPPROTO(struct file *file, char *filename),
+ TPARGS(file, filename));
+DEFINE_TRACE(swap_file_close,
+ TPPROTO(struct file *file),
+ TPARGS(file));
+
+#endif
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 11/17] LTTng instrumentation - memory page faults
[not found] <20080715222604.331269462@polymtl.ca>
2008-07-15 22:26 ` [patch 09/17] LTTng instrumentation - filemap Mathieu Desnoyers
2008-07-15 22:26 ` [patch 10/17] LTTng instrumentation - swap Mathieu Desnoyers
@ 2008-07-15 22:26 ` Mathieu Desnoyers
2 siblings, 0 replies; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-15 22:26 UTC (permalink / raw)
To: akpm, Ingo Molnar, linux-kernel, Peter Zijlstra, Masami Hiramatsu
Cc: Mathieu Desnoyers, Andi Kleen, linux-mm, Dave Hansen,
Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
[-- Attachment #1: lttng-instrumentation-memory.patch --]
[-- Type: text/plain, Size: 3899 bytes --]
Instrument the page fault entry and exit. Useful to detect delays caused by page
faults and bad memory usage patterns.
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: Andi Kleen <andi-suse@firstfloor.org>
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>
---
include/trace/memory.h | 14 ++++++++++++++
mm/memory.c | 33 ++++++++++++++++++++++++---------
2 files changed, 38 insertions(+), 9 deletions(-)
Index: linux-2.6-lttng/mm/memory.c
===================================================================
--- linux-2.6-lttng.orig/mm/memory.c 2008-07-15 14:02:54.000000000 -0400
+++ linux-2.6-lttng/mm/memory.c 2008-07-15 14:03:47.000000000 -0400
@@ -61,6 +61,7 @@
#include <linux/swapops.h>
#include <linux/elf.h>
+#include <trace/memory.h>
#ifndef CONFIG_NEED_MULTIPLE_NODES
/* use the per-pgdat data instead for discontigmem - mbligh */
@@ -2664,30 +2665,44 @@ unlock:
int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, int write_access)
{
+ int res;
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd;
pte_t *pte;
+ trace_memory_handle_fault_entry(mm, vma, address, write_access);
+
__set_current_state(TASK_RUNNING);
count_vm_event(PGFAULT);
- if (unlikely(is_vm_hugetlb_page(vma)))
- return hugetlb_fault(mm, vma, address, write_access);
+ if (unlikely(is_vm_hugetlb_page(vma))) {
+ res = hugetlb_fault(mm, vma, address, write_access);
+ goto end;
+ }
pgd = pgd_offset(mm, address);
pud = pud_alloc(mm, pgd, address);
- if (!pud)
- return VM_FAULT_OOM;
+ if (!pud) {
+ res = VM_FAULT_OOM;
+ goto end;
+ }
pmd = pmd_alloc(mm, pud, address);
- if (!pmd)
- return VM_FAULT_OOM;
+ if (!pmd) {
+ res = VM_FAULT_OOM;
+ goto end;
+ }
pte = pte_alloc_map(mm, pmd, address);
- if (!pte)
- return VM_FAULT_OOM;
+ if (!pte) {
+ res = VM_FAULT_OOM;
+ goto end;
+ }
- return handle_pte_fault(mm, vma, address, pte, pmd, write_access);
+ res = handle_pte_fault(mm, vma, address, pte, pmd, write_access);
+end:
+ trace_memory_handle_fault_exit(res);
+ return res;
}
#ifndef __PAGETABLE_PUD_FOLDED
Index: linux-2.6-lttng/include/trace/memory.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6-lttng/include/trace/memory.h 2008-07-15 14:03:47.000000000 -0400
@@ -0,0 +1,14 @@
+#ifndef _TRACE_MEMORY_H
+#define _TRACE_MEMORY_H
+
+#include <linux/tracepoint.h>
+
+DEFINE_TRACE(memory_handle_fault_entry,
+ TPPROTO(struct mm_struct *mm, struct vm_area_struct *vma,
+ unsigned long address, int write_access),
+ TPARGS(mm, vma, address, write_access));
+DEFINE_TRACE(memory_handle_fault_exit,
+ TPPROTO(int res),
+ TPARGS(res));
+
+#endif
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/17] LTTng instrumentation - filemap
2008-07-15 22:26 ` [patch 09/17] LTTng instrumentation - filemap Mathieu Desnoyers
@ 2008-07-16 8:35 ` Peter Zijlstra
2008-07-16 14:37 ` Mathieu Desnoyers
2008-07-17 6:25 ` Nick Piggin
1 sibling, 1 reply; 14+ messages in thread
From: Peter Zijlstra @ 2008-07-16 8:35 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: akpm, Ingo Molnar, linux-kernel, Masami Hiramatsu, linux-mm,
Dave Hansen, Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie,
Steven Rostedt, Eduard - Gabriel Munteanu
On Tue, 2008-07-15 at 18:26 -0400, Mathieu Desnoyers wrote:
> plain text document attachment (lttng-instrumentation-filemap.patch)
> 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>
> ---
> include/trace/filemap.h | 13 +++++++++++++
> mm/filemap.c | 3 +++
> 2 files changed, 16 insertions(+)
>
> Index: linux-2.6-lttng/mm/filemap.c
> ===================================================================
> --- linux-2.6-lttng.orig/mm/filemap.c 2008-07-15 14:51:50.000000000 -0400
> +++ linux-2.6-lttng/mm/filemap.c 2008-07-15 15:14:46.000000000 -0400
> @@ -33,6 +33,7 @@
> #include <linux/cpuset.h>
> #include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
> #include <linux/memcontrol.h>
> +#include <trace/filemap.h>
> #include "internal.h"
>
> /*
> @@ -541,9 +542,11 @@ void wait_on_page_bit(struct page *page,
> {
> DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
>
> + trace_filemap_wait_start(page, bit_nr);
> if (test_bit(bit_nr, &page->flags))
> __wait_on_bit(page_waitqueue(page), &wait, sync_page,
> TASK_UNINTERRUPTIBLE);
> + trace_filemap_wait_end(page, bit_nr);
> }
> EXPORT_SYMBOL(wait_on_page_bit);
I don't like the trace_filemap_wait_* naming..
trace_wait_on_page_* might make more sense
> Index: linux-2.6-lttng/include/trace/filemap.h
> ===================================================================
> --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> +++ linux-2.6-lttng/include/trace/filemap.h 2008-07-15 15:14:46.000000000 -0400
> @@ -0,0 +1,13 @@
> +#ifndef _TRACE_FILEMAP_H
> +#define _TRACE_FILEMAP_H
> +
> +#include <linux/tracepoint.h>
> +
> +DEFINE_TRACE(filemap_wait_start,
> + TPPROTO(struct page *page, int bit_nr),
> + TPARGS(page, bit_nr));
> +DEFINE_TRACE(filemap_wait_end,
> + TPPROTO(struct page *page, int bit_nr),
> + TPARGS(page, bit_nr));
> +
> +#endif
>
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 10/17] LTTng instrumentation - swap
2008-07-15 22:26 ` [patch 10/17] LTTng instrumentation - swap Mathieu Desnoyers
@ 2008-07-16 8:39 ` Peter Zijlstra
2008-07-16 14:40 ` Mathieu Desnoyers
0 siblings, 1 reply; 14+ messages in thread
From: Peter Zijlstra @ 2008-07-16 8:39 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: akpm, Ingo Molnar, linux-kernel, Masami Hiramatsu, linux-mm,
Dave Hansen, Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie,
Steven Rostedt, Eduard - Gabriel Munteanu
On Tue, 2008-07-15 at 18:26 -0400, Mathieu Desnoyers wrote:
> plain text document attachment (lttng-instrumentation-swap.patch)
> Instrumentation of waits caused by swap activity. Also instrumentation
> swapon/swapoff events to keep track of active swap partitions.
>
> 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>
> ---
> include/trace/swap.h | 20 ++++++++++++++++++++
> mm/memory.c | 2 ++
> mm/page_io.c | 2 ++
> mm/swapfile.c | 4 ++++
> 4 files changed, 28 insertions(+)
>
> Index: linux-2.6-lttng/mm/memory.c
> ===================================================================
> --- linux-2.6-lttng.orig/mm/memory.c 2008-07-15 13:54:46.000000000 -0400
> +++ linux-2.6-lttng/mm/memory.c 2008-07-15 14:02:54.000000000 -0400
> @@ -51,6 +51,7 @@
> #include <linux/init.h>
> #include <linux/writeback.h>
> #include <linux/memcontrol.h>
> +#include <trace/swap.h>
>
> #include <asm/pgalloc.h>
> #include <asm/uaccess.h>
> @@ -2213,6 +2214,7 @@ static int do_swap_page(struct mm_struct
> /* Had to read the page from swap area: Major fault */
> ret = VM_FAULT_MAJOR;
> count_vm_event(PGMAJFAULT);
> + trace_swap_in(page, entry);
> }
>
> if (mem_cgroup_charge(page, mm, GFP_KERNEL)) {
> Index: linux-2.6-lttng/mm/page_io.c
> ===================================================================
> --- linux-2.6-lttng.orig/mm/page_io.c 2008-07-15 13:54:46.000000000 -0400
> +++ linux-2.6-lttng/mm/page_io.c 2008-07-15 14:02:54.000000000 -0400
> @@ -17,6 +17,7 @@
> #include <linux/bio.h>
> #include <linux/swapops.h>
> #include <linux/writeback.h>
> +#include <trace/swap.h>
> #include <asm/pgtable.h>
>
> static struct bio *get_swap_bio(gfp_t gfp_flags, pgoff_t index,
> @@ -114,6 +115,7 @@ int swap_writepage(struct page *page, st
> rw |= (1 << BIO_RW_SYNC);
> count_vm_event(PSWPOUT);
> set_page_writeback(page);
> + trace_swap_out(page);
> unlock_page(page);
> submit_bio(rw, bio);
> out:
> Index: linux-2.6-lttng/mm/swapfile.c
> ===================================================================
> --- linux-2.6-lttng.orig/mm/swapfile.c 2008-07-15 13:54:46.000000000 -0400
> +++ linux-2.6-lttng/mm/swapfile.c 2008-07-15 14:02:54.000000000 -0400
> @@ -32,6 +32,7 @@
> #include <asm/pgtable.h>
> #include <asm/tlbflush.h>
> #include <linux/swapops.h>
> +#include <trace/swap.h>
>
> DEFINE_SPINLOCK(swap_lock);
> unsigned int nr_swapfiles;
> @@ -1310,6 +1311,7 @@ asmlinkage long sys_swapoff(const char _
> swap_map = p->swap_map;
> p->swap_map = NULL;
> p->flags = 0;
> + trace_swap_file_close(swap_file);
> spin_unlock(&swap_lock);
> mutex_unlock(&swapon_mutex);
> vfree(swap_map);
> @@ -1695,6 +1697,7 @@ asmlinkage long sys_swapon(const char __
> } else {
> swap_info[prev].next = p - swap_info;
> }
> + trace_swap_file_open(swap_file, name);
> spin_unlock(&swap_lock);
> mutex_unlock(&swapon_mutex);
> error = 0;
> @@ -1796,6 +1799,7 @@ get_swap_info_struct(unsigned type)
> {
> return &swap_info[type];
> }
> +EXPORT_SYMBOL_GPL(get_swap_info_struct);
I'm not too happy with this export.
>
> /*
> * swap_lock prevents swap_map being freed. Don't grab an extra
> Index: linux-2.6-lttng/include/trace/swap.h
> ===================================================================
> --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> +++ linux-2.6-lttng/include/trace/swap.h 2008-07-15 14:02:54.000000000 -0400
> @@ -0,0 +1,20 @@
> +#ifndef _TRACE_SWAP_H
> +#define _TRACE_SWAP_H
> +
> +#include <linux/swap.h>
> +#include <linux/tracepoint.h>
> +
> +DEFINE_TRACE(swap_in,
> + TPPROTO(struct page *page, swp_entry_t entry),
> + TPARGS(page, entry));
> +DEFINE_TRACE(swap_out,
> + TPPROTO(struct page *page),
> + TPARGS(page));
> +DEFINE_TRACE(swap_file_open,
> + TPPROTO(struct file *file, char *filename),
> + TPARGS(file, filename));
> +DEFINE_TRACE(swap_file_close,
> + TPPROTO(struct file *file),
> + TPARGS(file));
> +
> +#endif
>
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/17] LTTng instrumentation - filemap
2008-07-16 8:35 ` Peter Zijlstra
@ 2008-07-16 14:37 ` Mathieu Desnoyers
0 siblings, 0 replies; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-16 14:37 UTC (permalink / raw)
To: Peter Zijlstra
Cc: akpm, Ingo Molnar, linux-kernel, Masami Hiramatsu, linux-mm,
Dave Hansen, Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie,
Steven Rostedt, Eduard - Gabriel Munteanu
* Peter Zijlstra (peterz@infradead.org) wrote:
> On Tue, 2008-07-15 at 18:26 -0400, Mathieu Desnoyers wrote:
> > plain text document attachment (lttng-instrumentation-filemap.patch)
> > 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>
> > ---
> > include/trace/filemap.h | 13 +++++++++++++
> > mm/filemap.c | 3 +++
> > 2 files changed, 16 insertions(+)
> >
> > Index: linux-2.6-lttng/mm/filemap.c
> > ===================================================================
> > --- linux-2.6-lttng.orig/mm/filemap.c 2008-07-15 14:51:50.000000000 -0400
> > +++ linux-2.6-lttng/mm/filemap.c 2008-07-15 15:14:46.000000000 -0400
> > @@ -33,6 +33,7 @@
> > #include <linux/cpuset.h>
> > #include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
> > #include <linux/memcontrol.h>
> > +#include <trace/filemap.h>
> > #include "internal.h"
> >
> > /*
> > @@ -541,9 +542,11 @@ void wait_on_page_bit(struct page *page,
> > {
> > DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
> >
> > + trace_filemap_wait_start(page, bit_nr);
> > if (test_bit(bit_nr, &page->flags))
> > __wait_on_bit(page_waitqueue(page), &wait, sync_page,
> > TASK_UNINTERRUPTIBLE);
> > + trace_filemap_wait_end(page, bit_nr);
> > }
> > EXPORT_SYMBOL(wait_on_page_bit);
>
> I don't like the trace_filemap_wait_* naming..
>
Me neither :)
> trace_wait_on_page_* might make more sense
>
Yep, agreed,
Mathieu
> > Index: linux-2.6-lttng/include/trace/filemap.h
> > ===================================================================
> > --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> > +++ linux-2.6-lttng/include/trace/filemap.h 2008-07-15 15:14:46.000000000 -0400
> > @@ -0,0 +1,13 @@
> > +#ifndef _TRACE_FILEMAP_H
> > +#define _TRACE_FILEMAP_H
> > +
> > +#include <linux/tracepoint.h>
> > +
> > +DEFINE_TRACE(filemap_wait_start,
> > + TPPROTO(struct page *page, int bit_nr),
> > + TPARGS(page, bit_nr));
> > +DEFINE_TRACE(filemap_wait_end,
> > + TPPROTO(struct page *page, int bit_nr),
> > + TPARGS(page, bit_nr));
> > +
> > +#endif
> >
>
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 10/17] LTTng instrumentation - swap
2008-07-16 8:39 ` Peter Zijlstra
@ 2008-07-16 14:40 ` Mathieu Desnoyers
2008-07-16 14:47 ` Peter Zijlstra
0 siblings, 1 reply; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-16 14:40 UTC (permalink / raw)
To: Peter Zijlstra
Cc: akpm, Ingo Molnar, linux-kernel, Masami Hiramatsu, linux-mm,
Dave Hansen, Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie,
Steven Rostedt, Eduard - Gabriel Munteanu
* Peter Zijlstra (peterz@infradead.org) wrote:
> On Tue, 2008-07-15 at 18:26 -0400, Mathieu Desnoyers wrote:
> > plain text document attachment (lttng-instrumentation-swap.patch)
> > Instrumentation of waits caused by swap activity. Also instrumentation
> > swapon/swapoff events to keep track of active swap partitions.
> >
> > 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>
> > ---
> > include/trace/swap.h | 20 ++++++++++++++++++++
> > mm/memory.c | 2 ++
> > mm/page_io.c | 2 ++
> > mm/swapfile.c | 4 ++++
> > 4 files changed, 28 insertions(+)
> >
> > Index: linux-2.6-lttng/mm/memory.c
> > ===================================================================
> > --- linux-2.6-lttng.orig/mm/memory.c 2008-07-15 13:54:46.000000000 -0400
> > +++ linux-2.6-lttng/mm/memory.c 2008-07-15 14:02:54.000000000 -0400
> > @@ -51,6 +51,7 @@
> > #include <linux/init.h>
> > #include <linux/writeback.h>
> > #include <linux/memcontrol.h>
> > +#include <trace/swap.h>
> >
> > #include <asm/pgalloc.h>
> > #include <asm/uaccess.h>
> > @@ -2213,6 +2214,7 @@ static int do_swap_page(struct mm_struct
> > /* Had to read the page from swap area: Major fault */
> > ret = VM_FAULT_MAJOR;
> > count_vm_event(PGMAJFAULT);
> > + trace_swap_in(page, entry);
> > }
> >
> > if (mem_cgroup_charge(page, mm, GFP_KERNEL)) {
> > Index: linux-2.6-lttng/mm/page_io.c
> > ===================================================================
> > --- linux-2.6-lttng.orig/mm/page_io.c 2008-07-15 13:54:46.000000000 -0400
> > +++ linux-2.6-lttng/mm/page_io.c 2008-07-15 14:02:54.000000000 -0400
> > @@ -17,6 +17,7 @@
> > #include <linux/bio.h>
> > #include <linux/swapops.h>
> > #include <linux/writeback.h>
> > +#include <trace/swap.h>
> > #include <asm/pgtable.h>
> >
> > static struct bio *get_swap_bio(gfp_t gfp_flags, pgoff_t index,
> > @@ -114,6 +115,7 @@ int swap_writepage(struct page *page, st
> > rw |= (1 << BIO_RW_SYNC);
> > count_vm_event(PSWPOUT);
> > set_page_writeback(page);
> > + trace_swap_out(page);
> > unlock_page(page);
> > submit_bio(rw, bio);
> > out:
> > Index: linux-2.6-lttng/mm/swapfile.c
> > ===================================================================
> > --- linux-2.6-lttng.orig/mm/swapfile.c 2008-07-15 13:54:46.000000000 -0400
> > +++ linux-2.6-lttng/mm/swapfile.c 2008-07-15 14:02:54.000000000 -0400
> > @@ -32,6 +32,7 @@
> > #include <asm/pgtable.h>
> > #include <asm/tlbflush.h>
> > #include <linux/swapops.h>
> > +#include <trace/swap.h>
> >
> > DEFINE_SPINLOCK(swap_lock);
> > unsigned int nr_swapfiles;
> > @@ -1310,6 +1311,7 @@ asmlinkage long sys_swapoff(const char _
> > swap_map = p->swap_map;
> > p->swap_map = NULL;
> > p->flags = 0;
> > + trace_swap_file_close(swap_file);
> > spin_unlock(&swap_lock);
> > mutex_unlock(&swapon_mutex);
> > vfree(swap_map);
> > @@ -1695,6 +1697,7 @@ asmlinkage long sys_swapon(const char __
> > } else {
> > swap_info[prev].next = p - swap_info;
> > }
> > + trace_swap_file_open(swap_file, name);
> > spin_unlock(&swap_lock);
> > mutex_unlock(&swapon_mutex);
> > error = 0;
> > @@ -1796,6 +1799,7 @@ get_swap_info_struct(unsigned type)
> > {
> > return &swap_info[type];
> > }
> > +EXPORT_SYMBOL_GPL(get_swap_info_struct);
>
> I'm not too happy with this export.
>
Would it make more sense to turn get_swap_info_struct into a static
inline in swap.h ?
Mathieu
> >
> > /*
> > * swap_lock prevents swap_map being freed. Don't grab an extra
> > Index: linux-2.6-lttng/include/trace/swap.h
> > ===================================================================
> > --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> > +++ linux-2.6-lttng/include/trace/swap.h 2008-07-15 14:02:54.000000000 -0400
> > @@ -0,0 +1,20 @@
> > +#ifndef _TRACE_SWAP_H
> > +#define _TRACE_SWAP_H
> > +
> > +#include <linux/swap.h>
> > +#include <linux/tracepoint.h>
> > +
> > +DEFINE_TRACE(swap_in,
> > + TPPROTO(struct page *page, swp_entry_t entry),
> > + TPARGS(page, entry));
> > +DEFINE_TRACE(swap_out,
> > + TPPROTO(struct page *page),
> > + TPARGS(page));
> > +DEFINE_TRACE(swap_file_open,
> > + TPPROTO(struct file *file, char *filename),
> > + TPARGS(file, filename));
> > +DEFINE_TRACE(swap_file_close,
> > + TPPROTO(struct file *file),
> > + TPARGS(file));
> > +
> > +#endif
> >
>
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 10/17] LTTng instrumentation - swap
2008-07-16 14:40 ` Mathieu Desnoyers
@ 2008-07-16 14:47 ` Peter Zijlstra
2008-07-16 15:00 ` Mathieu Desnoyers
0 siblings, 1 reply; 14+ messages in thread
From: Peter Zijlstra @ 2008-07-16 14:47 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: akpm, Ingo Molnar, linux-kernel, Masami Hiramatsu, linux-mm,
Dave Hansen, Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie,
Steven Rostedt, Eduard - Gabriel Munteanu
On Wed, 2008-07-16 at 10:40 -0400, Mathieu Desnoyers wrote:
> * Peter Zijlstra (peterz@infradead.org) wrote:
> > On Tue, 2008-07-15 at 18:26 -0400, Mathieu Desnoyers wrote:
> > > @@ -1796,6 +1799,7 @@ get_swap_info_struct(unsigned type)
> > > {
> > > return &swap_info[type];
> > > }
> > > +EXPORT_SYMBOL_GPL(get_swap_info_struct);
> >
> > I'm not too happy with this export.
> >
>
> Would it make more sense to turn get_swap_info_struct into a static
> inline in swap.h ?
Seeing a consumer of it would go a long way towards discussing it ;-)
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 10/17] LTTng instrumentation - swap
2008-07-16 14:47 ` Peter Zijlstra
@ 2008-07-16 15:00 ` Mathieu Desnoyers
2008-07-16 15:50 ` KOSAKI Motohiro
0 siblings, 1 reply; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-16 15:00 UTC (permalink / raw)
To: Peter Zijlstra
Cc: akpm, Ingo Molnar, linux-kernel, Masami Hiramatsu, linux-mm,
Dave Hansen, Frank Ch. Eigler, Hideo AOKI, Takashi Nishiie,
Steven Rostedt, Eduard - Gabriel Munteanu
* Peter Zijlstra (peterz@infradead.org) wrote:
> On Wed, 2008-07-16 at 10:40 -0400, Mathieu Desnoyers wrote:
> > * Peter Zijlstra (peterz@infradead.org) wrote:
> > > On Tue, 2008-07-15 at 18:26 -0400, Mathieu Desnoyers wrote:
>
> > > > @@ -1796,6 +1799,7 @@ get_swap_info_struct(unsigned type)
> > > > {
> > > > return &swap_info[type];
> > > > }
> > > > +EXPORT_SYMBOL_GPL(get_swap_info_struct);
> > >
> > > I'm not too happy with this export.
> > >
> >
> > Would it make more sense to turn get_swap_info_struct into a static
> > inline in swap.h ?
>
> Seeing a consumer of it would go a long way towards discussing it ;-)
>
The LTTng probe which connects to this tracepoint looks like :
+static void probe_swap_out(struct page *page)
+{
+ trace_mark(mm_swap_out, "pfn %lu filp %p offset %lu",
+ page_to_pfn(page),
+ get_swap_info_struct(swp_type(
+ page_swp_entry(page)))->swap_file,
+ swp_offset(page_swp_entry(page)));
+}
So, I need get_swap_info_struct to extract the swap file pointer from
the swap entry.
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 10/17] LTTng instrumentation - swap
2008-07-16 15:00 ` Mathieu Desnoyers
@ 2008-07-16 15:50 ` KOSAKI Motohiro
2008-07-16 16:17 ` Mathieu Desnoyers
0 siblings, 1 reply; 14+ messages in thread
From: KOSAKI Motohiro @ 2008-07-16 15:50 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: kosaki.motohiro, Peter Zijlstra, akpm, Ingo Molnar, linux-kernel,
Masami Hiramatsu, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
Hi
> > > Would it make more sense to turn get_swap_info_struct into a static
> > > inline in swap.h ?
> >
> > Seeing a consumer of it would go a long way towards discussing it ;-)
>
> The LTTng probe which connects to this tracepoint looks like :
I have no objection to this exporting.
However, This is LTTng requirement.
but tracepoint is tracer independent mechanism.
then, split out is better IMHO.
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 10/17] LTTng instrumentation - swap
2008-07-16 15:50 ` KOSAKI Motohiro
@ 2008-07-16 16:17 ` Mathieu Desnoyers
0 siblings, 0 replies; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-16 16:17 UTC (permalink / raw)
To: KOSAKI Motohiro
Cc: Peter Zijlstra, akpm, Ingo Molnar, linux-kernel,
Masami Hiramatsu, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
* KOSAKI Motohiro (kosaki.motohiro@jp.fujitsu.com) wrote:
> Hi
>
> > > > Would it make more sense to turn get_swap_info_struct into a static
> > > > inline in swap.h ?
> > >
> > > Seeing a consumer of it would go a long way towards discussing it ;-)
> >
> > The LTTng probe which connects to this tracepoint looks like :
>
> I have no objection to this exporting.
>
> However, This is LTTng requirement.
> but tracepoint is tracer independent mechanism.
> then, split out is better IMHO.
>
Good point. I'll move it to my following lttng-specific patches.
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/17] LTTng instrumentation - filemap
2008-07-15 22:26 ` [patch 09/17] LTTng instrumentation - filemap Mathieu Desnoyers
2008-07-16 8:35 ` Peter Zijlstra
@ 2008-07-17 6:25 ` Nick Piggin
2008-07-17 7:02 ` Mathieu Desnoyers
1 sibling, 1 reply; 14+ messages in thread
From: Nick Piggin @ 2008-07-17 6:25 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: akpm, Ingo Molnar, linux-kernel, Peter Zijlstra,
Masami Hiramatsu, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
On Wednesday 16 July 2008 08:26, Mathieu Desnoyers wrote:
> 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.
BTW. this sort of test is practically useless to measure overhead. If
a modern CPU is executing out of primed insn/data and branch prediction
cache, then yes this sort of thing is pretty well free.
I see *real* workloads that have got continually and incrementally slower
eg from 2.6.5 to 2.6.20+ as "features" get added. Surprisingly, none of
them ever showed up individually on a microbenchmark.
OK, for this case if you can configure it out, I guess that's fine. But
let's not pretend that adding code and branches and function calls are
ever free.
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/17] LTTng instrumentation - filemap
2008-07-17 6:25 ` Nick Piggin
@ 2008-07-17 7:02 ` Mathieu Desnoyers
2008-07-17 7:11 ` Nick Piggin
0 siblings, 1 reply; 14+ messages in thread
From: Mathieu Desnoyers @ 2008-07-17 7:02 UTC (permalink / raw)
To: Nick Piggin
Cc: akpm, Ingo Molnar, linux-kernel, Peter Zijlstra,
Masami Hiramatsu, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
* Nick Piggin (nickpiggin@yahoo.com.au) wrote:
> On Wednesday 16 July 2008 08:26, Mathieu Desnoyers wrote:
> > 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.
>
> BTW. this sort of test is practically useless to measure overhead. If
> a modern CPU is executing out of primed insn/data and branch prediction
> cache, then yes this sort of thing is pretty well free.
>
> I see *real* workloads that have got continually and incrementally slower
> eg from 2.6.5 to 2.6.20+ as "features" get added. Surprisingly, none of
> them ever showed up individually on a microbenchmark.
>
> OK, for this case if you can configure it out, I guess that's fine. But
> let's not pretend that adding code and branches and function calls are
> ever free.
I never pretended anything like that. Actually, that's what the
"immediate values" are for : they allow to patch load immediate value
instead of a memory read to decrease d-cache impact. They now allow to
patch a jump instead of the memory read/immediate value read + test +
conditional branch to skip the function call with fairly minimal impact.
I agree with you that eating precious d-cache and jump prediction buffer
entries can eventually slow down the system. But this will be _hard_ to
show on a single macro benchmark, and the microbenchmark showing it will
have to be taken in conditions which will exacerbate the d-cache and BPB
impact.
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/17] LTTng instrumentation - filemap
2008-07-17 7:02 ` Mathieu Desnoyers
@ 2008-07-17 7:11 ` Nick Piggin
0 siblings, 0 replies; 14+ messages in thread
From: Nick Piggin @ 2008-07-17 7:11 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: akpm, Ingo Molnar, linux-kernel, Peter Zijlstra,
Masami Hiramatsu, linux-mm, Dave Hansen, Frank Ch. Eigler,
Hideo AOKI, Takashi Nishiie, Steven Rostedt,
Eduard - Gabriel Munteanu
On Thursday 17 July 2008 17:02, Mathieu Desnoyers wrote:
> * Nick Piggin (nickpiggin@yahoo.com.au) wrote:
> > On Wednesday 16 July 2008 08:26, Mathieu Desnoyers wrote:
> > > 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.
> >
> > BTW. this sort of test is practically useless to measure overhead. If
> > a modern CPU is executing out of primed insn/data and branch prediction
> > cache, then yes this sort of thing is pretty well free.
> >
> > I see *real* workloads that have got continually and incrementally slower
> > eg from 2.6.5 to 2.6.20+ as "features" get added. Surprisingly, none of
> > them ever showed up individually on a microbenchmark.
> >
> > OK, for this case if you can configure it out, I guess that's fine. But
> > let's not pretend that adding code and branches and function calls are
> > ever free.
>
> I never pretended anything like that. Actually, that's what the
OK but saying "there is no detectable impact when running hackbench" is
basically meaningless.
> "immediate values" are for : they allow to patch load immediate value
> instead of a memory read to decrease d-cache impact. They now allow to
> patch a jump instead of the memory read/immediate value read + test +
> conditional branch to skip the function call with fairly minimal impact.
> I agree with you that eating precious d-cache and jump prediction buffer
> entries can eventually slow down the system. But this will be _hard_ to
> show on a single macro benchmark, and the microbenchmark showing it will
> have to be taken in conditions which will exacerbate the d-cache and BPB
> impact.
I'm not saying you have to reproduce it (although Intel's Oracle OLTP
benchmark is very sensitive to that kind of thing and schedule() is near
the top). But just acknowledge that it adds some cost. OK you're one of
the few people really trying hard to count every cycle so I don't mean to
pick on this code in particular.
--
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>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2008-07-17 7:11 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20080715222604.331269462@polymtl.ca>
2008-07-15 22:26 ` [patch 09/17] LTTng instrumentation - filemap Mathieu Desnoyers
2008-07-16 8:35 ` Peter Zijlstra
2008-07-16 14:37 ` Mathieu Desnoyers
2008-07-17 6:25 ` Nick Piggin
2008-07-17 7:02 ` Mathieu Desnoyers
2008-07-17 7:11 ` Nick Piggin
2008-07-15 22:26 ` [patch 10/17] LTTng instrumentation - swap Mathieu Desnoyers
2008-07-16 8:39 ` Peter Zijlstra
2008-07-16 14:40 ` Mathieu Desnoyers
2008-07-16 14:47 ` Peter Zijlstra
2008-07-16 15:00 ` Mathieu Desnoyers
2008-07-16 15:50 ` KOSAKI Motohiro
2008-07-16 16:17 ` Mathieu Desnoyers
2008-07-15 22:26 ` [patch 11/17] LTTng instrumentation - memory page faults Mathieu Desnoyers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox