All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shi, Yang" <yang.shi@linaro.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: akpm@linux-foundation.org, mingo@redhat.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	linaro-kernel@lists.linaro.org
Subject: Re: [PATCH V2 1/7] trace/events: Add gup trace events
Date: Thu, 03 Dec 2015 10:36:58 -0800	[thread overview]
Message-ID: <56608BCA.3030303@linaro.org> (raw)
In-Reply-To: <20151202230758.0411d8c9@grimm.local.home>

On 12/2/2015 8:07 PM, Steven Rostedt wrote:
> On Wed,  2 Dec 2015 14:53:27 -0800
> Yang Shi <yang.shi@linaro.org> wrote:
>
>> page-faults events record the invoke to handle_mm_fault, but the invoke
>> may come from do_page_fault or gup. In some use cases, the finer event count
>> mey be needed, so add trace events support for:
>>
>> __get_user_pages
>> __get_user_pages_fast
>> fixup_user_fault
>>
>> Signed-off-by: Yang Shi <yang.shi@linaro.org>
>> ---
>>   include/trace/events/gup.h | 71 ++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 71 insertions(+)
>>   create mode 100644 include/trace/events/gup.h
>>
>> diff --git a/include/trace/events/gup.h b/include/trace/events/gup.h
>> new file mode 100644
>> index 0000000..03a4674
>> --- /dev/null
>> +++ b/include/trace/events/gup.h
>> @@ -0,0 +1,71 @@
>> +#undef TRACE_SYSTEM
>> +#define TRACE_SYSTEM gup
>> +
>> +#if !defined(_TRACE_GUP_H) || defined(TRACE_HEADER_MULTI_READ)
>> +#define _TRACE_GUP_H
>> +
>> +#include <linux/types.h>
>> +#include <linux/tracepoint.h>
>> +
>> +TRACE_EVENT(gup_fixup_user_fault,
>> +
>> +	TP_PROTO(struct task_struct *tsk, struct mm_struct *mm,
>> +			unsigned long address, unsigned int fault_flags),
>> +
>> +	TP_ARGS(tsk, mm, address, fault_flags),
>
> Arges added and not used by TP_fast_assign(), this will slow down the
> code while tracing is enabled, as they need to be added to the trace
> function call.
>
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned long,	address		)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->address	= address;
>> +	),
>> +
>> +	TP_printk("address=%lx",  __entry->address)
>> +);
>> +
>> +TRACE_EVENT(gup_get_user_pages,
>> +
>> +	TP_PROTO(struct task_struct *tsk, struct mm_struct *mm,
>> +			unsigned long start, unsigned long nr_pages),
>> +
>> +	TP_ARGS(tsk, mm, start, nr_pages),
>
> Here too but this is worse. See below.
>
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned long,	start		)
>> +		__field(	unsigned long,	nr_pages	)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->start		= start;
>> +		__entry->nr_pages	= nr_pages;
>> +	),
>> +
>> +	TP_printk("start=%lx nr_pages=%lu", __entry->start, __entry->nr_pages)
>> +);
>> +
>> +TRACE_EVENT(gup_get_user_pages_fast,
>> +
>> +	TP_PROTO(unsigned long start, int nr_pages, int write,
>> +			struct page **pages),
>> +
>> +	TP_ARGS(start, nr_pages, write, pages),
>
> This and the above "gup_get_user_pages" have the same entry field,
> assign and printk. They should be combined into a DECLARE_EVENT_CLASS()
> and two DEFINE_EVENT()s. That will save on size as the
> DECLARE_EVENT_CLASS() is the biggest part of each TRACE_EVENT().

Thanks for the suggestion, will fix them in V3.

Regards,
Yang

>
> -- Steve
>
>
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned long,	start		)
>> +		__field(	unsigned long,	nr_pages	)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->start  	= start;
>> +		__entry->nr_pages	= nr_pages;
>> +	),
>> +
>> +	TP_printk("start=%lx nr_pages=%lu",  __entry->start, __entry->nr_pages)
>> +);
>> +
>> +#endif /* _TRACE_GUP_H */
>> +
>> +/* This part must be outside protection */
>> +#include <trace/define_trace.h>
>

--
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: "Shi, Yang" <yang.shi@linaro.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: akpm@linux-foundation.org, mingo@redhat.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	linaro-kernel@lists.linaro.org
Subject: Re: [PATCH V2 1/7] trace/events: Add gup trace events
Date: Thu, 03 Dec 2015 10:36:58 -0800	[thread overview]
Message-ID: <56608BCA.3030303@linaro.org> (raw)
In-Reply-To: <20151202230758.0411d8c9@grimm.local.home>

