All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Strogin <s.strogin@partner.samsung.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Michal Nazarewicz <mina86@mina86.com>,
	aneesh.kumar@linux.vnet.ibm.com,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Dmitry Safonov <d.safonov@partner.samsung.com>,
	Pintu Kumar <pintu.k@samsung.com>,
	Weijie Yang <weijie.yang@samsung.com>,
	Laura Abbott <lauraa@codeaurora.org>,
	SeongJae Park <sj38.park@gmail.com>, Hui Zhu <zhuhui@xiaomi.com>,
	Minchan Kim <minchan@kernel.org>,
	Dyasly Sergey <s.dyasly@samsung.com>,
	Vyacheslav Tyrtov <v.tyrtov@samsung.com>,
	Aleksei Mateosian <a.mateosian@samsung.com>,
	gregory.0xf0@gmail.com, sasha.levin@oracle.com, gioh.kim@lge.com,
	pavel@ucw.cz, stefan.strogin@gmail.com,
	Steven Rostedt <rostedt@goodmis.org>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: [PATCH v4 1/5] mm: cma: add trace events to debug physically-contiguous memory allocations
Date: Thu, 19 Mar 2015 23:22:07 +0300	[thread overview]
Message-ID: <550B2FEF.7060204@partner.samsung.com> (raw)
In-Reply-To: <20150317074025.GA27548@gmail.com>


On 17/03/15 10:40, Ingo Molnar wrote:
> 
> * Stefan Strogin <s.strogin@partner.samsung.com> wrote:
> 
>>> +TRACE_EVENT(cma_alloc,
>>> +
>>> +	TP_PROTO(struct cma *cma, struct page *page, int count),
>>> +
>>> +	TP_ARGS(cma, page, count),
>>> +
>>> +	TP_STRUCT__entry(
>>> +		__field(struct page *, page)
>>> +		__field(unsigned long, count)
>>> +	),
>>> +
>>> +	TP_fast_assign(
>>> +		__entry->page = page;
>>> +		__entry->count = count;
>>> +	),
>>> +
>>> +	TP_printk("page=%p pfn=%lu count=%lu",
>>> +		  __entry->page,
>>> +		  __entry->page ? page_to_pfn(__entry->page) : 0,
>>> +		  __entry->count)
> 
> So I'm wondering, the fast-assign side is not equivalent to the 
> TP_printk() side:
> 
>>> +		__entry->page = page;
>>> +		  __entry->page ? page_to_pfn(__entry->page) : 0,
> 
> to me it seems it would be useful if MM tracing standardized on pfn 
> printing. Just like you did for trace_cma_release().
> 

Hello Ingo, thank you for the reply.
I afraid there is no special sense in printing both struct page * and
pfn. But cma_alloc() returns struct page *, cma_release receives struct
page *, and pr_debugs in these functions print struct page *. Maybe it
would be better to print the same here too?

> Also:
> 
>>> +		  __entry->page ? page_to_pfn(__entry->page) : 0,
> 
> pfn 0 should probably be reserved for the true 0th pfn - those exist 
> in some machines. Returning -1ll could be the 'no such pfn' condition?
> 

I took this from trace_mm_page_alloc() and other trace events from
trace/events/kmem.h. If we return -1 here to indicate "no such pfn",
should we change do this in kmem.h too?

>>> +	TP_STRUCT__entry(
>>> +		__field(unsigned long, pfn)
> 
> Btw., does pfn always fit into 32 bits on 32-bit platforms?
> 

Well, I think it does. cma_release() uses 'unsigned long' on all platforms.

>>> +		__field(unsigned long, count)
> 
> Does this have to be 64-bit on 64-bit platforms?
> 

Oops! I'm terribly wrong.
+		__field(unsigned int, count)

I guess it shouldn't be 64-bit on 64-bit platforms. It's the number of
pages being freed, and in cma_release() 'unsigned int' is used for it.

>>> +	),
>>> +
>>> +	TP_fast_assign(
>>> +		__entry->pfn = pfn;
>>> +		__entry->count = count;
>>> +	),
>>> +
>>> +	TP_printk("pfn=%lu page=%p count=%lu",
>>> +		  __entry->pfn,
>>> +		  pfn_to_page(__entry->pfn),
>>> +		  __entry->count)
> 
> So here you print more in the TP_printk() line than in the fast-assign 
> side.
> 

See above, I think it's the same case as in trace_cma_alloc() TP_printk().

> Again I'd double check the various boundary conditions.
> 

Sorry, I don't quite understand. Boundary conditions are already [should
be] checked in cma_alloc()/cma_release, we should only pass to a trace
event the information we want to be known, isn't it so?

