Skip to content
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

Rx memory #1105

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Rx memory #1105

wants to merge 4 commits into from

Conversation

ybendito
Copy link
Collaborator

@ybendito ybendito commented Jun 7, 2024

No description provided.

Split the decisions about size of shared buffers for RXQ and
allocation of shared memories. Create optimal layout of RX shared
buffers before creation of queues; allocate the memories according
the layout. Initially optimized layout is desabled and we create
the "legacy" layout, fully compatible with what was done before.
This commit contains only creation of the layout, it is not yet
applied when allocating RX buffer's memories.

Signed-off-by: Yuri Benditovich <[email protected]>
https://issues.redhat.com/browse/RHEL-19814

Do not allocate redundant memory, use full 4K+ pages when
needed, tail of the data (usually small) allocate together
with header/indirect block and make this block smaller than
4K when possible. This reduces 10% of all the shared memory
allocated for RX buffers. For non-RSC configuration it is
possible to reduce much more (for future).

Signed-off-by: Yuri Benditovich <[email protected]>
Currently the driver always assume the maximim packet size
is ~64K as it is compiled with RSC support. The initial
reason was that if the RSC is disabled by admin (registry
value of the driver), it can be turned on by command, i.e.
without disable-enable. However this depends also on host
features. If the host does not support the GUEST_TSOx,
RSC will be reported to the OS as not supported but the
buffers are still huge without any reason.
(In such case the powershell reports IPv4 and IPv6 operational
state as Off even if the RSC keywords are enabled).
The commit moves the decision to initialization time - if the
RSC is not supported, the buffers are sized accoring to MTU.
The memory consumption is lower 16 times.

Signed-off-by: Yuri Benditovich <[email protected]>
@ybendito
Copy link
Collaborator Author

ybendito commented Jun 9, 2024

NetKVM-Win2025x64 - 7 failures, the same as with PR-1104
NetKVM-Win11_22H2x64 - E2EPerf: well known, under investigation
Receiver failed to coalesce the minimum percentage of received packets (70%). Only 0% of receives were coalesced
2019: OidNdisRequest - the NDIS log file and the WTL file are almost empty and in fact not valid.

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.

1 participant