[catpowder] Enhancement: add buffer pooling and multiple ring entries to XDP backend #1495
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.
This PR allows for multiple RX/TX ring entries in the catpowder XDP backend. It also hooks the user memory region (
UmemReg
) into buffer pools to prevent additional buffer copies and allow for more efficient buffer allocation.This PR addresses both #1438 and #1437.
One potential downside of this approach: receive buffers are a limited resource, and if the client holds too many receive buffers for too long, the buffer pool may become exhausted. In this case, the system will start to drop packets. Possibly this behavior should be configurable (i.e., the receive buffers should be copied out of the receive pool unless a "zero copy" config is enabled).