Re: [PATCH 2/2] trace/kprobe: Remove limit on kretprobe maxactive

Masami Hiramatsu
2021-06-18T04:26:40Z

On Thu, 17 Jun 2021 13:07:13 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> On Thu, 17 Jun 2021 22:04:34 +0530
> "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> wrote:
>
> > > 2. Move the kretprobe instance pool from kretprobe to struct task.
> > > This pool will allocates one page per task, and shared among all
> > > kretprobes. This pool will be allocated when the 1st kretprobe
> > > is registered. maxactive will be kept for someone who wants to
> > > use per-instance data. But since dynamic event doesn't use it,
> > > it will be removed from tracefs and perf.
> >
> > Won't this result in _more_ memory usage compared to what we have now?
>
> Maybe or maybe not. At least with this approach (or the function graph
> one), you will allocate enough for the environment involved. If there's
> thousands of tasks, then yes, it will allocate more memory. But if you are
> running thousands of tasks, you should have a lot of memory in the machine.
>
> If you are only running a few tasks, it will be less than the current
> approach.

Right, this depends on how many tasks you are running on your machine.
Anyway, since you may not sure how much maxactive is enough, you will
set maxactive high, then it can consume more than that. Of course you
can optimize by trial and error. But that does not guarantee all cases,
because the number of tasks can be increased while tracing. You might
need to re-configure it by checking the nmissed count again.

Thank you,

--
Masami Hiramatsu <mhiramat@kernel.org>