linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
@ 2015-06-13 21:00 Tal Shorer
  2015-06-13 21:00 ` [Patch RFC 1/2] " Tal Shorer
  2015-06-13 21:00 ` [Patch RFC 2/2] tracing: gpio: add Kconfig option for enabling/disabling trace events Tal Shorer
  0 siblings, 2 replies; 9+ messages in thread
From: Tal Shorer @ 2015-06-13 21:00 UTC (permalink / raw)
  To: rostedt, mingo; +Cc: linux-kernel, Tal Shorer

Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
them do (without it).

This caused me an unacceptable performance penalty (obviously SOME penalty was
expected, but not one so severe) which made me revert the changes in
configuration.

The first patch in this series modifies the files that actually define the
tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
CONFIG_TRACING was not set) instead of them.

The second patch provides an example of how I see this working, with the gpio
subsystem as the example for absolutely no reason.
If this idea is deemed worth the time by the community, I'll create patches for
the other subsystems.

Tal Shorer (2):
  tracing: allow disabling compilation of specific trace systems
  tracing: gpio: add Kconfig option for enabling/disabling trace events

 drivers/gpio/Kconfig         | 6 ++++++
 include/linux/tracepoint.h   | 6 +++---
 include/trace/define_trace.h | 2 +-
 include/trace/events/gpio.h  | 4 ++++
 4 files changed, 14 insertions(+), 4 deletions(-)

