-
Notifications
You must be signed in to change notification settings - Fork 2.1k
fix: use temporary buffer for loading vmstate file #5394
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
Merged
Merged
Conversation
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
d6ff290
to
c9cda3c
Compare
bchalios
previously approved these changes
Aug 19, 2025
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5394 +/- ##
==========================================
+ Coverage 82.36% 82.41% +0.05%
==========================================
Files 266 266
Lines 30571 30580 +9
==========================================
+ Hits 25180 25203 +23
+ Misses 5391 5377 -14
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
In commit e7504ae ("refactor: cleanup vmm::snapshot module"), firecracker started reading the snapshot vmstate file in a single pass instead of first loading it into a Vec and then deserializing. This seems to have caused some performance regression due to the deserializer doing many successive reads, resulting in many read(2) syscalls. Fix this by going back to first reading the snapshot file into a buffer, and then deserializing from slice instead. Signed-off-by: Patrick Roy <[email protected]>
This is covered by rust intergration tests, but having a unit test that does the snapshot/restore roundtrip is nice, because I can run it on my laptop without needing sudo. Signed-off-by: Patrick Roy <[email protected]>
c9cda3c
to
0cd1a8c
Compare
Manciukic
reviewed
Aug 19, 2025
bchalios
approved these changes
Aug 19, 2025
Manciukic
approved these changes
Aug 20, 2025
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.
In commit e7504ae ("refactor: cleanup vmm::snapshot module"),
firecracker started reading the snapshot vmstate file in a single pass
instead of first loading it into a Vec and then deserializing. This
seems to have caused some performance regression due to the deserializer
doing many successive reads, resulting in many read(2) syscalls.
Fix this by going back to first reading the snapshot file into a buffer,
and then deserializing from slice instead.
Signed-off-by: Patrick Roy [email protected]## Changes
...
Reason
...
License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache 2.0 license. For more information on following Developer
Certificate of Origin and signing off your commits, please check
CONTRIBUTING.md
.PR Checklist
tools/devtool checkbuild --all
to verify that the PR passesbuild checks on all supported architectures.
tools/devtool checkstyle
to verify that the PR passes theautomated style checks.
how they are solving the problem in a clear and encompassing way.
in the PR.
CHANGELOG.md
.Runbook for Firecracker API changes.
integration tests.
TODO
.rust-vmm
.