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

[teamd] Make changes to netlink calls #21346

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

saiarcot895
Copy link
Contributor

@saiarcot895 saiarcot895 commented Jan 7, 2025

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
  • Microsoft ADO (number only):

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)

  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111
  • 202205
  • 202211
  • 202305

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)

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]>
@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

Copy link

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
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants