Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[exporter/loadbalancing] Improve the performance when merging traces …
…belonging to the same backend (open-telemetry#32032) **Description:** no need to reimplement that in an extremely allocation-inefficient fashion. I'm actually not sure why mergeTraces() and mergeMetrics() need to exist in the first place; all the other exporters coupled with the batch processor work just fine, not sure why loadbalancing would be special. open-telemetry#30141 seems to imply they were implemented to improve performance, but I don't really understand why batch processor would not have been sufficient for that improvement originally. benchmarks before: ``` goos: darwin goarch: arm64 pkg: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter BenchmarkMergeTraces_X100-8 50214 23507 ns/op BenchmarkMergeTraces_X500-8 10000 113952 ns/op BenchmarkMergeTraces_X1000-8 5208 226062 ns/op BenchmarkMergeMetrics_X100-8 64933 18540 ns/op BenchmarkMergeMetrics_X500-8 12885 91418 ns/op BenchmarkMergeMetrics_X1000-8 6590 184584 ns/op PASS ok github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter 9.783s ``` and after: ``` goos: darwin goarch: arm64 pkg: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter BenchmarkMergeTraces_X100-8 295886529 3.836 ns/op BenchmarkMergeTraces_X500-8 309865370 3.833 ns/op BenchmarkMergeTraces_X1000-8 310739948 3.800 ns/op BenchmarkMergeMetrics_X100-8 315567813 3.841 ns/op BenchmarkMergeMetrics_X500-8 310341650 3.849 ns/op BenchmarkMergeMetrics_X1000-8 314292003 3.830 ns/op PASS ok github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter 10.733s ``` **Link to tracking Issue:** n/a **Testing:** unit tests pass & cpu time for our collectors using loadbalancingexporter (12 replicas, total of 25k-40k spans/sec) went from 800ms-1400ms/sec down to <40msec/sec. **Documentation:** none --------- Co-authored-by: Juraci Paixão Kröhling <[email protected]>
- Loading branch information