Tracez Backend Benchmarking#19
Conversation
liadavid
left a comment
There was a problem hiding this comment.
Overall looks good, added few comments.
|
Nice job solving the periodic update problem using friend classes! |
kmanghat
left a comment
There was a problem hiding this comment.
I think we should also test the performance for sparse vs dense spans, I think the amount of information in a span would affect the performance.
|
|
||
| /* | ||
| * Aggregator handing many spans with the same name, who end instantly. This | ||
| * checks the scenario where there's only one Tracez name and minimal sorting |
There was a problem hiding this comment.
Could you explain what you mean by sorting of latencies?
There was a problem hiding this comment.
i reclarified in the docstring, and it's supposed to be explaining the aggregator performance may be affected by needing to have computer whether a span is in error, running, and latency (including within bands)
There was a problem hiding this comment.
Why do you say that the aggregator performance might be affected by needing to compute the type of span? Running spans are received in a separate container altogether and distinguishing between error and latency span is done with a single if statement. Are you seeing a significant variance in performance when you test with the same number of running, completed and error spans? I am just curious and I am sure you understand these tests better so feel free to push this through.
There was a problem hiding this comment.
thanks for pointing that out! yes there's that minimal effect, and there's also memory considerations which i forgot to mention. all 11 buckets filled for each span name means there's more overhead compared to only 1 latency bucket
There was a problem hiding this comment.
Thanks for the clarification, I forgot the tests measured memory as well.
… in Records For Prometheus (open-telemetry#298)
Code for benchmarking backend components that are used in Tracez. Friend classes are used to access private functions and/or modify parts of the benchmarked classes, reducing noise in the tests. Data aggregator periodically updates are stopped, and we do benchmarking with and without a different background thread to call
GetAggregatedTracezData.Processor results:
Aggregator results:
Related Links: