Skip to content

Optimize counter initialization#1862

Merged
kcudnik merged 4 commits intosonic-net:masterfrom
stephenxs:optimize-counter-initialization
Jan 25, 2025
Merged

Optimize counter initialization#1862
kcudnik merged 4 commits intosonic-net:masterfrom
stephenxs:optimize-counter-initialization

Conversation

@stephenxs
Copy link
Copy Markdown
Collaborator

@stephenxs stephenxs commented Dec 6, 2024

Optimize counter initialization by reducing the number of bulk counter poll calls during initialization.

Implementation PRs

Module PR title state
sonic-sairedis Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss/sairedis GitHub issue/pull request detail
sonic-swss Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss/sairedis GitHub issue/pull request detail

Signed-off-by: Stephen Sun stephens@nvidia.com

stephenxs and others added 3 commits December 3, 2024 15:57
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@stephenxs stephenxs requested a review from kcudnik December 13, 2024 12:58
@stephenxs
Copy link
Copy Markdown
Collaborator Author

Supplied benchmark data on the latest image (without vendor SAI mutex on counter polling APIs)
Vendor SAI's implementation takes most of time in bulk counter-polling SAI API call during initialization

@kcudnik
Copy link
Copy Markdown
Contributor

kcudnik commented Jan 23, 2025

should i marge this ?

@stephenxs
Copy link
Copy Markdown
Collaborator Author

should i marge this ?

Yes, please. Thank you.

@kcudnik kcudnik merged commit 3c6bd92 into sonic-net:master Jan 25, 2025
@stephenxs stephenxs deleted the optimize-counter-initialization branch January 25, 2025 12:24
kcudnik pushed a commit to sonic-net/sonic-sairedis that referenced this pull request Feb 19, 2025
…r poll calls and communication between swss/sairedis (#1527)

Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss(orchagent)/sairedis(syncd) during initialization.

Originally, orchagent notifies syncd to initialize the counter using an extended sairedis call SAI_REDIS_SWITCH_ATTR_FLEX_COUNTER for each SAI object with the object ID as the key, which means the number of the extended sairedis calls is identical as the number of objects. It takes time to finish all the extended sairedis calls.

Now, for counter groups that have many objects (e.g., port, PG, queues, etc), orchagent notifies syncd to initialize the counter using a single extend sairedis call with many objects' ID as the key (format: <key1>,<key2>,...<keyn>). So, it takes much less time to initialize the counters because fewer extend sairedis calls are required.

Details:

In sairedis, the bulk counter is supported for all counter groups except Buffer Pool Counter and DASH ENI counter.

In swss, bulk counter for the following counter groups

priority group watermark
priority group drop
queue watermark
queue stat
PFC watchdog
HLD sonic-net/SONiC#1862
mssonicbld added a commit to mssonicbld/sonic-sairedis.msft that referenced this pull request Feb 28, 2025
…r poll calls and communication between swss/sairedis

Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss(orchagent)/sairedis(syncd) during initialization.

Originally, `orchagent` notifies `syncd` to initialize the counter using an extended sairedis call `SAI_REDIS_SWITCH_ATTR_FLEX_COUNTER` for each SAI object with the object ID as the key, which means the number of the extended sairedis calls is identical as the number of objects. It takes time to finish all the extended sairedis calls.

Now, for counter groups that have many objects (e.g., port, PG, queues, etc), `orchagent` notifies `syncd` to initialize the counter using a single extend sairedis call with many objects' ID as the key (format: `<key1>,<key2>,...<keyn>`). So, it takes much less time to initialize the counters because fewer extend sairedis calls are required.

Details:
- In sairedis, the bulk counter is supported for all counter groups except `Buffer Pool Counter` and `DASH ENI counter`.
- In swss, bulk counter for the following counter groups

  - priority group watermark
  - priority group drop
  - queue watermark
  - queue stat
  - PFC watchdog

HLD sonic-net/SONiC#1862
mssonicbld added a commit to Azure/sonic-sairedis.msft that referenced this pull request Feb 28, 2025
…r poll calls and communication between swss/sairedis (#25)

Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss(orchagent)/sairedis(syncd) during initialization.

Originally, `orchagent` notifies `syncd` to initialize the counter using an extended sairedis call `SAI_REDIS_SWITCH_ATTR_FLEX_COUNTER` for each SAI object with the object ID as the key, which means the number of the extended sairedis calls is identical as the number of objects. It takes time to finish all the extended sairedis calls.

Now, for counter groups that have many objects (e.g., port, PG, queues, etc), `orchagent` notifies `syncd` to initialize the counter using a single extend sairedis call with many objects' ID as the key (format: `<key1>,<key2>,...<keyn>`). So, it takes much less time to initialize the counters because fewer extend sairedis calls are required.

Details:
- In sairedis, the bulk counter is supported for all counter groups except `Buffer Pool Counter` and `DASH ENI counter`.
- In swss, bulk counter for the following counter groups

 - priority group watermark
 - priority group drop
 - queue watermark
 - queue stat
 - PFC watchdog

HLD sonic-net/SONiC#1862
mssonicbld added a commit to mssonicbld/sonic-swss.msft that referenced this pull request Mar 4, 2025
…r poll calls and communication between swss/sairedis

<!--
Please make sure you have read and understood the contribution guildlines:
https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

1. Make sure your commit includes a signature generted with `git commit -s`
2. Make sure your commit title follows the correct format: [component]: description
3. Make sure your commit message contains enough details about the change and related tests
4. Make sure your pull request adds related reviewers, asignees, labels

Please also provide the following information in this pull request:
-->

**What I did**

Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss(orchagent)/sairedis(syncd) during initialization.

Originally, `orchagent` notifies `syncd` to initialize the counter using an extended sairedis call `SAI_REDIS_SWITCH_ATTR_FLEX_COUNTER` for each SAI object with the object ID as the key, which means the number of the extended sairedis calls is identical as the number of objects. It takes time to finish all the extended sairedis calls.

Now, for counter groups that have many objects (e.g., port, PG, queues, etc), `orchagent` notifies `syncd` to initialize the counter using a single extend sairedis call with many objects' ID as the key (format: `<key1>,<key2>,...<keyn>`). So, it takes much less time to initialize the counters because fewer extend sairedis calls are required.

HLD sonic-net/SONiC#1862
Depends on sonic-net/sonic-sairedis#1527

**Why I did it**

**How I verified it**

Unit test (mock test) and regression.

**Details if related**
- In sairedis, the bulk counter is supported for all counter groups except `Buffer Pool Counter` and `DASH ENI counter`.
- In swss, bulk counter for the following counter groups

  - priority group watermark
  - priority group drop
  - queue watermark
  - queue stat
  - PFC watchdog
  - WRED/ECN counter
mssonicbld added a commit to Azure/sonic-swss.msft that referenced this pull request Mar 4, 2025
…r poll calls and communication between swss/sairedis (#49)

<!--
Please make sure you have read and understood the contribution guildlines:
https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

1. Make sure your commit includes a signature generted with `git commit -s`
2. Make sure your commit title follows the correct format: [component]: description
3. Make sure your commit message contains enough details about the change and related tests
4. Make sure your pull request adds related reviewers, asignees, labels

Please also provide the following information in this pull request:
-->

**What I did**

Optimize counter initialization by reducing the number of bulk counter poll calls and communication between swss(orchagent)/sairedis(syncd) during initialization.

Originally, `orchagent` notifies `syncd` to initialize the counter using an extended sairedis call `SAI_REDIS_SWITCH_ATTR_FLEX_COUNTER` for each SAI object with the object ID as the key, which means the number of the extended sairedis calls is identical as the number of objects. It takes time to finish all the extended sairedis calls.

Now, for counter groups that have many objects (e.g., port, PG, queues, etc), `orchagent` notifies `syncd` to initialize the counter using a single extend sairedis call with many objects' ID as the key (format: `<key1>,<key2>,...<keyn>`). So, it takes much less time to initialize the counters because fewer extend sairedis calls are required.

HLD sonic-net/SONiC#1862
Depends on sonic-net/sonic-sairedis#1527

**Why I did it**

**How I verified it**

Unit test (mock test) and regression.

**Details if related**
- In sairedis, the bulk counter is supported for all counter groups except `Buffer Pool Counter` and `DASH ENI counter`.
- In swss, bulk counter for the following counter groups

 - priority group watermark
 - priority group drop
 - queue watermark
 - queue stat
 - PFC watchdog
 - WRED/ECN counter
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.

4 participants