Messages in this thread Patch in this message | | | Date | Tue, 17 Feb 2009 20:04:28 +0900 | From | Atsushi Tsuji <> | Subject | Re: [PATCH] Add tracepoints to track pagecache transition |
| |
Peter Zijlstra wrote: > On Tue, 2009-02-17 at 18:00 +0900, Atsushi Tsuji wrote: > >> The below patch adds instrumentation for pagecache. > > And somehow you forgot to CC any of the mm people.. ;-)
Hi Peter,
Ah, sorry. Thank you for adding to CC list.
>> +DECLARE_TRACE(filemap_add_to_page_cache, >> + TPPROTO(struct address_space *mapping, pgoff_t offset), >> + TPARGS(mapping, offset)); >> +DECLARE_TRACE(filemap_remove_from_page_cache, >> + TPPROTO(struct address_space *mapping), >> + TPARGS(mapping)); > > This is rather asymmetric, why don't we care about the offset for the > removed page? >
Indeed. I added the offset to the argument for the removed page and resend fixed patch.
Signed-off-by: Atsushi Tsuji <a-tsuji@bk.jp.nec.com> --- diff --git a/include/trace/filemap.h b/include/trace/filemap.h new file mode 100644 index 0000000..a17dc92 --- /dev/null +++ b/include/trace/filemap.h @@ -0,0 +1,13 @@ +#ifndef _TRACE_FILEMAP_H +#define _TRACE_FILEMAP_H + +#include <linux/tracepoint.h> + +DECLARE_TRACE(filemap_add_to_page_cache, + TPPROTO(struct address_space *mapping, pgoff_t offset), + TPARGS(mapping, offset)); +DECLARE_TRACE(filemap_remove_from_page_cache, + TPPROTO(struct address_space *mapping, pgoff_t offset), + TPARGS(mapping, offset)); + +#endif diff --git a/mm/filemap.c b/mm/filemap.c index 23acefe..23f75d2 100644 --- 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 <linux/mm_inline.h> /* for page_is_file_cache() */ +#include <trace/filemap.h> #include "internal.h" /* @@ -43,6 +44,8 @@ #include <asm/mman.h> +DEFINE_TRACE(filemap_add_to_page_cache); +DEFINE_TRACE(filemap_remove_from_page_cache); /* * Shared mappings implemented 30.11.1994. It's not fully working yet, @@ -120,6 +123,7 @@ void __remove_from_page_cache(struct page *page) page->mapping = NULL; mapping->nrpages--; __dec_zone_page_state(page, NR_FILE_PAGES); + trace_filemap_remove_from_page_cache(mapping, page->index); BUG_ON(page_mapped(page)); mem_cgroup_uncharge_cache_page(page); @@ -475,6 +479,7 @@ int add_to_page_cache_locked(struct page *page, struct address_space *mapping, if (likely(!error)) { mapping->nrpages++; __inc_zone_page_state(page, NR_FILE_PAGES); + trace_filemap_add_to_page_cache(mapping, offset); } else { page->mapping = NULL; mem_cgroup_uncharge_cache_page(page);
| |