-
Notifications
You must be signed in to change notification settings - Fork 1.5k
[teamd] Make changes to netlink calls #21346
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
Draft
saiarcot895
wants to merge
2
commits into
sonic-net:master
Choose a base branch
from
saiarcot895:teamd-netlink-buffers
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
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
Increase the netlink buffer size from 983KB to 2MB, and eliminate a recvmsg syscall with the MSG_PEEK flag set to get the size of the message by instead telling libnl the maximum message size to expect. This is meant to help with performance in scale setups. Signed-off-by: Saikrishna Arcot <[email protected]>
/azp run Azure.sonic-buildimage |
Azure Pipelines successfully started running 1 pipeline(s). |
/azpw run |
/AzurePipelines run |
Azure Pipelines successfully started running 1 pipeline(s). |
/azpw run |
/AzurePipelines run |
You have several pipelines (over 10) configured to build pull requests in this repository. Specify which pipelines you would like to run by using /azp run [pipelines] command. You can specify multiple pipelines using a comma separated list. |
/azpw run Azure.sonic-buildimage |
/AzurePipelines run Azure.sonic-buildimage |
Azure Pipelines successfully started running 1 pipeline(s). |
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.
Why I did it
Partial fix for #19310.
On setups with many LAGs configured, if the teamd container is getting shut down, then there may be many messages sent from the kernel about LAGs/LAG members being removed. This may cause the netlink socket buffers to fill up.
NetworkManger (on the desktop side) uses 2MB socket buffers, whereas teamd is currently configured to use 960kB buffers. Additionally, because libnl doesn't know the size of each netlink message, it makes two
recvmsg
syscalls for each message: one to know the size of the message, and one to get the actual message. This can result in inefficiencies on weaker systems.Work item tracking
How I did it
Increase the size of the netlink buffers from 960kB to 2048kB. Additionally, specify the maximum size of each netlink message, so that libnl doesn't need to do a
MSG_PEEK
first to get the actual length, allocate the buffer for it, and then get the actual message.How to verify it
Which release branch to backport (provide reason below if selected)
Tested branch (Please provide the tested image version)
Description for the changelog
Link to config_db schema for YANG module changes
A picture of a cute animal (not mandatory but encouraged)