All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
	Ingo Molnar <mingo@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Brendan Gregg <brendan.d.gregg@gmail.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Alexei Starovoitov <ast@kernel.org>,
	David Ahern <dsahern@gmail.com>, He Kuang <hekuang@huawei.com>,
	Jiri Olsa <jolsa@redhat.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Milian Wolff <milian.wolff@kdab.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Stephane Eranian <eranian@google.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Vince Weaver <vincent.weaver@maine.edu>,
	Wang Nan <wangnan0@huawei.com>, Zefan Li <lizefan@huawei.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH/RFC] perf core: Allow setting up max frame stack depth via sysctl
Date: Thu, 21 Apr 2016 12:48:58 +0200	[thread overview]
Message-ID: <20160421104858.GH3408@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <20160420224730.GX3677@kernel.org>

On Wed, Apr 20, 2016 at 07:47:30PM -0300, Arnaldo Carvalho de Melo wrote:
> The default remains 127, which is good for most cases, and not even hit
> most of the time, but then for some cases, as reported by Brendan, 1024+
> deep frames are appearing on the radar for things like groovy, ruby.

yea gawds ;-)



> index 343c22f5e867..1390747b2195 100644
> --- a/kernel/events/callchain.c
> +++ b/kernel/events/callchain.c
> @@ -18,6 +18,14 @@ struct callchain_cpus_entries {
>  	struct perf_callchain_entry	*cpu_entries[0];
>  };
>  
> +int sysctl_perf_event_max_stack __read_mostly = PERF_MAX_STACK_DEPTH;
> +
> +static size_t perf_callchain_entry__sizeof(void)
> +{
> +	return sizeof(struct perf_callchain_entry) +
> +	       sizeof(__u64) * sysctl_perf_event_max_stack;
> +}
> +
>  static DEFINE_PER_CPU(int, callchain_recursion[PERF_NR_CONTEXTS]);
>  static atomic_t nr_callchain_events;
>  static DEFINE_MUTEX(callchain_mutex);
> @@ -73,7 +81,7 @@ static int alloc_callchain_buffers(void)
>  	if (!entries)
>  		return -ENOMEM;
>  
> -	size = sizeof(struct perf_callchain_entry) * PERF_NR_CONTEXTS;
> +	size = perf_callchain_entry__sizeof() * PERF_NR_CONTEXTS;
>  
>  	for_each_possible_cpu(cpu) {
>  		entries->cpu_entries[cpu] = kmalloc_node(size, GFP_KERNEL,

And this alloc _will_ fail if you put in a decent sized value..

Should we put in a dmesg WARN if this alloc fails and
perf_event_max_stack is 'large' ?

> @@ -215,3 +223,25 @@ exit_put:
>  
>  	return entry;
>  }
> +
> +int perf_event_max_stack_handler(struct ctl_table *table, int write,
> +				 void __user *buffer, size_t *lenp, loff_t *ppos)
> +{
> +	int new_value = sysctl_perf_event_max_stack, ret;
> +	struct ctl_table new_table = *table;
> +
> +	new_table.data = &new_value;

cute :-)

> +	ret = proc_dointvec_minmax(&new_table, write, buffer, lenp, ppos);
> +	if (ret || !write)
> +		return ret;
> +
> +	mutex_lock(&callchain_mutex);
> +	if (atomic_read(&nr_callchain_events))
> +		ret = -EBUSY;
> +	else
> +		sysctl_perf_event_max_stack = new_value;
> +	
> +	mutex_unlock(&callchain_mutex);
> +
> +	return ret;
> +}

  parent reply	other threads:[~2016-04-21 10:49 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-20 22:47 [PATCH/RFC] perf core: Allow setting up max frame stack depth via sysctl Arnaldo Carvalho de Melo
2016-04-20 23:04 ` Alexei Starovoitov
2016-04-22 20:52   ` [PATCH/RFC v2] " Arnaldo Carvalho de Melo
2016-04-22 21:37     ` Alexei Starovoitov
2016-04-22 22:05     ` David Ahern
2016-04-22 22:18       ` Alexei Starovoitov
2016-04-25 16:14         ` Arnaldo Carvalho de Melo
2016-04-25 16:27           ` Arnaldo Carvalho de Melo
2016-04-25 19:22             ` Arnaldo Carvalho de Melo
2016-04-25 20:06               ` Alexei Starovoitov
2016-04-25 20:17                 ` Arnaldo Carvalho de Melo
2016-04-25 21:59                   ` Alexei Starovoitov
2016-04-25 23:41                     ` Arnaldo Carvalho de Melo
2016-04-26  0:07                       ` Alexei Starovoitov
2016-04-26  0:29                         ` [PATCH/RFC v3] " Arnaldo Carvalho de Melo
2016-04-26  0:44                           ` Alexei Starovoitov
2016-04-26  0:47                             ` Arnaldo Carvalho de Melo
2016-04-26  0:49                               ` Brendan Gregg
2016-04-26 16:33                                 ` Arnaldo Carvalho de Melo
2016-04-26 16:45                                   ` David Ahern
2016-04-27 13:20                                     ` Arnaldo Carvalho de Melo
2016-04-26 20:02                                 ` Brendan Gregg
2016-04-26 21:05                                   ` Arnaldo Carvalho de Melo
2016-04-26 21:55                                     ` Peter Zijlstra
2016-04-27 12:53                                       ` Arnaldo Carvalho de Melo
2016-04-26 21:58                                     ` Brendan Gregg
2016-04-26 22:10                                       ` Peter Zijlstra
2016-04-27 12:56                                       ` Arnaldo Carvalho de Melo
2016-04-26 21:58                           ` Frederic Weisbecker
2016-04-27 12:53                             ` Arnaldo Carvalho de Melo
2016-04-27 16:09                               ` Frederic Weisbecker
2016-04-27 16:27                                 ` David Ahern
2016-04-27 15:39                           ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
2016-04-20 23:10 ` [PATCH/RFC] " David Ahern
2016-04-21  0:18   ` Arnaldo Carvalho de Melo
2016-04-21 10:48 ` Peter Zijlstra [this message]
2016-04-21 15:17   ` Arnaldo Carvalho de Melo
2016-04-21 15:42     ` Arnaldo Carvalho de Melo

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=20160421104858.GH3408@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=ast@kernel.org \
    --cc=brendan.d.gregg@gmail.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=hekuang@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=mhiramat@kernel.org \
    --cc=milian.wolff@kdab.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=vincent.weaver@maine.edu \
    --cc=wangnan0@huawei.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.