On 12/2/2015 8:07 PM, Steven Rostedt wrote:
> On Wed,  2 Dec 2015 14:53:27 -0800
> Yang Shi <yang.shi@linaro.org> wrote:
>
>> page-faults events record the invoke to handle_mm_fault, but the invoke
>> may come from do_page_fault or gup. In some use cases, the finer event count
>> mey be needed, so add trace events support for:
>>
>> __get_user_pages
>> __get_user_pages_fast
>> fixup_user_fault
>>
>> Signed-off-by: Yang Shi <yang.shi@linaro.org>
>> ---
>>   include/trace/events/gup.h | 71 ++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 71 insertions(+)
>>   create mode 100644 include/trace/events/gup.h
>>
>> diff --git a/include/trace/events/gup.h b/include/trace/events/gup.h
>> new file mode 100644
>> index 0000000..03a4674
>> --- /dev/null
>> +++ b/include/trace/events/gup.h
>> @@ -0,0 +1,71 @@
>> +#undef TRACE_SYSTEM
>> +#define TRACE_SYSTEM gup
>> +
>> +#if !defined(_TRACE_GUP_H) || defined(TRACE_HEADER_MULTI_READ)
>> +#define _TRACE_GUP_H
>> +
>> +#include <linux/types.h>
>> +#include <linux/tracepoint.h>
>> +
>> +TRACE_EVENT(gup_fixup_user_fault,
>> +
>> +	TP_PROTO(struct task_struct *tsk, struct mm_struct *mm,
>> +			unsigned long address, unsigned int fault_flags),
>> +
>> +	TP_ARGS(tsk, mm, address, fault_flags),
>
> Arges added and not used by TP_fast_assign(), this will slow down the
> code while tracing is enabled, as they need to be added to the trace
> function call.
>
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned long,	address		)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->address	= address;
>> +	),
>> +
>> +	TP_printk("address=%lx",  __entry->address)
>> +);
>> +
>> +TRACE_EVENT(gup_get_user_pages,
>> +
>> +	TP_PROTO(struct task_struct *tsk, struct mm_struct *mm,
>> +			unsigned long start, unsigned long nr_pages),
>> +
>> +	TP_ARGS(tsk, mm, start, nr_pages),
>
> Here too but this is worse. See below.
>
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned long,	start		)
>> +		__field(	unsigned long,	nr_pages	)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->start		= start;
>> +		__entry->nr_pages	= nr_pages;
>> +	),
>> +
>> +	TP_printk("start=%lx nr_pages=%lu", __entry->start, __entry->nr_pages)
>> +);
>> +
>> +TRACE_EVENT(gup_get_user_pages_fast,
>> +
>> +	TP_PROTO(unsigned long start, int nr_pages, int write,
>> +			struct page **pages),
>> +
>> +	TP_ARGS(start, nr_pages, write, pages),
>
> This and the above "gup_get_user_pages" have the same entry field,
> assign and printk. They should be combined into a DECLARE_EVENT_CLASS()
> and two DEFINE_EVENT()s. That will save on size as the
> DECLARE_EVENT_CLASS() is the biggest part of each TRACE_EVENT().

Thanks for the suggestion, will fix them in V3.

Regards,
Yang

>
> -- Steve
>
>
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned long,	start		)
>> +		__field(	unsigned long,	nr_pages	)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->start  	= start;
>> +		__entry->nr_pages	= nr_pages;
>> +	),
>> +
>> +	TP_printk("start=%lx nr_pages=%lu",  __entry->start, __entry->nr_pages)
>> +);
>> +
>> +#endif /* _TRACE_GUP_H */
>> +
>> +/* This part must be outside protection */
>> +#include <trace/define_trace.h>
>


  reply	other threads:[~2015-12-03 18:37 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02 22:53 [RFC V2] Add gup trace points support Yang Shi
2015-12-02 22:53 ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 1/7] trace/events: Add gup trace events Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-03  4:07   ` Steven Rostedt
2015-12-03  4:07     ` Steven Rostedt
2015-12-03 18:36     ` Shi, Yang [this message]
2015-12-03 18:36       ` Shi, Yang
2015-12-02 22:53 ` [PATCH V2 2/7] mm/gup: add gup trace points Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 23:36   ` Dave Hansen
2015-12-02 23:36     ` Dave Hansen
2015-12-03  0:11     ` Shi, Yang
2015-12-03  0:11       ` Shi, Yang
2015-12-03  0:52       ` Shi, Yang
2015-12-03  0:52         ` Shi, Yang
2015-12-03  4:13     ` Steven Rostedt
2015-12-03  4:13       ` Steven Rostedt
2015-12-03 18:36       ` Shi, Yang
2015-12-03 18:36         ` Shi, Yang
2015-12-03 19:06         ` Steven Rostedt
2015-12-03 19:06           ` Steven Rostedt
2015-12-03 22:10           ` Shi, Yang
2015-12-03 22:10             ` Shi, Yang
2015-12-02 22:53 ` [PATCH V2 3/7] x86: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 4/7] mips: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 5/7] s390: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 6/7] sh: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53 ` [PATCH V2 7/7] sparc64: " Yang Shi
2015-12-02 22:53   ` Yang Shi
2015-12-02 22:53   ` Yang Shi

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=56608BCA.3030303@linaro.org \
    --to=yang.shi@linaro.org \
    --cc=akpm@linux-foundation.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@redhat.com \
    --cc=rostedt@goodmis.org \
    /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.