Hmm, I see the mention but I don't recall actually working with
Perfetto (though, it's entirely possible I did and just forgot).  My
goal isn't entirely identifying code bottlenecks however.  I'd divide
it into two:

Improving Arrow's C++ engine: OT is very helpful here, especially when
working on threading / scheduling type concerns, because it isn't so
much a "am I computing XYZ as fast as possible?" but more "are we
working on the correct tasks and utilizing the cores efficiently?"  I
have found OT is necessary but not sufficient as OT doesn't handle
analysis / visualization.  I experimented a bit with different
visualization tools (maybe I mentioned Perfetto then) but I've yet to
successfully get one configured (you and I encountered issues with
Jaeger and I haven't tried since then but I think you fixed the
issues).  So the latest (though not great) workflow I've been using is
OT + python notebook + perf/vtune/etc.  This sort of task is a
development-focused task.  Perfetto might be useful here, I can't say.

Query visibility: This task is less of a "improving the C++ engine"
and more "introducing visibility into the engine for consumers".  For
example, people might wonder why a particular query is running slowly
and need to be able to trace down further.  The resulting fix _might_
be a JIRA on the C++ engine but it also might be a realization that
the user has an inefficient query and the user switches to some other
query.  This case isn't a development use case but more of a user use
case.  I don't think Perfetto would fit this use case very well.

-Weston

On Wed, Nov 17, 2021 at 10:21 AM David Li <lidav...@apache.org> wrote:
>
> Ah, right - I'm not suggesting we use Perfetto, rather I'm just generally 
> curious about people's experience with these kinds of tools.
>
> -David
>
> On Wed, Nov 17, 2021, at 13:00, Antoine Pitrou wrote:
> >
> > Le 16/11/2021 à 17:18, David Li a écrit :
> > > Following up here: I'm hoping we can enable this in 7.0.0 and am still 
> > > working on getting all the builds passing (currently RPM packages fail to 
> > > build with it enabled). OpenTelemetry released their v1.0.0 recently so 
> > > that should not be a problem anymore.
> > >
> > > Some changes in approach:
> > >   * For now, I've removed integration with Flight and any other 
> > > components, focusing on just getting the builds working. I'll file 
> > > follow-up issues for the Flight integration.
> > >   * Unlike before, I'll change this to be built only when enabled, 
> > > instead of always. Flight will implicitly enable OpenTelemetry once 
> > > integrated. (Thanks to @Kou for questioning this.)
> > >   * I'm now looking at using this for evaluating performance 
> > > issues/bottlenecks in the C++ query engine, instead of/in addition to the 
> > > original use case in Flight. I'm curious if others have used 
> > > OpenTelemetry or similar libraries for this purpose before. I know tools 
> > > like Perfetto [1] are similar in concept if not approach, and @Weston was 
> > > experimenting with it for this purpose as well earlier in the thread.
> > > [1]: https://perfetto.dev/
> >
> > Isn't OpenTelemetry language-agnostic while Perfetto is a C++-only
> > library? (or are the two interoperable?)
> >
> > It seems that being language-agnostic would make OpenTracing a better
> > fit for Arrow (ideally, one could mingle C++, Rust or Java calls and
> > trace them together).
> >
> > Regards
> >
> > Antoine.
> >

Reply via email to