elastic / logstash

Logstash - transport and process your logs, events, or other data
https://www.elastic.co/products/logstash
Other
106 stars 3.51k forks source link

Introduce performance regression tests for pipeline initialization/compilation #12049

Open jsvd opened 4 years ago

jsvd commented 4 years ago

Pipeline compilation has many moving parts, from generating PipelineIR, to code generation, to code compilation with Janino. Logstash already has tests that show that the execution flow works as expected but we're lacking the oversight on the time pipelines take to start, especially in concurrent situations like multiple pipelines + multiple workers.

roaksoax commented 4 years ago

In https://github.com/elastic/logstash/issues/11175 , we discussed adding a test such as "Add integration harness around the expected compilation time which should be similar between single or multiple workers."

The idea of the test was to hardcode a expected compilation time to identify potential performance regressions. From this we know what the compilation time should be, and by adding this test, we would know for sure that if the compilation time was hired than the expected one, we were having potential performance regressions.

cc/ @colinsurprenant

colinsurprenant commented 4 years ago

Agree we need some better test harness to avoid future regressions in this area which bit us too much already. I am not sure that adding tests using hardcoded/expected timings is the best approach though; experience has shown that such tests will fail as soon as there is fluctuation in the testing environment. I would suggest two possible alternatives: