-
Notifications
You must be signed in to change notification settings - Fork 0
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
Change to streaming out the heap snapshot data #127
Conversation
* Streaming the heap snapshot! This should prevent the engine from OOMing while recording the snapshot! Now we just need to sample the files, either online, before downloading, or offline after downloading :) If we're gonna do it offline, we'll want to gzip the files before downloading them. * Allow custom filename; use original API * Support legacy heap snapshot interface. Add reassembly function. * Add tests * Apply suggestions from code review * Update src/gc-heap-snapshot.cpp * Change to always save the parts in the same directory This way you can always recover from an OOM * Fix bug in reassembler: from_node and to_node were in the wrong order * Fix correctness mistake: The edges have to be reordered according to the node order. That's the whole reason this is tricky. But i'm not sure now whether the SoAs approach is actually an optimization.... It seems like we should probably prefer to inline the Edges right into the vector, rather than having to do another random lookup into the edges table? * Debugging messed up edge array idxs * Disable log message * Write the .nodes and .edges as binary data * Remove unnecessary logging * fix merge issues * attempt to add back the orphan node checking logic --------- Co-authored-by: Nathan Daly <[email protected]> Co-authored-by: Nathan Daly <[email protected]>
Requirements for merging: I have opened an issue or PR upstream on JuliaLang/julia: JuliaLang#52854 |
remove unused k_node_number_of_fields from gc-heap-snapshot.cpp attempt to resolve the savepoint issue on serialize_node
I think this actually does need to be ported to 1.10, since we'll want this in our 1.10 branch as well. Thanks for commenting on what you changed, that was helpful. |
dedupling strings for field paths
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
This should prevent the engine from OOMing while recording the snapshot!
Now we just need to sample the files, either online, before downloading, or offline after downloading :)
If we're gonna do it offline, we'll want to gzip the files before downloading them.
Allow custom filename; use original API
Support legacy heap snapshot interface. Add reassembly function.
Add tests
Apply suggestions from code review
Update src/gc-heap-snapshot.cpp
Change to always save the parts in the same directory
This way you can always recover from an OOM
Fix bug in reassembler: from_node and to_node were in the wrong order
Fix correctness mistake: The edges have to be reordered according to the node order. That's the whole reason this is tricky.
But i'm not sure now whether the SoAs approach is actually an optimization.... It seems like we should probably prefer to inline the Edges right into the vector, rather than having to do another random lookup into the edges table?
Debugging messed up edge array idxs
Disable log message
Write the .nodes and .edges as binary data
Remove unnecessary logging
fix merge issues
attempt to add back the orphan node checking logic
PR Description
What does this PR do?
Checklist
Requirements for merging:
port-to-*
labels that don't apply.