-- 
2.2.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Patch RFC 1/2] tracing: allow disabling compilation of specific trace systems
  2015-06-13 21:00 [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems Tal Shorer
@ 2015-06-13 21:00 ` Tal Shorer
  2015-06-13 21:00 ` [Patch RFC 2/2] tracing: gpio: add Kconfig option for enabling/disabling trace events Tal Shorer
  1 sibling, 0 replies; 9+ messages in thread
From: Tal Shorer @ 2015-06-13 21:00 UTC (permalink / raw)
  To: rostedt, mingo; +Cc: linux-kernel, Tal Shorer

Allow a trace events header file to disable compilation of its
trace events by defining the preprocessor macro NOTRACE.

This could be done, for example, according to a Kconfig option.

Signed-off-by: Tal Shorer <tal.shorer@gmail.com>
---
 include/linux/tracepoint.h   | 6 +++---
 include/trace/define_trace.h | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index a5f7f3e..c869f84 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -111,7 +111,7 @@ extern void syscall_unregfunc(void);
 #define TP_ARGS(args...)	args
 #define TP_CONDITION(args...)	args
 
-#ifdef CONFIG_TRACEPOINTS
+#if defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE)
 
 /*
  * it_func[0] is never NULL because there is at least one element in the array
@@ -234,7 +234,7 @@ extern void syscall_unregfunc(void);
 #define EXPORT_TRACEPOINT_SYMBOL(name)					\
 	EXPORT_SYMBOL(__tracepoint_##name)
 
-#else /* !CONFIG_TRACEPOINTS */
+#else /* !(defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE)) */
 #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
 	static inline void trace_##name(proto)				\
 	{ }								\
@@ -266,7 +266,7 @@ extern void syscall_unregfunc(void);
 #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
 #define EXPORT_TRACEPOINT_SYMBOL(name)
 
-#endif /* CONFIG_TRACEPOINTS */
+#endif /* defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE) */
 
 #ifdef CONFIG_TRACING
 /**
diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h
index 02e1003..e847fd7 100644
--- a/include/trace/define_trace.h
+++ b/include/trace/define_trace.h
@@ -86,7 +86,7 @@
 #undef DECLARE_TRACE
 #define DECLARE_TRACE(name, proto, args)
 
-#ifdef CONFIG_EVENT_TRACING
+#if defined(CONFIG_EVENT_TRACING) && !defined(NOTRACE)
 #include <trace/ftrace.h>
 #endif
 
-- 
2.2.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Patch RFC 2/2] tracing: gpio: add Kconfig option for enabling/disabling trace events
  2015-06-13 21:00 [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems Tal Shorer
  2015-06-13 21:00 ` [Patch RFC 1/2] " Tal Shorer
@ 2015-06-13 21:00 ` Tal Shorer
  1 sibling, 0 replies; 9+ messages in thread
From: Tal Shorer @ 2015-06-13 21:00 UTC (permalink / raw)
  To: rostedt, mingo; +Cc: linux-kernel, Tal Shorer

Add a new options to gpio Kconfig, CONFIG_GPIO_TRACING, that is used
for enabling/disabling compilation of gpio function trace events.

Signed-off-by: Tal Shorer <tal.shorer@gmail.com>
---
 drivers/gpio/Kconfig        | 6 ++++++
 include/trace/events/gpio.h | 4 ++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index caefe80..1480a22 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -88,6 +88,12 @@ config GPIO_SYSFS
 config GPIO_GENERIC
 	tristate
 
+config GPIO_TRACING
+	bool "gpio tracing"
+	depends on TRACING
+	help
+	  Enable tracing for gpio subsystem
+
 # put drivers in the right section, in alphabetical order
 
 # This symbol is selected by both I2C and SPI expanders
diff --git a/include/trace/events/gpio.h b/include/trace/events/gpio.h
index 927a8ad..09af636 100644
--- a/include/trace/events/gpio.h
+++ b/include/trace/events/gpio.h
@@ -1,6 +1,10 @@
 #undef TRACE_SYSTEM
 #define TRACE_SYSTEM gpio
 
+#ifndef CONFIG_GPIO_TRACING
+#define NOTRACE
+#endif
+
 #if !defined(_TRACE_GPIO_H) || defined(TRACE_HEADER_MULTI_READ)
 #define _TRACE_GPIO_H
 
-- 
2.2.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
  2015-06-25 22:25   ` Steven Rostedt
@ 2015-07-06 16:53     ` Tal Shorer
  0 siblings, 0 replies; 9+ messages in thread
From: Tal Shorer @ 2015-07-06 16:53 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: mingo, <linux-kernel@vger.kernel.org>

On Fri, Jun 26, 2015 at 1:25 AM, Steven Rostedt <rostedt@goodmis.org> wrote:
> On Thu, 25 Jun 2015 23:41:17 +0300
> Tal Shorer <tal.shorer@gmail.com> wrote:
>
>> ping?
>
> I'm planning on looking at this after I've finished everything for the
> merge window. This came over the weekend (always a bad time), and the
> merge window opened. All new code needs to take a backseat while the
> merge window is opened.
>
> I may not get to this till next week. Feel free to ping me again then.
ping
>
> -- Steve
>
>
>>
>> On Sat, Jun 20, 2015 at 11:21 PM, Tal Shorer <tal.shorer@gmail.com> wrote:
>> > Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
>> > tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
>> > them do (without it).
>> >
>> > This caused me an unacceptable performance penalty (obviously SOME penalty was
>> > expected, but not one so severe) which made me revert the changes in
>> > configuration.
>> >
>> > The first patch in this series modifies the files that actually define the
>> > tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
>> > CONFIG_TRACING was not set) instead of them.
>> >
>> > The second patch provides an example of how I see this working, with the gpio
>> > subsystem as the example for absolutely no reason.
>> > If this idea is deemed worth the time by the community, I'll create patches for
>> > the other subsystems.
>> >
>> > Tal Shorer (2):
>> >   tracing: allow disabling compilation of specific trace systems
>> >   tracing: gpio: add Kconfig option for enabling/disabling trace events
>> >
>> >  drivers/gpio/Kconfig         | 6 ++++++
>> >  include/linux/tracepoint.h   | 6 +++---
>> >  include/trace/define_trace.h | 2 +-
>> >  include/trace/events/gpio.h  | 4 ++++
>> >  4 files changed, 14 insertions(+), 4 deletions(-)
>> >
>> > --
>> > 2.2.2
>> >
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
  2015-06-25 20:41 ` Tal Shorer
@ 2015-06-25 22:25   ` Steven Rostedt
  2015-07-06 16:53     ` Tal Shorer
  0 siblings, 1 reply; 9+ messages in thread
From: Steven Rostedt @ 2015-06-25 22:25 UTC (permalink / raw)
  To: Tal Shorer; +Cc: mingo, <linux-kernel@vger.kernel.org>

On Thu, 25 Jun 2015 23:41:17 +0300
Tal Shorer <tal.shorer@gmail.com> wrote:

> ping?

I'm planning on looking at this after I've finished everything for the
merge window. This came over the weekend (always a bad time), and the
merge window opened. All new code needs to take a backseat while the
merge window is opened.

I may not get to this till next week. Feel free to ping me again then.

-- Steve


> 
> On Sat, Jun 20, 2015 at 11:21 PM, Tal Shorer <tal.shorer@gmail.com> wrote:
> > Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
> > tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
> > them do (without it).
> >
> > This caused me an unacceptable performance penalty (obviously SOME penalty was
> > expected, but not one so severe) which made me revert the changes in
> > configuration.
> >
> > The first patch in this series modifies the files that actually define the
> > tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
> > CONFIG_TRACING was not set) instead of them.
> >
> > The second patch provides an example of how I see this working, with the gpio
> > subsystem as the example for absolutely no reason.
> > If this idea is deemed worth the time by the community, I'll create patches for
> > the other subsystems.
> >
> > Tal Shorer (2):
> >   tracing: allow disabling compilation of specific trace systems
> >   tracing: gpio: add Kconfig option for enabling/disabling trace events
> >
> >  drivers/gpio/Kconfig         | 6 ++++++
> >  include/linux/tracepoint.h   | 6 +++---
> >  include/trace/define_trace.h | 2 +-
> >  include/trace/events/gpio.h  | 4 ++++
> >  4 files changed, 14 insertions(+), 4 deletions(-)
> >
> > --
> > 2.2.2
> >


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
  2015-06-20 20:21 [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems Tal Shorer
@ 2015-06-25 20:41 ` Tal Shorer
  2015-06-25 22:25   ` Steven Rostedt
  0 siblings, 1 reply; 9+ messages in thread
From: Tal Shorer @ 2015-06-25 20:41 UTC (permalink / raw)
  To: rostedt, mingo; +Cc: <linux-kernel@vger.kernel.org>, Tal Shorer

ping?

On Sat, Jun 20, 2015 at 11:21 PM, Tal Shorer <tal.shorer@gmail.com> wrote:
> Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
> tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
> them do (without it).
>
> This caused me an unacceptable performance penalty (obviously SOME penalty was
> expected, but not one so severe) which made me revert the changes in
> configuration.
>
> The first patch in this series modifies the files that actually define the
> tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
> CONFIG_TRACING was not set) instead of them.
>
> The second patch provides an example of how I see this working, with the gpio
> subsystem as the example for absolutely no reason.
> If this idea is deemed worth the time by the community, I'll create patches for
> the other subsystems.
>
> Tal Shorer (2):
>   tracing: allow disabling compilation of specific trace systems
>   tracing: gpio: add Kconfig option for enabling/disabling trace events
>
>  drivers/gpio/Kconfig         | 6 ++++++
>  include/linux/tracepoint.h   | 6 +++---
>  include/trace/define_trace.h | 2 +-
>  include/trace/events/gpio.h  | 4 ++++
>  4 files changed, 14 insertions(+), 4 deletions(-)
>
> --
> 2.2.2
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
@ 2015-06-20 20:21 Tal Shorer
  2015-06-25 20:41 ` Tal Shorer
  0 siblings, 1 reply; 9+ messages in thread
From: Tal Shorer @ 2015-06-20 20:21 UTC (permalink / raw)
  To: rostedt, mingo; +Cc: linux-kernel, Tal Shorer

Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
them do (without it).

This caused me an unacceptable performance penalty (obviously SOME penalty was
expected, but not one so severe) which made me revert the changes in
configuration.

The first patch in this series modifies the files that actually define the
tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
CONFIG_TRACING was not set) instead of them.

The second patch provides an example of how I see this working, with the gpio
subsystem as the example for absolutely no reason.
If this idea is deemed worth the time by the community, I'll create patches for
the other subsystems.

Tal Shorer (2):
  tracing: allow disabling compilation of specific trace systems
  tracing: gpio: add Kconfig option for enabling/disabling trace events

 drivers/gpio/Kconfig         | 6 ++++++
 include/linux/tracepoint.h   | 6 +++---
 include/trace/define_trace.h | 2 +-
 include/trace/events/gpio.h  | 4 ++++
 4 files changed, 14 insertions(+), 4 deletions(-)

-- 
2.2.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
  2015-06-08 19:04 Tal Shorer
@ 2015-06-08 19:04 ` Tal Shorer
  0 siblings, 0 replies; 9+ messages in thread
From: Tal Shorer @ 2015-06-08 19:04 UTC (permalink / raw)
  To: rostedt, mingo, linux-kernel; +Cc: Tal Shorer

Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
them do (without it).

This caused me an unacceptable performance penalty (obviously SOME penalty was
expected, but not one so severe) which made me revert the changes in
configuration.

The first patch in this series modifies the files that actually define the
tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
CONFIG_TRACING was not set) instead of them.

The second patch provides an example of how I see this working, with the gpio
subsystem for example for absolutely no reason.
If this idea is deemed worth the time by the community, I'll create patches for
the other subsystems.

Tal Shorer (2):
  tracing: allow disabling compilation of specific trace systems
  tracing: gpio: add Kconfig option for enabling/disabling trace events

 drivers/gpio/Kconfig         | 6 ++++++
 include/linux/tracepoint.h   | 6 +++---
 include/trace/define_trace.h | 2 +-
 include/trace/events/gpio.h  | 4 ++++
 4 files changed, 14 insertions(+), 4 deletions(-)

-- 
2.2.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems
@ 2015-06-08 19:04 Tal Shorer
  2015-06-08 19:04 ` Tal Shorer
  0 siblings, 1 reply; 9+ messages in thread
From: Tal Shorer @ 2015-06-08 19:04 UTC (permalink / raw)
  To: rostedt, mingo, linux-kernel; +Cc: Tal Shorer

Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either
tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of
them do (without it).

This caused me an unacceptable performance penalty (obviously SOME penalty was
expected, but not one so severe) which made me revert the changes in
configuration.

The first patch in this series modifies the files that actually define the
tracepoint to look for a preprocessor macro NOTRACE and define nops (as if
CONFIG_TRACING was not set) instead of them.

The second patch provides an example of how I see this working, with the gpio
subsystem as the example for absolutely no reason.
If this idea is deemed worth the time by the community, I'll create patches for
the other subsystems.

Tal Shorer (2):
  tracing: allow disabling compilation of specific trace systems
  tracing: gpio: add Kconfig option for enabling/disabling trace events

 drivers/gpio/Kconfig         | 6 ++++++
 include/linux/tracepoint.h   | 6 +++---
 include/trace/define_trace.h | 2 +-
 include/trace/events/gpio.h  | 4 ++++
 4 files changed, 14 insertions(+), 4 deletions(-)

-- 
2.2.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-07-06 16:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-13 21:00 [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems Tal Shorer
2015-06-13 21:00 ` [Patch RFC 1/2] " Tal Shorer
2015-06-13 21:00 ` [Patch RFC 2/2] tracing: gpio: add Kconfig option for enabling/disabling trace events Tal Shorer
  -- strict thread matches above, loose matches on Subject: below --
2015-06-20 20:21 [Patch RFC 0/2] tracing: allow disabling compilation of specific trace systems Tal Shorer
2015-06-25 20:41 ` Tal Shorer
2015-06-25 22:25   ` Steven Rostedt
2015-07-06 16:53     ` Tal Shorer
2015-06-08 19:04 Tal Shorer
2015-06-08 19:04 ` Tal Shorer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).