Add ::path-cache to registry collectors map metadata #59
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.
An update to the Java Client Library was merged that improved performance of metric name sanitization. Unfortunately it also includes the move to OpenMetrics that would cause many issues at Nubank. We would like to get the benefit of the metric sanitization performance improvement but cannot upgrade the client at this time.
We shifted our focus to Iapetos in an attempt to implement the improvement here. During the investigation we noticed that collector lookup from the registry sanitizes the metric names on every invocation. In order to limit, as much as possible, the redundant sanitization, we added a simple cache holding the paths to the collectors.
If the cache does not result in a hit, perhaps because the collector was registered with a
keyword
and then referenced by another supported type such as avector
, the implementation falls back to computing the path again.For example:
Included in the PR is a benchmark of the results:
On the
master
branch we see:With the addition of a cache we observed the following performance improvement: