[Cherry-pick of Azure/sonic-sairedis.msft#73 to master] Enhance counter polling implementation #1645
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.
Add feature to allow different sets of supported counters for different interfaces.
Currently, if an interface has less supported counters than other interfaces on a switch, the interface with fewer supported counters will not have their counters polled to
COUNTERS_DB- it will remain as aN/Ainshow interface counters.This change will allow counters to be polled successfully for those interfaces with fewer supported counters by recognizing what can be polled and what cannot be when
syncdinitializes.Instead of directly modifying existing functions, parallel functions are created with the new logic that uses the new data structures
std::map<sai_object_id_t, size_t> m_objectSupportedCountersGroupMap and std::vector<std::set<StatType>> m_supportedCounterGroups. This is so that in the case the new method fails initialisation, it will fallback to the old method.The parallel methods are:
This change does not involve
BulkStatContextcode path. However, the data structure it relies on is no longer populated in the parallel functions. It will use the largestCounterGroupinm_supportedCounterGroupsinstead ofm_supportedCounters.