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

From: Naveen N. Rao
Date: Fri Jun 18 2021 - 04:42:00 EST


Masami Hiramatsu wrote:
On Thu, 17 Jun 2021 13:07:13 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

On Thu, 17 Jun 2021 22:04:34 +0530
"Naveen N. Rao" <naveen.n.rao@xxxxxxxxxxxxxxxxxx> 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.

Yes. If we go down this route, we should limit the per-task allocation to a more reasonable 4k -- powerpc uses 64k pages.

Thanks,
Naveen