tracing: Define kmem_cache_alloc_notrace ifdef CONFIG_TRACING
Subsystems (2)
PATCH 1/2 tracing: Define kmem_cache_alloc_notrace ifdef CONFIG_TRACING
Define kmem_trace_alloc_{,node}_notrace() if CONFIG_TRACING is enabled, otherwise perf-kmem will show wrong stats ifndef CONFIG_KMEM_TRACE, because a kmalloc() memory allocation may be traced by both trace_kmalloc() and trace_kmem_cache_alloc().
--- include/linux/slab_def.h | 4 ++-- include/linux/slub_def.h | 4 ++-- mm/slab.c | 6 +++--- mm/slub.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-)
include/linux/slab_def.h +2 -2
@@ -110,7 +110,7 @@ extern struct cache_sizes malloc_sizes[];void *kmem_cache_alloc (struct kmem_cache *,gfp_t );void *__kmalloc (size_t size,gfp_t flags); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_notrace (struct kmem_cache *cachep,gfp_t flags);extern size_t slab_buffer_size (struct kmem_cache *cachep);#else
@@ -166,7 +166,7 @@ found:extern void *__kmalloc_node (size_t size,gfp_t flags,int node);extern void *kmem_cache_alloc_node (struct kmem_cache *,gfp_t flags,int node); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_node_notrace (struct kmem_cache *cachep,gfp_t flags,int nodeid);
include/linux/slub_def.h +2 -2
@@ -217,7 +217,7 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size)void *kmem_cache_alloc (struct kmem_cache *,gfp_t );void *__kmalloc (size_t size,gfp_t flags); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_notrace (struct kmem_cache *s,gfp_t gfpflags);#else static __always_inline void *
@@ -266,7 +266,7 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags)void *__kmalloc_node (size_t size,gfp_t flags,int node);void *kmem_cache_alloc_node (struct kmem_cache *,gfp_t flags,int node); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_node_notrace (struct kmem_cache *s,gfp_t gfpflags,int node);
mm/slab.c +3 -3
@@ -490,7 +490,7 @@ static void **dbg_userword(struct kmem_cache *cachep, void *objp)#endif -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING size_t slab_buffer_size (struct kmem_cache *cachep) {return cachep->buffer_size;
@@ -3558,7 +3558,7 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags) }EXPORT_SYMBOL (kmem_cache_alloc); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_notrace (struct kmem_cache *cachep,gfp_t flags) {return __cache_alloc (cachep, flags,__builtin_return_address (0 ));
@@ -3621,7 +3621,7 @@ void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid) }EXPORT_SYMBOL (kmem_cache_alloc_node); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_node_notrace (struct kmem_cache *cachep,gfp_t flags,int nodeid)
mm/slub.c +2 -2
@@ -1754,7 +1754,7 @@ void *kmem_cache_alloc(struct kmem_cache *s, gfp_t gfpflags) }EXPORT_SYMBOL (kmem_cache_alloc); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_notrace (struct kmem_cache *s,gfp_t gfpflags) {return slab_alloc (s, gfpflags,-1 , _RET_IP_);
@@ -1775,7 +1775,7 @@ void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t gfpflags, int node)EXPORT_SYMBOL (kmem_cache_alloc_node);#endif -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_node_notrace (struct kmem_cache *s,gfp_t gfpflags,int node)
Signature · 1 line
1.6.3
PATCH 2/2 tracing: Fix no callsite ifndef CONFIG_KMEMTRACE
For slab, if CONFIG_KMEMTRACE and CONFIG_DEBUG_SLAB are not set, __do_kmalloc() will not track callers:
# ./perf record -f -a -R -e kmem:kmalloc
^C
# ./perf trace
...
perf-2204 [000] 147.376774: kmalloc: call_site=c0529d2d ...
perf-2204 [000] 147.400997: kmalloc: call_site=c0529d2d ...
Xorg-1461 [001] 147.405413: kmalloc: call_site=0 ...
Xorg-1461 [001] 147.405609: kmalloc: call_site=0 ...
konsole-1776 [001] 147.405786: kmalloc: call_site=0 ...--- mm/slab.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
mm/slab.c +3 -3
@@ -3649,7 +3649,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, void *caller)return ret; } -#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_KMEMTRACE ) +#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_TRACING )void *__kmalloc_node (size_t size,gfp_t flags,int node) { return __do_kmalloc_node(size, flags, node,
@@ -3669,7 +3669,7 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)return __do_kmalloc_node (size, flags, node,NULL ); }EXPORT_SYMBOL (__kmalloc_node); -#endif /* CONFIG_DEBUG_SLAB */ +#endif /* CONFIG_DEBUG_SLAB || CONFIG_TRACING */ #endif /* CONFIG_NUMA */ /**
@@ -3701,7 +3701,7 @@ static __always_inline void *__do_kmalloc(size_t size, gfp_t flags, } -#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_KMEMTRACE ) +#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_TRACING )void *__kmalloc (size_t size,gfp_t flags) {return __do_kmalloc (size, flags,__builtin_return_address (0 ));
Signature · 1 line
1.6.3
[tip:perf/urgent] tracing, slab: Fix no callsite ifndef CONFIG_KMEMTRACE
Commit-ID: 0bb38a5cdeb39f543657ec6fb9950343d2de6918 Gitweb: http://git.kernel.org/tip/0bb38a5cdeb39f543657ec6fb9950343d2de6918 Author: Li Zefan <[email protected]> AuthorDate: Fri, 11 Dec 2009 15:45:50 +0800 Committer: Ingo Molnar <[email protected]> CommitDate: Fri, 11 Dec 2009 09:17:03 +0100
tracing, slab: Fix no callsite ifndef CONFIG_KMEMTRACE
For slab, if CONFIG_KMEMTRACE and CONFIG_DEBUG_SLAB are not set, __do_kmalloc() will not track callers:
# ./perf record -f -a -R -e kmem:kmalloc
^C
# ./perf trace
...
perf-2204 [000] 147.376774: kmalloc: call_site=c0529d2d ...
perf-2204 [000] 147.400997: kmalloc: call_site=c0529d2d ...
Xorg-1461 [001] 147.405413: kmalloc: call_site=0 ...
Xorg-1461 [001] 147.405609: kmalloc: call_site=0 ...
konsole-1776 [001] 147.405786: kmalloc: call_site=0 ...LKML-Reference: <[email protected]>
--- mm/slab.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
mm/slab.c +3 -3
@@ -3649,7 +3649,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, void *caller)return ret; } -#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_KMEMTRACE ) +#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_TRACING )void *__kmalloc_node (size_t size,gfp_t flags,int node) { return __do_kmalloc_node(size, flags, node,
@@ -3669,7 +3669,7 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)return __do_kmalloc_node (size, flags, node,NULL ); }EXPORT_SYMBOL (__kmalloc_node); -#endif /* CONFIG_DEBUG_SLAB */ +#endif /* CONFIG_DEBUG_SLAB || CONFIG_TRACING */ #endif /* CONFIG_NUMA */ /**
@@ -3701,7 +3701,7 @@ static __always_inline void *__do_kmalloc(size_t size, gfp_t flags, } -#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_KMEMTRACE ) +#if defined(CONFIG_DEBUG_SLAB ) || defined(CONFIG_TRACING )void *__kmalloc (size_t size,gfp_t flags) {return __do_kmalloc (size, flags,__builtin_return_address (0 ));
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 5 lines · Li Zefan
Define kmem_trace_alloc_{,node}_notrace() if
CONFIG_TRACINGis enabled, otherwise perf-kmem will show wrong stats ifndefCONFIG_KMEM_TRACE, because akmalloc()memory allocation may be traced by bothtrace_kmalloc()andtrace_kmem_cache_alloc().
Quoted 7 lines
Signed-off-by Li Zefan <[email protected]>--- include/linux/slab_def.h | 4 ++-- include/linux/slub_def.h | 4 ++-- mm/slab.c | 6 +++--- mm/slub.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-)
Pekka, can i add your Reviewed-by or Acked-by to this v2 version of the patch?
Thanks,
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Li Zefan kirjoitti:
Quoted 6 lines
Define kmem_trace_alloc_{,node}_notrace() if
CONFIG_TRACINGis enabled, otherwise perf-kmem will show wrong stats ifndefCONFIG_KMEM_TRACE, because akmalloc()memory allocation may be traced by bothtrace_kmalloc()andtrace_kmem_cache_alloc().Signed-off-by Li Zefan <[email protected]>
[tip:perf/urgent] tracing, slab: Define kmem_cache_alloc_notrace ifdef CONFIG_TRACING
In reply to Li ZefanCommit-ID: 0f24f1287a86b198c1e4bd4ce45e8565e40ff804 Gitweb: http://git.kernel.org/tip/0f24f1287a86b198c1e4bd4ce45e8565e40ff804 Author: Li Zefan <[email protected]> AuthorDate: Fri, 11 Dec 2009 15:45:30 +0800 Committer: Ingo Molnar <[email protected]> CommitDate: Fri, 11 Dec 2009 09:17:02 +0100
tracing, slab: Define kmem_cache_alloc_notrace ifdef CONFIG_TRACING
Define kmem_trace_alloc_{,node}_notrace() if CONFIG_TRACING is enabled, otherwise perf-kmem will show wrong stats ifndef CONFIG_KMEM_TRACE, because a kmalloc() memory allocation may be traced by both trace_kmalloc() and trace_kmem_cache_alloc().
LKML-Reference: <[email protected]>
--- include/linux/slab_def.h | 4 ++-- include/linux/slub_def.h | 4 ++-- mm/slab.c | 6 +++--- mm/slub.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-)
include/linux/slab_def.h +2 -2
@@ -110,7 +110,7 @@ extern struct cache_sizes malloc_sizes[];void *kmem_cache_alloc (struct kmem_cache *,gfp_t );void *__kmalloc (size_t size,gfp_t flags); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_notrace (struct kmem_cache *cachep,gfp_t flags);extern size_t slab_buffer_size (struct kmem_cache *cachep);#else
@@ -166,7 +166,7 @@ found:extern void *__kmalloc_node (size_t size,gfp_t flags,int node);extern void *kmem_cache_alloc_node (struct kmem_cache *,gfp_t flags,int node); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_node_notrace (struct kmem_cache *cachep,gfp_t flags,int nodeid);
include/linux/slub_def.h +2 -2
@@ -217,7 +217,7 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size)void *kmem_cache_alloc (struct kmem_cache *,gfp_t );void *__kmalloc (size_t size,gfp_t flags); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_notrace (struct kmem_cache *s,gfp_t gfpflags);#else static __always_inline void *
@@ -266,7 +266,7 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags)void *__kmalloc_node (size_t size,gfp_t flags,int node);void *kmem_cache_alloc_node (struct kmem_cache *,gfp_t flags,int node); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING extern void *kmem_cache_alloc_node_notrace (struct kmem_cache *s,gfp_t gfpflags,int node);
mm/slab.c +3 -3
@@ -490,7 +490,7 @@ static void **dbg_userword(struct kmem_cache *cachep, void *objp)#endif -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING size_t slab_buffer_size (struct kmem_cache *cachep) {return cachep->buffer_size;
@@ -3558,7 +3558,7 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags) }EXPORT_SYMBOL (kmem_cache_alloc); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_notrace (struct kmem_cache *cachep,gfp_t flags) {return __cache_alloc (cachep, flags,__builtin_return_address (0 ));
@@ -3621,7 +3621,7 @@ void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid) }EXPORT_SYMBOL (kmem_cache_alloc_node); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_node_notrace (struct kmem_cache *cachep,gfp_t flags,int nodeid)
mm/slub.c +2 -2
@@ -1754,7 +1754,7 @@ void *kmem_cache_alloc(struct kmem_cache *s, gfp_t gfpflags) }EXPORT_SYMBOL (kmem_cache_alloc); -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_notrace (struct kmem_cache *s,gfp_t gfpflags) {return slab_alloc (s, gfpflags,-1 , _RET_IP_);
@@ -1775,7 +1775,7 @@ void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t gfpflags, int node)EXPORT_SYMBOL (kmem_cache_alloc_node);#endif -#ifdef CONFIG_KMEMTRACE +#ifdef CONFIG_TRACING void *kmem_cache_alloc_node_notrace (struct kmem_cache *s,gfp_t gfpflags,int node)
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>