Re: [PATCH][GIT PULL] tracing: add function profiler

From: Andrew Morton
Date: Sat Mar 21 2009 - 07:36:00 EST


On Sat, 21 Mar 2009 00:37:59 -0400 (EDT) Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> This patch adds a function profiler. In debugfs/tracing/ two new
> files are created.
>
> function_profile_enabled - to enable or disable profiling
>
> trace_stat/functions - the profiled functions.
>
> For example:
>
> echo 1 > /debugfs/tracing/function_profile_enabled
> ./hackbench 50
> echo 0 > /debugfs/tracing/function_profile_enabled
>
> yields:
>
> cat /debugfs/tracing/trace_stat/functions
>
> Function Hit
> -------- ---
> _spin_lock 10106442
> _spin_unlock 10097492
> kfree 6013704
> _spin_unlock_irqrestore 4423941
> _spin_lock_irqsave 4406825
> __phys_addr 4181686
> __slab_free 4038222
> dput 4030130
> path_put 4023387
> unroll_tree_refs 4019532
> [...]
>
> The most hit functions are listed first. Functions that are not
> hit are not listed.

Why is this useful?

Can we think of any scenarios where kernel developers would get
useful-to-them results from this? Results which couldn't be
obtained by other similarly-accessible means?

<strains a bit>

I guess that one could run workload A, look at
/debugfs/tracing/trace_stat/functions changes, then run worklaod B, then
look at its /debugfs/tracing/trace_stat/functions changes, then somehow
glean some information about the differences between the effects of the two
workloads on the kernel. Or something.

But in this rather fake example and, I suspect, in many others, the result
will be less useful than using oprofile/etc in the same fashion.

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