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

Naveen N. Rao
2021-06-15T17:42:20Z

Masami Hiramatsu wrote:
> On Mon, 14 Jun 2021 23:33:29 +0530
> "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> 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@ozlabs.org>
>> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
>
> 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