Metric AggregatorStore improvements
See original GitHub issueOpening an issue to track future improvements.
The current AggStore uses 2 data structures to find the MetricPoint
. One is an pre-allocated array of MetricPoint
, where the actual points are stored, and then a concurrentdictionary (2 level), to find the index within the array for a given keys/values combinations.
- The current design requires Sorting based on keys. Based on benchmarking, this is the biggest contributor to the hot path. One potential way to improve this is to add 2 entries to the dictionary - one with the 1st seen order of keys, and another with sorted order. If subsequent recordings are with same order as initial, it can be looked up without sort. If lookup fails, then need to sort and do another lookup. This might be good improvement, if user keeps providing the keys in same order.
- Replace the inner concurrent dictionary with hashtable to avoid dual lock on writes - https://github.com/open-telemetry/opentelemetry-dotnet/pull/2339#discussion_r706997727
- Design a totally new data structure specialized for the purpose.
- Special case 0 tags - see discussion : https://github.com/open-telemetry/opentelemetry-dotnet/pull/2339#discussion_r711217242
Given this is purely internal implementation without any public API, this can be addressed after other high priority asks.
Issue Analytics
- State:
- Created 2 years ago
- Comments:5 (3 by maintainers)
Top Results From Across the Web
DX NetOps Performance Management - 21.2
Upgrade a Non-Fault-Tolerant Data Aggregator to Fault-Tolerant Data ... Deploy a New Metric Family or Vendor Certification on the Production System.
Read more >DX Performance Management - 20.2
DX NetOps Performance Management monitors, stores, analyzes, and displays a massive amount of information for assuring service quality across large, ...
Read more >Components installed with ITOM SU Licensing
ITOM Licensing Aggregator Store, Calculates the average of daily CI counts for the last 90 days. ITOM Licensing Governance CI Listing Store ...
Read more >All fixes from Rome Patch 9 to San Diego Patch 2
List of fixed problems for customers upgrading from Rome Patch 9 to San Diego Patch 2.
Read more >Be Consistent in Metric Selection for Six Sigma Projects
Selecting the appropriate primary metric for an improvement task is the result of a sound process to identify project scope. A well-scoped ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Not sure I fully understood the bug. When
(c = 3, b=2, a=1)
is encountered, its lookup will fail. Then its sorted an another lookup is done, which also fails. Then both original order and sorted order is inserted to dictionary. Next,(c=3, a=1, b=2)
comes. Its initial lookup fails. Then sorted lookup occurs, which succeeds.(btw, this is not implemented yet)
The most critical improvements are already shipped as part of 1.2 itself. Removing this from 1.3 milestone, as it can occur anytime. (1.3 is releasing in May 2022 with other improvements)