-
Notifications
You must be signed in to change notification settings - Fork 1.6k
[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
base: master
Are you sure you want to change the base?
Conversation
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). |
/azpw run Azure.sonic-buildimage |
/AzurePipelines run Azure.sonic-buildimage |
Azure Pipelines successfully started running 1 pipeline(s). |
/azpw run Azure.sonic-buildimage |
/AzurePipelines run Azure.sonic-buildimage |
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
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)