Repository navigation
device,tun: release completed packet references - #105
Draft
unisequence wants to merge 1 commit into
Draft
unisequence wants to merge 1 commit into
unisequence wants to merge 1 commit into
Conversation
Signed-off-by: Murad Rabadanov <the21.21@mail.ru>
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.
After synchronous TUN writes and completed send/receive batches, reusable scratch slices can still point at the finished packet buffers. Under the opt-in
ts_lowmem_releasebuild tag, clear those references while retaining reusable slice storage and the GRO virtio header. The default build uses no-op helpers.This is intended to let the garbage collector reclaim packet slabs after traffic becomes idle. The tradeoff is a small per-batch clearing cost. It does not change the packet bytes or the WireGuard protocol. This PR is independent of the separate lazy GRO capacity change.
Validation:
go test -tags ts_lowmem_release ./tun ./device; defaultgo test ./tun ./device. The tagged GRO reset test checks that completed packet references are released across alternating full and short batches. Further device-level error/stop-path assertions would improve coverage before merge.