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

From: Naveen N. Rao
Date: Tue Jun 15 2021 - 13:42:20 EST


Masami Hiramatsu wrote:
On Mon, 14 Jun 2021 23:33:29 +0530
"Naveen N. Rao" <naveen.n.rao@xxxxxxxxxxxxxxxxxx> wrote:

We currently limit maxactive for a kretprobe to 4096 when registering
the same through tracefs. The comment indicates that this is done so as
to keep list traversal reasonable. However, we don't ever iterate over
all kretprobe_instance structures. The core kprobes infrastructure also
imposes no such limitation.

Remove the limit from the tracefs interface. This limit is easy to hit
on large cpu machines when tracing functions that can sleep.

Reported-by: Anton Blanchard <anton@xxxxxxxxxx>
Signed-off-by: Naveen N. Rao <naveen.n.rao@xxxxxxxxxxxxxxxxxx>

OK, but I don't like to just remove the limit (since it can cause
memory shortage easily.)
Can't we make it configurable? I don't mean Kconfig, but tracefs/options/kretprobe_maxactive, or kprobes's debugfs knob.

Hmm, maybe debugfs/kprobes/kretprobe_maxactive will be better since
it can limit both trace_kprobe and kprobes itself.

I don't think it is good to put a new tunable in debugfs -- we don't have any kprobes tunable there, so this adds a dependency on debugfs which shouldn't be necessary.

/proc/sys/debug/ may be a better fit since we have the kprobes-optimization flag to disable optprobes there, though I'm not sure if a new sysfs file is agreeable.


But, I'm not too sure this really is a problem. Maxactive is a user _opt-in_ feature which needs to be explicitly added to an event definition. In that sense, isn't this already a tunable?


- Naveen