Re: [RFC] Adding Support for Firefox's Gecko Profile Format

From: Anup Sharma
Date: Wed Aug 02 2023 - 15:00:05 EST


On Wed, Jul 26, 2023 at 04:22:51PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Wed, Jul 26, 2023 at 11:34:17PM +0530, Anup Sharma escreveu:
> > Dear all,
> >
> > I want to share a recent development in our project that
> > I have been working on this week. I have successfully
> > implemented a new feature that allows users to directly
> > open the browser and visualize the output of perf.data
> > on Firefox Profiler.
>
> Excellent news!
>
> > To enhance user experience, I have made sure this option
> > is enabled by default. Additionally, I've also added a
> > handy command line argument, "--save-only," which allows
> > users to save the output file as needed. This enhancement
> > replaces the previous standard output method, providing a
> > much-improved experience.
> >
> > Moreover, Everything is processed locally, and no data is
> > sent to any server.
>
> That addresses the worry about sending possibly sensitive data over the
> network by default, great.
>
> > During this implementation, I had the opportunity to delve
> > into several exciting topics, including threading, HTTP server,
> > and CORS mechanisms. The learning process has been both
> > challenging and rewarding.
>
> Cool that you're so excited learning all this.
>
> > Currently, I am in the process of performing some clean-up tasks.
> > Once that is complete, I will be sharing the next version of the
> > series, which includes this fantastic new feature, with all of
> > you very soon.
> >
> > Thank you for your ongoing support and encouragement.
>
> Keep it up!

This week, I'm working on documenting the gecko converter for our wiki.
I've dedicated a significant amount of time to think about the content
and how to approach it. So far, I've written sections covering the
introduction to Firefox Profiler and the formatting guidelines(not
published yet).

However, I've left the usage part blank because I'm uncertain about how
to enable gecko.py arguments when executing the "perf script gecko" command.
I've looked at examples like flamegraph-report and sctop-report, but I'm
still confused. I attempted to enable the script to take the gecko.py
command example "perf script report gecko --save-only=profiler.json,"
but this caused issues when running "perf script gecko -a sleep 3" again.
This has left me feeling rather puzzled, and I would appreciate discussing
this during our office hour, or any help here.

Due to this blocker, I haven't been able to send the updated patch
for test_gecko yet. However, I hope I'll find a solution soon and overcome
this obstacle.

> - Arnaldo
>
> > Thanks,
> > Anup
> >
> > > > Regards,
> > > > Anup
> > > > > >
> > > > > >>
> > > > > >> The second challenge revolved around the usage of event hooks provided with the perf script
> > > > > >> python event handlers. I found myself deliberating between two approaches. The first
> > > > > >> approach involved creating custom functions that would be called using the event
> > > > > >> handlers. These functions would then save the data in an organized format within
> > > > > >> globally created data structures. The alternative approach was to write the entire
> > > > > >> logic inside the event handlers themselves.
> > > > > >>
> > > > > >> Additionally, I contemplated whether it would be more suitable to handle the creation of
> > > > > >> a Gecko format for JSON and the profile format within the same script or to separate
> > > > > >> them into different scripts.
> > > > > >>
> > > > > >> I will discuss this points during tomorrow's office hour.
> > > > > >>
> > > > > >> However, I have gained a deeper understanding of the problem at hand and will use this
> > > > > >> knowledge to make more informed decisions and progress more effectively in the coming weeks.
> > > > > >
> > > > > > Sounds like you did a good amount of research on how perf script
> > > > > > works. We can talk about the details in the meeting.
> > > > > >
> > > > > > Thanks,
> > > > > > Namhyung
> > > > >
>
> --
>
> - Arnaldo