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

From: Anup Sharma
Date: Wed Aug 09 2023 - 16:01:21 EST


On Thu, Aug 03, 2023 at 12:29:51AM +0530, Anup Sharma wrote:
> 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.

Hello All,
As discussed during last office hour, I was little occupied this week, so
I haven't been able to make much progress on my TODO list. Nonetheless,
I've resent a server patch and test script patch for your review. If I can
get it reviewed it would be great to make further progress.

I'm also working on writing documentation for our wiki. I've already written a
bit, and you can see it here: https://perf.wiki.kernel.org/index.php/Tutorial#Firefox_Profiler.
If you have any thoughts or suggestions, I'd appreciate hearing them. I'll add
more details once I've sorted out some issues I'm having with certain commands.

This week, I do not have a specific agenda. Hence, if we opt to skip this week's
office hour, it wouldn't pose any inconvenience. Nevertheless, I am available if
there are matters you wish to discuss.

Here's what I have in mind to work on next:

1. Making sure that gecko script args work with commands, like
(perf script gecko --save-only=profile.json) or (perf script gecko --kernel-color=green),which
aren't working right now.

2. Trying out "perf record -p firefox" or using it with a specific process ID to
see if the current script supports these recording commands.

3. Adding page fault and one more event in stackTable in gecko script.

4. Making the documentation better.

Thanks,
Anup

> > - 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