Re: libtraceevent + Rust

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Douglas,

On Tue, Feb 14, 2023 at 10:38:52AM +0000, Douglas Raillard wrote:
> On 14-02-2023 03:56, Hidenori Kobayashi wrote:
> > Hi Douglas,
> > 
> > On Mon, Feb 13, 2023 at 12:04:36PM +0000, Douglas Raillard wrote:
> > > Hi Hidenori,
> > > 
> > > > On 13-02-2023 05:17, Hidenori Kobayashi wrote:
> > > > Hi Douglas,
> > > > 
> > > > On Fri, Oct 14, 2022 at 04:16:33PM +0100, Douglas Raillard wrote:
> > > > > Hi everyone,
> > > > > 
> > > > > The idea of having some Rust interop for libtraceevent was floated during the
> > > > > Tracing Summit that took place this week.
> > > > > 
> > > > > The overall work has two scopes:
> > > > >       1. libtraceevent: low-level helpers to decode event formats and binary buffer pages.
> > > > >       2. high level API that e.g. can consume a trace.dat file and expose an iterator API etc.
> > > > > 
> > > > > The current discussion is only about #1. The 2nd part of the work has an
> > > > > entirely different set of constraints as it would aim at integrating in the
> > > > > Rust ecosystem as well as possible without trying to replace anything
> > > > > pre-existent.
> > > > Has anyone actually started working on these?
> > > 
> > > We have, this has been my main focus since around November.
> > > 
> > > > 
> > > > I have a Rust tool that parses the output from trace-cmd to infer the
> > > > internal states of a kernel module. While it serves our needs for now,
> > > > Steven kindly pointed me to this thread and suggested interacting
> > > > directly with the tracefs and using the tracefs libraries for parsing.
> > > > 
> > > > So I'd like to know:
> > > > - if this discussion reached a consensus
> > > 
> > > You are the first one to answer on that thread but the twitter poll from Steven was encouraging. At any
> > > rate, we need it for LISA [1] so I'm making it happen.
> > > 
> > > > - if there is any publicly available work already
> > > 
> > > Yes and no: I'm currently developing it as part of LISA but in its own "traceevent" crate,
> > > as added by that PR under tools/analysis/traceevent/:
> > > https://github.com/ARM-software/lisa/pull/1843
> > 
> > Thanks! Let me take a look.
> > 
> > Do you intend to keep this inside the LISA project repository?
> > 
> > The LISA project per se is interesting, but I feel your work is also
> > valuable for other projects. Is there any chance that this becomes a
> > standalone crate?
> 
> Yes, LISA is not necessarily the final location of that piece of code. I've made it
> as a separate crate from the other Rust bits so it can be split effortlessly when the time comes.
 
Looking forward to the upcoming announcement!

> > 
> > > This is very much WIP, so far I got:
> > > * A parser for v6 header up to and including the event formats.
> > >    Since that requires a C parser, it was a large chunk of the total work.
> > > * A C interpreter as (somewhat) required for array lengths and mostly for the print fmt args.
> > > * a zero-copy I/O layer that can load data from:
> > > 	* existing in-memory buffer
> > > 	* Any type implementing Read + Seek
> > > 	* mmap
> > > 
> > > Adding support for v7 header should be straightforward except for the I/O that might require adjustment
> > > depending on how compression is implemented.
> > > 
> > > 
> > > My current roadmap is:
> > > 1. Get to a state where I can share a trace-cmd report equivalent static tool for people to play with on
> > >     their own data and report issues.
> > > 2. Make a serde backend hooked to it since we need it for LISA (assuming performance is good enough)
> > > 3. Figure out exactly how it sits in the libtraceevent ecosystem and maintains it in the
> > >     long run, libtraceevent-style C bindings etc.
> > > 
> > > Note that if and when a serde backend is available, that should bring a conversion to JSON for basically free.
> > > 
> > > Unless I'm sidetracked by urgent things, 1. and 2. should become available in a few months. I expect 3. to happen
> > > when I have something concrete to show to the world.
> > > 
> > > [1] LISA: https://github.com/ARM-software/lisa
> > > > 
> > > > Thanks,
> > > > Hidenori
> > > 
> > > Thanks,
> > > 
> > > Douglas
> > 
> > Thanks,
> > Hidenori
> 



[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux