From: K.Prasad on
On Wed, May 26, 2010 at 01:06:57AM +0200, Frederic Weisbecker wrote:
> On Tue, May 25, 2010 at 05:09:59PM -0400, Chase Douglas wrote:
> > On Tue, 2010-05-25 at 22:13 +0200, Frederic Weisbecker wrote:
> > > On Tue, May 25, 2010 at 03:31:46PM -0400, Chase Douglas wrote:

<snipped>

> > > IMO, it is deprecated. The perf interface is much more powerful and flexible.
> > > Prasad, do you agree if I remove this ftrace plugin?

Sure, go ahead.

> >
> > If there isn't any use in enabling it due to perf's features, then we
> > can turn it off. However, if there's any use to be gained by this over
> > perf's features, then I'd prefer to leave it on. Thoughts?
>
>
>
> No, perf does much more:
>
> - stacktraces recording
> - "top" alike view with perf top
> - stat with perf stat, etc...
> - userspace memory accesses
>
>
> Here is a quick example:
>
> $ cat test.c
> int var;
>
> void func_c(void)
> {
> var++;
> }
>
> void func_b(void)
> {
> func_c();
> }
>
>
> void func_a(void)
> {
> func_c();
> }
>
>
> int main(int argc, char **argv)
> {
> int i;
>
> for (i = 0; i < 1000; i++)
> if (i % 2)
> func_a();
> else
> func_b();
>
> return 0;
> }
> //end test.c
>
> $ gcc test.c -fno-omit-frame-pointer -o test
>
> $ readelf -s test | grep var
> 74: 000000000060102c 4 OBJECT GLOBAL DEFAULT 25 var
>
> $ perf record -g -c 1 -e mem:0x000000000060102c:w ./test
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.069 MB perf.data (~3020 samples) ]
>
> $ perf report
>
> # Events: 1K cycles
> #
> # Overhead Command Shared Object Symbol
> # ........ ....... ................. ......
> #
> 99.90% test test [.] func_c
> |
> --- func_c
> |
> |--49.95%-- func_a
> | |
> | |--99.60%-- main
> | | __libc_start_main
> | --0.40%-- [...]
> |
> |--49.85%-- func_b
> | main
> | |
> | |--99.60%-- __libc_start_main
> | --0.40%-- [...]
> --0.20%-- [...]
>
>
> To sum up, there is nothing the ksym tracer does that perf can't.
>

I second Frederic's opinion on this.

Thanks,
K.Prasad

> Well, may be perf doesn't offer the time ordered view of memory
> accesses, I must confess. Although this is still something we can
> easily provide if people want it.
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Frederic Weisbecker on
On Thu, May 27, 2010 at 04:50:44PM +0530, K.Prasad wrote:
> On Wed, May 26, 2010 at 01:06:57AM +0200, Frederic Weisbecker wrote:
> > On Tue, May 25, 2010 at 05:09:59PM -0400, Chase Douglas wrote:
> > > On Tue, 2010-05-25 at 22:13 +0200, Frederic Weisbecker wrote:
> > > > On Tue, May 25, 2010 at 03:31:46PM -0400, Chase Douglas wrote:
>
> <snipped>
>
> > > > IMO, it is deprecated. The perf interface is much more powerful and flexible.
> > > > Prasad, do you agree if I remove this ftrace plugin?
>
> Sure, go ahead.



Great, I'll do that soon.

Thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Randy Dunlap on
On Tue, 25 May 2010 17:09:59 -0400 Chase Douglas wrote:

> On Tue, 2010-05-25 at 22:13 +0200, Frederic Weisbecker wrote:
> > On Tue, May 25, 2010 at 03:31:46PM -0400, Chase Douglas wrote:
> > > The following options are what I am looking to set for our x86
> > > configurations. I've only included those that I am not 100% sure of.
> > > Comments are what I could gather from documentation and Kconfig, but
> > > they may not be accurate:
>
> <snip>
>
> > > # CONFIG_SCHED_TRACER is not set (headed for deprecation?)
> >
> >
> > We want to deprecate it in the long term, but for now we
> > don't have any replacement. Cool for RT latency tracing.
>
> I thought that the functionality is the same as what you get by:
>
> echo 1 > (debufs)/tracing/events/sched/enable
>
> > > CONFIG_KSYM_TRACER=y (no performance impact by default)
> >
> >
> > IMO, it is deprecated. The perf interface is much more powerful and flexible.
> > Prasad, do you agree if I remove this ftrace plugin?
>
> If there isn't any use in enabling it due to perf's features, then we
> can turn it off. However, if there's any use to be gained by this over
> perf's features, then I'd prefer to leave it on. Thoughts?
>
>
> > > CONFIG_WORKQUEUE_TRACER=y (no performance impact by default)
> >
> >
> > In the way for deprecation.
>
> Is this like the KMEM_TRACER where trace events have superseded it?


Hi Chase,

Would you mind sharing your final tracing config options?

thanks,
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Chase Douglas on
On Tue, 2010-06-08 at 10:35 -0700, Randy Dunlap wrote:
> Hi Chase,
>
> Would you mind sharing your final tracing config options?

Sure.

Our source tree for Maverick encompasses all our major supported
platforms in one git branch. Thus, we have one common config file and a
bunch of arch and flavour (generic, server, virtual, pae) specific
config files. One note about the common configs: if a config option
would not exist because an option in a specific config file is set a
certain way, then you can ignore it for that specific arch/flavour. For
example, the common config has CONFIG_DYNAMIC_FTRACE=y, but the armel
config has "CONFIG_FUNCTION_TRACER is not set" so the former would not
have any affect on armel builds.

You can find the source branch at
http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-maverick.git;a=summary

$ grep -Ir "TRAC[EI]" debian.master/config
../amd64/config.common.amd64:CONFIG_FUNCTION_TRACER=y
../amd64/config.common.amd64:CONFIG_STACK_TRACER=y
../i386/config.common.i386:CONFIG_FUNCTION_TRACER=y
../i386/config.common.i386:CONFIG_STACK_TRACER=y
../armel/config.common.armel:# CONFIG_FUNCTION_TRACER is not set
../armel/config.common.armel:# CONFIG_STACK_TRACER is not set
../config.common.ubuntu:# CONFIG_BACKTRACE_SELF_TEST is not set
../config.common.ubuntu:CONFIG_BLK_DEV_IO_TRACE=y
../config.common.ubuntu:# CONFIG_BOOT_TRACER is not set
../config.common.ubuntu:CONFIG_CAN_PM_TRACE=y
../config.common.ubuntu:CONFIG_CAPI_TRACE=y
../config.common.ubuntu:CONFIG_CONTEXT_SWITCH_TRACER=y
../config.common.ubuntu:CONFIG_DYNAMIC_FTRACE=y
../config.common.ubuntu:CONFIG_EVENT_TRACING=y
../config.common.ubuntu:CONFIG_FTRACE=y
../config.common.ubuntu:CONFIG_FTRACE_MCOUNT_RECORD=y
../config.common.ubuntu:CONFIG_FTRACE_NMI_ENTER=y
../config.common.ubuntu:# CONFIG_FTRACE_STARTUP_TEST is not set
../config.common.ubuntu:CONFIG_FTRACE_SYSCALLS=y
../config.common.ubuntu:CONFIG_FUNCTION_GRAPH_TRACER=y
../config.common.ubuntu:CONFIG_GENERIC_TRACER=y
../config.common.ubuntu:CONFIG_HAVE_ARCH_TRACEHOOK=y
../config.common.ubuntu:CONFIG_HAVE_DYNAMIC_FTRACE=y
../config.common.ubuntu:CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
../config.common.ubuntu:CONFIG_HAVE_FTRACE_NMI_ENTER=y
../config.common.ubuntu:CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
../config.common.ubuntu:CONFIG_HAVE_FUNCTION_TRACER=y
../config.common.ubuntu:CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
../config.common.ubuntu:CONFIG_HAVE_MMIOTRACE_SUPPORT=y
../config.common.ubuntu:CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
../config.common.ubuntu:# CONFIG_IRQSOFF_TRACER is not set
../config.common.ubuntu:CONFIG_IWLWIFI_DEVICE_TRACING=y
../config.common.ubuntu:# CONFIG_KMEMTRACE is not set
../config.common.ubuntu:# CONFIG_KSYM_TRACER is not set
../config.common.ubuntu:CONFIG_MMIOTRACE=y
../config.common.ubuntu:# CONFIG_MMIOTRACE_TEST is not set
../config.common.ubuntu:CONFIG_NETFILTER_XT_TARGET_TRACE=m
../config.common.ubuntu:CONFIG_NOP_TRACER=y
../config.common.ubuntu:CONFIG_PM_TRACE=y
../config.common.ubuntu:CONFIG_PM_TRACE_RTC=y
../config.common.ubuntu:# CONFIG_RCU_TRACE is not set
../config.common.ubuntu:CONFIG_SCHED_TRACER=y
../config.common.ubuntu:# CONFIG_SCSI_IPR_TRACE is not set
../config.common.ubuntu:CONFIG_STACKTRACE=y
../config.common.ubuntu:CONFIG_STACKTRACE_SUPPORT=y
../config.common.ubuntu:# CONFIG_SYSPROF_TRACER is not set
../config.common.ubuntu:CONFIG_TRACEPOINTS=y
../config.common.ubuntu:CONFIG_TRACER_MAX_TRACE=y
../config.common.ubuntu:CONFIG_TRACE_IRQFLAGS_SUPPORT=y
../config.common.ubuntu:CONFIG_TRACING=y
../config.common.ubuntu:CONFIG_TRACING_SUPPORT=y
../config.common.ubuntu:# CONFIG_TREE_RCU_TRACE is not set
../config.common.ubuntu:CONFIG_USER_STACKTRACE_SUPPORT=y
../config.common.ubuntu:# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
../config.common.ubuntu:# CONFIG_WORKQUEUE_TRACER is not set

