Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reopening Perfetto in Node discussion #654

Open
LeszekSwirski opened this issue Feb 18, 2025 · 6 comments
Open

Reopening Perfetto in Node discussion #654

LeszekSwirski opened this issue Feb 18, 2025 · 6 comments

Comments

@LeszekSwirski
Copy link

Hi folks, I work on V8 and we would like to move V8's tracing to be Perfetto-only, to be able to take advantage of various things that Perfetto supports which the legacy tracing doesn't. I see there was a past project to make Node use Perfetto, which ended up getting dropped (#277). I assume that V8 moving to Perfetto would have consequences for Node, so I would like to reopen this conversation.

@RafaelGSS
Copy link
Member

Apparently, it ended up being closed due to lack of bandwidth #277 (comment) I don't think there is a consequence for Node, and even if there was it might have changed by now (the issue has been going on for about 6 years now). I'm happy to help on this (but I don't have have much bandwidth too)

@LeszekSwirski
Copy link
Author

I don't really have the cycles nor mandate to move Node to Perfetto, I just would like to avoid breaking Node if I were to move V8 to require Perfetto. The legacy trace macros should still work, given that they currently work for V8 when compiled with Perfetto in Chromium, so it would be more of a build system change than a tracing change (of course afterward, Node would also be free to move to non-legacy tracing if it were to want to).

@jasnell
Copy link
Member

jasnell commented Feb 18, 2025

Well, a few years ago I opened a PR that made the switch to perfetto and ended up closing it because no one else expressed any interest in even helping to review it. I'm +1 on switching and will happily review PRs.

@Qard
Copy link
Member

Qard commented Feb 20, 2025

Same here. Happy to review, but don't have the bandwidth to build myself right now. 😅

@legendecas
Copy link
Member

If V8 is going to be perfetto-only for tracing, I think the answer to the question that how likely perfetto will be abandoned like gyp is we need to go with perfetto regardless. Maintaining the existing tracing library like https://github.com/nodejs/gyp-next/ seems infeasible as V8 traces will be missing in this case.

@jasnell will you pick up nodejs/node#35900 again? Or I may try to pick it up.

@LeszekSwirski
Copy link
Author

Well, basically I hope it won't be, because if Perfetto is abandoned, then V8, Chromium, and Android are all going to have to scramble to replace it, and I imagine there would have to be some shim to help with migration (like we have for the existing legacy JSON-based tracing, which fwiw is already abandoned so we're comparing already-abandoned vs. maybe-future-abandoned). Obviously no one can make any promises here though.

nodejs-github-bot pushed a commit to nodejs/node that referenced this issue Mar 5, 2025
Both V8 and perfetto depends on abseil. When perfetto support is
enabled, V8 also depends on perfetto.

In order to share abseil between perfetto and V8 targets, and avoid
cycle dependencies between `v8.gyp` and `perfetto.gyp`, this extracts
target `abseil` from `v8.gyp` to an independent file `abseil.gyp`.

PR-URL: #57289
Refs: nodejs/diagnostics#654
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
aduh95 pushed a commit to nodejs/node that referenced this issue Mar 9, 2025
Both V8 and perfetto depends on abseil. When perfetto support is
enabled, V8 also depends on perfetto.

In order to share abseil between perfetto and V8 targets, and avoid
cycle dependencies between `v8.gyp` and `perfetto.gyp`, this extracts
target `abseil` from `v8.gyp` to an independent file `abseil.gyp`.

PR-URL: #57289
Refs: nodejs/diagnostics#654
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
aduh95 pushed a commit to nodejs/node that referenced this issue Mar 9, 2025
Both V8 and perfetto depends on abseil. When perfetto support is
enabled, V8 also depends on perfetto.

In order to share abseil between perfetto and V8 targets, and avoid
cycle dependencies between `v8.gyp` and `perfetto.gyp`, this extracts
target `abseil` from `v8.gyp` to an independent file `abseil.gyp`.

PR-URL: #57289
Refs: nodejs/diagnostics#654
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
RafaelGSS pushed a commit to nodejs/node that referenced this issue Apr 1, 2025
Both V8 and perfetto depends on abseil. When perfetto support is
enabled, V8 also depends on perfetto.

In order to share abseil between perfetto and V8 targets, and avoid
cycle dependencies between `v8.gyp` and `perfetto.gyp`, this extracts
target `abseil` from `v8.gyp` to an independent file `abseil.gyp`.

PR-URL: #57289
Refs: nodejs/diagnostics#654
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
RafaelGSS pushed a commit to nodejs/node that referenced this issue Apr 1, 2025
Both V8 and perfetto depends on abseil. When perfetto support is
enabled, V8 also depends on perfetto.

In order to share abseil between perfetto and V8 targets, and avoid
cycle dependencies between `v8.gyp` and `perfetto.gyp`, this extracts
target `abseil` from `v8.gyp` to an independent file `abseil.gyp`.

PR-URL: #57289
Refs: nodejs/diagnostics#654
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants