Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1265403 > unrolled thread

[PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated

Started byJoonsoo Kim <js1304@gmail.com>
First post2015-11-09 08:30 +0100
Last post2015-11-10 17:10 +0100
Articles 4 — 4 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated Joonsoo Kim <js1304@gmail.com> - 2015-11-09 08:30 +0100
    Re: [PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated David Rientjes <rientjes@google.com> - 2015-11-10 00:00 +0100
      Re: [PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated Joonsoo Kim <iamjoonsoo.kim@lge.com> - 2015-11-10 01:30 +0100
    Re: [PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated Michal Nazarewicz <mina86@mina86.com> - 2015-11-10 17:10 +0100

#1265403 — [PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated

FromJoonsoo Kim <js1304@gmail.com>
Date2015-11-09 08:30 +0100
Subject[PATCH 2/3] mm/cma: add new tracepoint, test_pages_isolated
Message-ID<qsP3Q-3kT-9@gated-at.bofh.it>
cma allocation should be guranteeded to succeed, but, sometimes,
it could be failed in current implementation. To track down
the problem, we need to know which page is problematic and
this new tracepoint will report it.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
---
 include/trace/events/cma.h | 26 ++++++++++++++++++++++++++
 mm/page_isolation.c        |  5 +++++
 2 files changed, 31 insertions(+)

diff --git a/include/trace/events/cma.h b/include/trace/events/cma.h
index d7cd961..82281b0 100644
--- a/include/trace/events/cma.h
+++ b/include/trace/events/cma.h
@@ -60,6 +60,32 @@ TRACE_EVENT(cma_release,
 		  __entry->count)
 );
 
+TRACE_EVENT(test_pages_isolated,
+
+	TP_PROTO(
+		unsigned long start_pfn,
+		unsigned long end_pfn,
+		unsigned long fin_pfn),
+
+	TP_ARGS(start_pfn, end_pfn, fin_pfn),
+
+	TP_STRUCT__entry(
+		__field(unsigned long, start_pfn)
+		__field(unsigned long, end_pfn)
+		__field(unsigned long, fin_pfn)
+	),
+
+	TP_fast_assign(
+		__entry->start_pfn = start_pfn;
+		__entry->end_pfn = end_pfn;
+		__entry->fin_pfn = fin_pfn;
+	),
+
+	TP_printk("start_pfn=0x%lx end_pfn=0x%lx fin_pfn=0x%lx ret=%s",
+		__entry->start_pfn, __entry->end_pfn, __entry->fin_pfn,
+		__entry->end_pfn == __entry->fin_pfn ? "success" : "fail")
+);
+
 #endif /* _TRACE_CMA_H */
 
 /* This part must be outside protection */
diff --git a/mm/page_isolation.c b/mm/page_isolation.c
index 6f5ae96..bda0fea 100644
--- a/mm/page_isolation.c
+++ b/mm/page_isolation.c
@@ -7,6 +7,8 @@
 #include <linux/pageblock-flags.h>
 #include <linux/memory.h>
 #include <linux/hugetlb.h>
+#include <trace/events/cma.h>
+
 #include "internal.h"
 
 static int set_migratetype_isolate(struct page *page,
@@ -268,6 +270,9 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
 						skip_hwpoisoned_pages);
 	spin_unlock_irqrestore(&zone->lock, flags);
 
+#ifdef CONFIG_CMA
+	trace_test_pages_isolated(start_pfn, end_pfn, pfn);
+#endif
 	return (pfn < end_pfn) ? -EBUSY : 0;
 }
 
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1266063

FromDavid Rientjes <rientjes@google.com>
Date2015-11-10 00:00 +0100
Message-ID<qt3zQ-4U7-9@gated-at.bofh.it>
In reply to#1265403
On Mon, 9 Nov 2015, Joonsoo Kim wrote:

> diff --git a/include/trace/events/cma.h b/include/trace/events/cma.h
> index d7cd961..82281b0 100644
> --- a/include/trace/events/cma.h
> +++ b/include/trace/events/cma.h
> @@ -60,6 +60,32 @@ TRACE_EVENT(cma_release,
>  		  __entry->count)
>  );
>  
> +TRACE_EVENT(test_pages_isolated,
> +
> +	TP_PROTO(
> +		unsigned long start_pfn,
> +		unsigned long end_pfn,
> +		unsigned long fin_pfn),
> +
> +	TP_ARGS(start_pfn, end_pfn, fin_pfn),
> +
> +	TP_STRUCT__entry(
> +		__field(unsigned long, start_pfn)
> +		__field(unsigned long, end_pfn)
> +		__field(unsigned long, fin_pfn)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->start_pfn = start_pfn;
> +		__entry->end_pfn = end_pfn;
> +		__entry->fin_pfn = fin_pfn;
> +	),
> +
> +	TP_printk("start_pfn=0x%lx end_pfn=0x%lx fin_pfn=0x%lx ret=%s",
> +		__entry->start_pfn, __entry->end_pfn, __entry->fin_pfn,
> +		__entry->end_pfn == __entry->fin_pfn ? "success" : "fail")
> +);
> +
>  #endif /* _TRACE_CMA_H */
>  
>  /* This part must be outside protection */
> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> index 6f5ae96..bda0fea 100644
> --- a/mm/page_isolation.c
> +++ b/mm/page_isolation.c
> @@ -7,6 +7,8 @@
>  #include <linux/pageblock-flags.h>
>  #include <linux/memory.h>
>  #include <linux/hugetlb.h>
> +#include <trace/events/cma.h>
> +
>  #include "internal.h"
>  
>  static int set_migratetype_isolate(struct page *page,
> @@ -268,6 +270,9 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
>  						skip_hwpoisoned_pages);
>  	spin_unlock_irqrestore(&zone->lock, flags);
>  
> +#ifdef CONFIG_CMA
> +	trace_test_pages_isolated(start_pfn, end_pfn, pfn);
> +#endif
>  	return (pfn < end_pfn) ? -EBUSY : 0;
>  }
>  

This is also used for memory offlining, so could we generalize the 
tracepoint to CONFIG_CMA || CONFIG_MEMORY_HOTREMOVE?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1266121

FromJoonsoo Kim <iamjoonsoo.kim@lge.com>
Date2015-11-10 01:30 +0100
Message-ID<qt4YX-65g-31@gated-at.bofh.it>
In reply to#1266063
On Mon, Nov 09, 2015 at 02:59:39PM -0800, David Rientjes wrote:
> On Mon, 9 Nov 2015, Joonsoo Kim wrote:
> 
> > diff --git a/include/trace/events/cma.h b/include/trace/events/cma.h
> > index d7cd961..82281b0 100644
> > --- a/include/trace/events/cma.h
> > +++ b/include/trace/events/cma.h
> > @@ -60,6 +60,32 @@ TRACE_EVENT(cma_release,
> >  		  __entry->count)
> >  );
> >  
> > +TRACE_EVENT(test_pages_isolated,
> > +
> > +	TP_PROTO(
> > +		unsigned long start_pfn,
> > +		unsigned long end_pfn,
> > +		unsigned long fin_pfn),
> > +
> > +	TP_ARGS(start_pfn, end_pfn, fin_pfn),
> > +
> > +	TP_STRUCT__entry(
> > +		__field(unsigned long, start_pfn)
> > +		__field(unsigned long, end_pfn)
> > +		__field(unsigned long, fin_pfn)
> > +	),
> > +
> > +	TP_fast_assign(
> > +		__entry->start_pfn = start_pfn;
> > +		__entry->end_pfn = end_pfn;
> > +		__entry->fin_pfn = fin_pfn;
> > +	),
> > +
> > +	TP_printk("start_pfn=0x%lx end_pfn=0x%lx fin_pfn=0x%lx ret=%s",
> > +		__entry->start_pfn, __entry->end_pfn, __entry->fin_pfn,
> > +		__entry->end_pfn == __entry->fin_pfn ? "success" : "fail")
> > +);
> > +
> >  #endif /* _TRACE_CMA_H */
> >  
> >  /* This part must be outside protection */
> > diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> > index 6f5ae96..bda0fea 100644
> > --- a/mm/page_isolation.c
> > +++ b/mm/page_isolation.c
> > @@ -7,6 +7,8 @@
> >  #include <linux/pageblock-flags.h>
> >  #include <linux/memory.h>
> >  #include <linux/hugetlb.h>
> > +#include <trace/events/cma.h>
> > +
> >  #include "internal.h"
> >  
> >  static int set_migratetype_isolate(struct page *page,
> > @@ -268,6 +270,9 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
> >  						skip_hwpoisoned_pages);
> >  	spin_unlock_irqrestore(&zone->lock, flags);
> >  
> > +#ifdef CONFIG_CMA
> > +	trace_test_pages_isolated(start_pfn, end_pfn, pfn);
> > +#endif
> >  	return (pfn < end_pfn) ? -EBUSY : 0;
> >  }
> >  
> 
> This is also used for memory offlining, so could we generalize the 
> tracepoint to CONFIG_CMA || CONFIG_MEMORY_HOTREMOVE?

Okay. I will make it enabled on CONFIG_MEMORY_ISOLATION so that
CONFIG_CMA || CONFIG_MEMORY_HOTREMOVE || CONFIG_MEMORY_FAILURE can
get benefit from it.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1266613

FromMichal Nazarewicz <mina86@mina86.com>
Date2015-11-10 17:10 +0100
Message-ID<qtjEE-7hv-39@gated-at.bofh.it>
In reply to#1265403
On Mon, Nov 09 2015, Joonsoo Kim wrote:
> cma allocation should be guranteeded to succeed, but, sometimes,
> it could be failed in current implementation. To track down
> the problem, we need to know which page is problematic and
> this new tracepoint will report it.
>
> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>

I’m not really familiar with tracing framework but other then that:

Acked-by: Michal Nazarewicz <mina86@mina86.com>

> ---
>  include/trace/events/cma.h | 26 ++++++++++++++++++++++++++
>  mm/page_isolation.c        |  5 +++++
>  2 files changed, 31 insertions(+)

-- 
Best regards,                                            _     _
.o. | Liege of Serenely Enlightened Majesty of         o' \,=./ `o
..o | Computer Science,  ミハウ “mina86” ナザレヴイツ  (o o)
ooo +--<mpn@google.com>--<xmpp:mina86@jabber.org>-----ooO--(_)--Ooo--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web