Some of the above is not FTRACE. I also snipped the matches in
config.common.ports because they are slightly different due to what the
ports architectures support, but they should be pretty similar.

Please let me know if anything stands out at you as incorrect.

Thanks,

-- Chase

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Randy Dunlap on
On Tue, 08 Jun 2010 18:00:34 -0400 Chase Douglas wrote:

> On Tue, 2010-06-08 at 10:35 -0700, Randy Dunlap wrote:
> > Hi Chase,
> >
> > Would you mind sharing your final tracing config options?
>
> Sure.
>
> Our source tree for Maverick encompasses all our major supported
> platforms in one git branch. Thus, we have one common config file and a
> bunch of arch and flavour (generic, server, virtual, pae) specific
> config files. One note about the common configs: if a config option
> would not exist because an option in a specific config file is set a
> certain way, then you can ignore it for that specific arch/flavour. For
> example, the common config has CONFIG_DYNAMIC_FTRACE=y, but the armel
> config has "CONFIG_FUNCTION_TRACER is not set" so the former would not
> have any affect on armel builds.
>
> You can find the source branch at
> http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-maverick.git;a=summary
>
> $ grep -Ir "TRAC[EI]" debian.master/config
> ./amd64/config.common.amd64:CONFIG_FUNCTION_TRACER=y
> ./amd64/config.common.amd64:CONFIG_STACK_TRACER=y
> ./i386/config.common.i386:CONFIG_FUNCTION_TRACER=y
> ./i386/config.common.i386:CONFIG_STACK_TRACER=y
> ./armel/config.common.armel:# CONFIG_FUNCTION_TRACER is not set
> ./armel/config.common.armel:# CONFIG_STACK_TRACER is not set
> ./config.common.ubuntu:# CONFIG_BACKTRACE_SELF_TEST is not set
> ./config.common.ubuntu:CONFIG_BLK_DEV_IO_TRACE=y
> ./config.common.ubuntu:# CONFIG_BOOT_TRACER is not set
> ./config.common.ubuntu:CONFIG_CAN_PM_TRACE=y
> ./config.common.ubuntu:CONFIG_CAPI_TRACE=y
> ./config.common.ubuntu:CONFIG_CONTEXT_SWITCH_TRACER=y
> ./config.common.ubuntu:CONFIG_DYNAMIC_FTRACE=y
> ./config.common.ubuntu:CONFIG_EVENT_TRACING=y
> ./config.common.ubuntu:CONFIG_FTRACE=y
> ./config.common.ubuntu:CONFIG_FTRACE_MCOUNT_RECORD=y
> ./config.common.ubuntu:CONFIG_FTRACE_NMI_ENTER=y
> ./config.common.ubuntu:# CONFIG_FTRACE_STARTUP_TEST is not set
> ./config.common.ubuntu:CONFIG_FTRACE_SYSCALLS=y
> ./config.common.ubuntu:CONFIG_FUNCTION_GRAPH_TRACER=y
> ./config.common.ubuntu:CONFIG_GENERIC_TRACER=y
> ./config.common.ubuntu:CONFIG_HAVE_ARCH_TRACEHOOK=y
> ./config.common.ubuntu:CONFIG_HAVE_DYNAMIC_FTRACE=y
> ./config.common.ubuntu:CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
> ./config.common.ubuntu:CONFIG_HAVE_FTRACE_NMI_ENTER=y
> ./config.common.ubuntu:CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
> ./config.common.ubuntu:CONFIG_HAVE_FUNCTION_TRACER=y
> ./config.common.ubuntu:CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
> ./config.common.ubuntu:CONFIG_HAVE_MMIOTRACE_SUPPORT=y
> ./config.common.ubuntu:CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
> ./config.common.ubuntu:# CONFIG_IRQSOFF_TRACER is not set
> ./config.common.ubuntu:CONFIG_IWLWIFI_DEVICE_TRACING=y
> ./config.common.ubuntu:# CONFIG_KMEMTRACE is not set
> ./config.common.ubuntu:# CONFIG_KSYM_TRACER is not set
> ./config.common.ubuntu:CONFIG_MMIOTRACE=y
> ./config.common.ubuntu:# CONFIG_MMIOTRACE_TEST is not set
> ./config.common.ubuntu:CONFIG_NETFILTER_XT_TARGET_TRACE=m
> ./config.common.ubuntu:CONFIG_NOP_TRACER=y
> ./config.common.ubuntu:CONFIG_PM_TRACE=y
> ./config.common.ubuntu:CONFIG_PM_TRACE_RTC=y
> ./config.common.ubuntu:# CONFIG_RCU_TRACE is not set
> ./config.common.ubuntu:CONFIG_SCHED_TRACER=y
> ./config.common.ubuntu:# CONFIG_SCSI_IPR_TRACE is not set
> ./config.common.ubuntu:CONFIG_STACKTRACE=y
> ./config.common.ubuntu:CONFIG_STACKTRACE_SUPPORT=y
> ./config.common.ubuntu:# CONFIG_SYSPROF_TRACER is not set
> ./config.common.ubuntu:CONFIG_TRACEPOINTS=y
> ./config.common.ubuntu:CONFIG_TRACER_MAX_TRACE=y
> ./config.common.ubuntu:CONFIG_TRACE_IRQFLAGS_SUPPORT=y
> ./config.common.ubuntu:CONFIG_TRACING=y
> ./config.common.ubuntu:CONFIG_TRACING_SUPPORT=y
> ./config.common.ubuntu:# CONFIG_TREE_RCU_TRACE is not set
> ./config.common.ubuntu:CONFIG_USER_STACKTRACE_SUPPORT=y
> ./config.common.ubuntu:# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
> ./config.common.ubuntu:# CONFIG_WORKQUEUE_TRACER is not set
>
> Some of the above is not FTRACE. I also snipped the matches in
> config.common.ports because they are slightly different due to what the
> ports architectures support, but they should be pretty similar.
>
> Please let me know if anything stands out at you as incorrect.

I'm a bit surprised by one (family) of kconfig symbols here:

PM_TRACE=y, PM_TRACE_RTC=y

That enables low-level kernel developer debugging code.

Other than that, the rest make sense to me.


thanks. [I don't know about that "armel" stuff.]

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/