Skip to content

Conversation

hcsch
Copy link

@hcsch hcsch commented Oct 20, 2025

Description and more explanatory comments are to follow

hcsch added 9 commits October 16, 2025 15:25
The CI script requires it to be in our source tree, so we should ignore
it.
The split virtqueue implementation previously still used a Box around
the token ring items. The array the token ring is based on is howevery
already on the heap (in another Box). To avoid having to allocate for
individual items, only allocating the ring array up-front, remove the
Box around the items.

To successfully recover memory from the balloon device in an OOM
situation, virtqueue submission for a deflate request must not allocate.
During OOM handling the global allocator is already locked, so this
would deadlock.
Talc previously did not support allocations without attempting to use
the OOM handler to recover. For the balloon device to allocate pages for
the balloon however we want to just probe for and then allocate a chunk
of pages. If the allocation fails we don't want to recover old memory,
we just want to allocate a smaller chunk (since recovery with the
balloon will be shrinking the balloon, causing us to uselessly shuffle
around pages, possibly even failing).

See SFBdragon/talc#43
which is the PR for merging this modification upstream. Another API
function may be added for querying the current largest possible new
allocation in the future. In that case the balloon driver code should be
changed to use that instead of probing allocatable size in powers of
two.
Talc can optionally collect and expose some basic statistics about
allocations. Provide a feature that regularly prints these statistics
via another executor tassk.
TODO: explanatory commit message
@hcsch hcsch force-pushed the add-virtio-balloon branch from 97d40e1 to 9ae5b2c Compare October 20, 2025 10:21
@mkroening mkroening self-assigned this Oct 20, 2025
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

Successfully merging this pull request may close these issues.

2 participants