src: avoid copying SEA snapshot data - #65841
Closed
colinhacks wants to merge 1 commit into
Closed
Conversation
Signed-off-by: Colin McDonnell <[email protected]>
Collaborator
|
Review requested:
|
Contributor
|
Welcome to Node.js, and thank you for your first contribution! Before review, please take a moment to read:
Please make sure every commit is signed off. For a first pull request, GitHub Actions require collaborator approval and Jenkins CI must be started by a collaborator or triager, so an initial wait is normal. |
Contributor
|
The recommendations in: advise you should tackle only one issue at a time and that you should not open any new PRs until your first PR has been approved. You already have #65796 open, which has received reviews, however it has not been approved as yet. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
When a single executable application uses a startup snapshot, Node.js currently copies the complete V8 startup-data region out of the embedded SEA resource during deserialization. The resource remains mapped for the process lifetime, so that copy is unnecessary.
This change lets the SEA loader borrow the V8 startup data directly from the executable image. File-backed and embedder-provided snapshot blobs keep the existing owned-copy behavior because their input buffers do not have the required lifetime.
Results
The following results are medians from 240 randomized, interleaved launches after 30 warmup launches on Linux x64 (Intel Xeon Platinum 8481C). The baseline and patched executables were built from
6f41e415639b5ec3dd816e44945cc73b4d7651e3.Validation
make lint-cpppython3 tools/test.py --mode=release seamake -j22 test-onlyAI disclosure: a coding agent prepared the investigation, patch, measurements, and description under the contributor's direction. The agent verified the lifetime invariant against the source, built Node.js, and ran the validation above. The contributor approved opening this pull request and will respond personally during review.