Re: [RFC][PATCH 03/14 v2] function_graph: Allow multiple users to attach to function graph

From: Steven Rostedt
Date: Mon May 27 2019 - 07:11:42 EST


On Mon, 27 May 2019 12:10:04 +0200
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:


> > rcu_tasks doesn't cross voluntary sleeps, which this does.
>
> Sure, but we can 'fix' that, surely.

Well, that's the point of the rcu_tasks. To let us know when a task has
voluntarily slept. I don't think we want to "fix" that.

> Alternatively we use SRCU, or
> something else, a blend between SRCU and percpu-rwsem for example, SRCU
> has that annoying smp_mb() on the read side, where percpu-rwsem doesn't
> have that.
>
> > > And delay the unreg until all active users are gone -- who gives a crap
> > > that can take a while.
> >
> > It could literally be forever (well, until the machine reboots). And
> > something that could appear to be a memory leak, although a very slow
> > one. But probably be hard to have more than the number of tasks on the
> > system.
>
> Again, who cares.. ? How often do you have return trace functions that
> dissapear, afaict that only happens with modules, and neither
> function_graph_trace nor kprobes are modules.
>
> It'll just mean the module unload will be stuck, possibly forever.
> That's not something I care about. Also, if we _really_ care, we can
> mandate that module users use some sort of ugly trampoline that covers
> their asses at the cost of some performance.
>
> Getting rid of that array makes this code far saner (and I suspect
> faster too).

The array is not the complex part of this. It was probably the easiest
part of this patch series. It just shows up a lot in the beginning
because I needed it to work before doing anything else. The more
difficult parts came with the passing of data from entry to exit.

I plan on keeping the array for now, as it is just an internal
implementation detail, that gives us only a limitation of the array
size that is noticed outside of the function graph code. If we find
some kind of RCU alternative, then we can switch to that in the
future and remove the array limitation.

-- Steve