-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
[Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles #8768
Conversation
1. Add buffer profiles and pool definition for zero buffer profiles - If buffer model is static: - Apply normal buffer profiles to admin-up ports - Apply zero buffer profiles to admin-down ports - If buffer model is dynamic: - Apply normal buffer profiles to all ports - buffer manager will take care when a port is shutdown 2. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: - one in Mellanox-SN2700 for single ingress pool mode - the other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files 3. Adjust example output file of json template for unit test Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Remvoe ingress_lossless_pool.xoff from generic SKU Fix errors when inactive ports set is empty Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
1. Use one item for all queues if the port is admin down 2. Fix errors in buffers_defaults_t1.j2 in 2700 Signed-off-by: Stephen Sun <stephens@nvidia.com>
….sh accordingly Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Adjust test cases accordingly. Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Detailed change: device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers_defaults_objects.j2
device/mellanox/x86_64-mlnx_msn2700-r0/Mellanox-SN2700-D48C8/buffers_defaults_objects.j2
device/mellanox///buffers_defaults_t{0,1}.j2
files/build_templates/buffers_config.j2
files/build_templates/docker_image_ctl.j2 and files/build_templates/sonic_debian_extension.j2
platform/mellanox/zero_profiles.j2
platform/vs/docker-sonic-vs/buffermgrd.sh
src/sonic-config-engine/tests/*
|
As discussed, let's try to make this PR into 2 smaller prs |
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
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.
@stephenxs, this PR still contains the code from #9133
src/sonic-config-engine/tests/sample_output/py3/buffers-mellanox2410.json
Show resolved
Hide resolved
device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2
Show resolved
Hide resolved
Yes for now. Will remove them after that one is merged otherwise there is dependencies |
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
It depends on sonic-net/sonic-swss#1910 and submodule advancing PR once the former merged. |
…9133) - Why I did it This is to update the common sonic-buildimage infra for reclaiming buffer. - How I did it Render zero_profiles.j2 to zero_profiles.json for vendors that support reclaiming buffer The zero profiles will be referenced in PR [Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles #8768 on Mellanox platforms and there will be test cases to verify the behavior there. Rendering is done here for passing azure pipeline. Load zero_profiles.json when the dynamic buffer manager starts Generate inactive port list to reclaim buffer Signed-off-by: Stephen Sun <stephens@nvidia.com>
…9133) - Why I did it This is to update the common sonic-buildimage infra for reclaiming buffer. - How I did it Render zero_profiles.j2 to zero_profiles.json for vendors that support reclaiming buffer The zero profiles will be referenced in PR [Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles #8768 on Mellanox platforms and there will be test cases to verify the behavior there. Rendering is done here for passing azure pipeline. Load zero_profiles.json when the dynamic buffer manager starts Generate inactive port list to reclaim buffer Signed-off-by: Stephen Sun <stephens@nvidia.com>
…9133) - Why I did it This is to update the common sonic-buildimage infra for reclaiming buffer. - How I did it Render zero_profiles.j2 to zero_profiles.json for vendors that support reclaiming buffer The zero profiles will be referenced in PR [Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles #8768 on Mellanox platforms and there will be test cases to verify the behavior there. Rendering is done here for passing azure pipeline. Load zero_profiles.json when the dynamic buffer manager starts Generate inactive port list to reclaim buffer Signed-off-by: Stephen Sun <stephens@nvidia.com>
…er profiles (#9062) This is to backport community PR #8768 to 202106 branch Why I did it Support zero buffer profiles Add buffer profiles and pool definition for zero buffer profiles Support applying zero profiles on INACTIVE PORTS Enable dynamic buffer manager to load zero pools and profiles from a JSON file Signed-off-by: Stephen Sun stephens@nvidia.com How I did it Add buffer profiles and pool definition for zero buffer profiles If the buffer model is static: - Apply normal buffer profiles to admin-up ports - Apply zero buffer profiles to admin-down ports If the buffer model is dynamic: - Apply normal buffer profiles to all ports - buffer manager will take care when a port is shut down - Update buffers_config.j2 to support INACTIVE PORTS by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile lists Originally, all the macros to generate the above buffer objects took active ports only as an argument Now that buffer items need to be generated on inactive ports as well, an extra argument representing the inactive ports need to be added To be backward compatible, a new series of macros are introduced to take both active and inactive ports as arguments The original version (with active ports only) will be checked first. If it is not defined, then the extended version will be called Only vendors who support zero profiles need to change their buffer templates Enable buffer manager to load zero pools and profiles from a JSON file: The JSON file is provided on a per-platform basis It is copied from platform/<vendor> folder to /usr/share/sonic/temlates folder in compiling time and rendered when the swss container is being created. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: One in Mellanox-SN2700-D48C8 for single ingress pool mode The other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files Update sonic-cfggen test accordingly: - Adjust example output file of JSON template for unit test - Add unit test in for Mellanox's new buffer templates. How to verify it Regression test. Unit test in sonic-cfggen Run regression test and manually test.
Why I did it
Support zero buffer profiles
INACTIVE PORTS
dynamic buffer manager
to load zero pools and profiles from a JSON fileDependency: It depends on sonic-net/sonic-swss#1910 and submodule advancing PR once the former merged.
Signed-off-by: Stephen Sun stephens@nvidia.com
How I did it
Add buffer profiles and pool definition for zero buffer profiles
Update
buffers_config.j2
to supportINACTIVE PORTS
by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile listsEnable
buffer manager
to load zero pools and profiles from a JSON file:platform/<vendor>
folder to/usr/share/sonic/temlates
folder in compiling time and rendered when the swss container is being created.To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files:
Those files of all other SKUs will be symbol link to the above files
Update
sonic-cfggen
test accordingly:How to verify it
Run regression test and manually test.
Which release branch to backport (provide reason below if selected)
Description for the changelog
A picture of a cute animal (not mandatory but encouraged)