I again terribly sorry, I also completely forgot about struct cma *
being passed to trace event. I think either it should be used somehow
(e.g. to print the number of CMA region) or shouldn't be passed...

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Stefan Strogin <s.strogin@partner.samsung.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Michal Nazarewicz <mina86@mina86.com>,
	aneesh.kumar@linux.vnet.ibm.com,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Dmitry Safonov <d.safonov@partner.samsung.com>,
	Pintu Kumar <pintu.k@samsung.com>,
	Weijie Yang <weijie.yang@samsung.com>,
	Laura Abbott <lauraa@codeaurora.org>,
	SeongJae Park <sj38.park@gmail.com>, Hui Zhu <zhuhui@xiaomi.com>,
	Minchan Kim <minchan@kernel.org>,
	Dyasly Sergey <s.dyasly@samsung.com>,
	Vyacheslav Tyrtov <v.tyrtov@samsung.com>,
	Aleksei Mateosian <a.mateosian@samsung.com>,
	gregory.0xf0@gmail.com, sasha.levin@oracle.com, gioh.kim@lge.com,
	pavel@ucw.cz, stefan.strogin@gmail.com,
	Steven Rostedt <rostedt@goodmis.org>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: [PATCH v4 1/5] mm: cma: add trace events to debug physically-contiguous memory allocations
Date: Thu, 19 Mar 2015 23:22:07 +0300	[thread overview]
Message-ID: <550B2FEF.7060204@partner.samsung.com> (raw)
In-Reply-To: <20150317074025.GA27548@gmail.com>


On 17/03/15 10:40, Ingo Molnar wrote:
> 
> * Stefan Strogin <s.strogin@partner.samsung.com> wrote:
> 
>>> +TRACE_EVENT(cma_alloc,
>>> +
>>> +	TP_PROTO(struct cma *cma, struct page *page, int count),
>>> +
>>> +	TP_ARGS(cma, page, count),
>>> +
>>> +	TP_STRUCT__entry(
>>> +		__field(struct page *, page)
>>> +		__field(unsigned long, count)
>>> +	),
>>> +
>>> +	TP_fast_assign(
>>> +		__entry->page = page;
>>> +		__entry->count = count;
>>> +	),
>>> +
>>> +	TP_printk("page=%p pfn=%lu count=%lu",
>>> +		  __entry->page,
>>> +		  __entry->page ? page_to_pfn(__entry->page) : 0,
>>> +		  __entry->count)
> 
> So I'm wondering, the fast-assign side is not equivalent to the 
> TP_printk() side:
> 
>>> +		__entry->page = page;
>>> +		  __entry->page ? page_to_pfn(__entry->page) : 0,
> 
> to me it seems it would be useful if MM tracing standardized on pfn 
> printing. Just like you did for trace_cma_release().
> 

Hello Ingo, thank you for the reply.
I afraid there is no special sense in printing both struct page * and
pfn. But cma_alloc() returns struct page *, cma_release receives struct
page *, and pr_debugs in these functions print struct page *. Maybe it
would be better to print the same here too?

> Also:
> 
>>> +		  __entry->page ? page_to_pfn(__entry->page) : 0,
> 
> pfn 0 should probably be reserved for the true 0th pfn - those exist 
> in some machines. Returning -1ll could be the 'no such pfn' condition?
> 

I took this from trace_mm_page_alloc() and other trace events from
trace/events/kmem.h. If we return -1 here to indicate "no such pfn",
should we change do this in kmem.h too?

>>> +	TP_STRUCT__entry(
>>> +		__field(unsigned long, pfn)
> 
> Btw., does pfn always fit into 32 bits on 32-bit platforms?
> 

Well, I think it does. cma_release() uses 'unsigned long' on all platforms.

>>> +		__field(unsigned long, count)
> 
> Does this have to be 64-bit on 64-bit platforms?
> 

Oops! I'm terribly wrong.
+		__field(unsigned int, count)

I guess it shouldn't be 64-bit on 64-bit platforms. It's the number of
pages being freed, and in cma_release() 'unsigned int' is used for it.

>>> +	),
>>> +
>>> +	TP_fast_assign(
>>> +		__entry->pfn = pfn;
>>> +		__entry->count = count;
>>> +	),
>>> +
>>> +	TP_printk("pfn=%lu page=%p count=%lu",
>>> +		  __entry->pfn,
>>> +		  pfn_to_page(__entry->pfn),
>>> +		  __entry->count)
> 
> So here you print more in the TP_printk() line than in the fast-assign 
> side.
> 

See above, I think it's the same case as in trace_cma_alloc() TP_printk().

> Again I'd double check the various boundary conditions.
> 

Sorry, I don't quite understand. Boundary conditions are already [should
be] checked in cma_alloc()/cma_release, we should only pass to a trace
event the information we want to be known, isn't it so?

I again terribly sorry, I also completely forgot about struct cma *
being passed to trace event. I think either it should be used somehow
(e.g. to print the number of CMA region) or shouldn't be passed...

  reply	other threads:[~2015-03-19 20:22 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-16 16:06 [PATCH v4 0/5] mm: cma: add some debug information for CMA Stefan Strogin
2015-03-16 16:06 ` Stefan Strogin
2015-03-16 16:06 ` [PATCH v4 1/5] mm: cma: add trace events to debug physically-contiguous memory allocations Stefan Strogin
2015-03-16 16:06   ` Stefan Strogin
2015-03-16 20:49   ` Stefan Strogin
2015-03-16 20:49     ` Stefan Strogin
2015-03-16 23:47     ` Steven Rostedt
2015-03-16 23:47       ` Steven Rostedt
2015-03-19 20:18       ` Stefan Strogin
2015-03-19 20:18         ` Stefan Strogin
2015-03-19 20:34         ` Steven Rostedt
2015-03-19 20:34           ` Steven Rostedt
2015-03-20 10:46           ` Stefan Strogin
2015-03-20 10:46             ` Stefan Strogin
2015-03-20 14:31             ` Steven Rostedt
2015-03-20 14:31               ` Steven Rostedt
2015-03-17  7:40     ` Ingo Molnar
2015-03-17  7:40       ` Ingo Molnar
2015-03-19 20:22       ` Stefan Strogin [this message]
2015-03-19 20:22         ` Stefan Strogin
2015-03-23 14:04         ` Ingo Molnar
2015-03-23 14:04           ` Ingo Molnar
2015-03-16 16:06 ` [PATCH v4 2/5] mm: cma: add number of pages to debug message in cma_release() Stefan Strogin
2015-03-16 16:06   ` Stefan Strogin
2015-03-16 16:06 ` [PATCH v4 3/5] stacktrace: add seq_print_stack_trace() Stefan Strogin
2015-03-16 16:06   ` Stefan Strogin
2015-03-16 17:33   ` Michal Nazarewicz
2015-03-16 17:33     ` Michal Nazarewicz
2015-03-16 16:06 ` [PATCH v4 4/5] mm: cma: add list of currently allocated CMA buffers to debugfs Stefan Strogin
2015-03-16 16:06   ` Stefan Strogin
2015-03-16 17:51   ` Michal Nazarewicz
2015-03-16 17:51     ` Michal Nazarewicz
2015-03-16 16:09 ` [PATCH v4 5/5] mm: cma: add functions to get region pages counters Stefan Strogin
2015-03-16 16:09   ` Stefan Strogin
2015-03-17  1:43 ` [PATCH v4 0/5] mm: cma: add some debug information for CMA Joonsoo Kim
2015-03-17  1:43   ` Joonsoo Kim
2015-03-17  1:54   ` Sasha Levin
2015-03-17  1:54     ` Sasha Levin
2015-03-17  2:04     ` Joonsoo Kim
2015-03-17  2:04       ` Joonsoo Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=550B2FEF.7060204@partner.samsung.com \
    --to=s.strogin@partner.samsung.com \
    --cc=a.mateosian@samsung.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=d.safonov@partner.samsung.com \
    --cc=gioh.kim@lge.com \
    --cc=gregory.0xf0@gmail.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=lauraa@codeaurora.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mina86@mina86.com \
    --cc=minchan@kernel.org \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=pavel@ucw.cz \
    --cc=pintu.k@samsung.com \
    --cc=rostedt@goodmis.org \
    --cc=s.dyasly@samsung.com \
    --cc=sasha.levin@oracle.com \
    --cc=sj38.park@gmail.com \
    --cc=stefan.strogin@gmail.com \
    --cc=v.tyrtov@samsung.com \
    --cc=weijie.yang@samsung.com \
    --cc=zhuhui@xiaomi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.