diff --git a/.buildkite/pipelines/periodic-micro-benchmarks.yml b/.buildkite/pipelines/periodic-micro-benchmarks.yml new file mode 100644 index 000000000000..102fa2483b7b --- /dev/null +++ b/.buildkite/pipelines/periodic-micro-benchmarks.yml @@ -0,0 +1,10 @@ +steps: + - label: periodic-micro-benchmarks + command: | + .ci/scripts/run-gradle.sh -p benchmarks/ run --args 'org.elasticsearch.benchmark._nightly -rf json -rff build/result.json' + timeout_in_minutes: 300 + agents: + provider: gcp + image: family/elasticsearch-ubuntu-2004 + machineType: custom-32-98304 + buildDirectory: /dev/shm/bk diff --git a/benchmarks/src/main/java/org/elasticsearch/benchmark/esql/QueryPlanningBenchmark.java b/benchmarks/src/main/java/org/elasticsearch/benchmark/_nightly/esql/QueryPlanningBenchmark.java similarity index 88% rename from benchmarks/src/main/java/org/elasticsearch/benchmark/esql/QueryPlanningBenchmark.java rename to benchmarks/src/main/java/org/elasticsearch/benchmark/_nightly/esql/QueryPlanningBenchmark.java index 6ed1294e1629..d2811962dd29 100644 --- a/benchmarks/src/main/java/org/elasticsearch/benchmark/esql/QueryPlanningBenchmark.java +++ b/benchmarks/src/main/java/org/elasticsearch/benchmark/_nightly/esql/QueryPlanningBenchmark.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.benchmark.esql; +package org.elasticsearch.benchmark._nightly.esql; import org.elasticsearch.common.logging.LogConfigurator; import org.elasticsearch.common.settings.Settings; @@ -67,9 +67,9 @@ public class QueryPlanningBenchmark { } private PlanTelemetry telemetry; - private EsqlParser parser; - private Analyzer analyzer; - private LogicalPlanOptimizer optimizer; + private EsqlParser defaultParser; + private Analyzer manyFieldsAnalyzer; + private LogicalPlanOptimizer defaultOptimizer; @Setup public void setup() { @@ -100,8 +100,8 @@ public class QueryPlanningBenchmark { var functionRegistry = new EsqlFunctionRegistry(); telemetry = new PlanTelemetry(functionRegistry); - parser = new EsqlParser(); - analyzer = new Analyzer( + defaultParser = new EsqlParser(); + manyFieldsAnalyzer = new Analyzer( new AnalyzerContext( config, functionRegistry, @@ -112,10 +112,10 @@ public class QueryPlanningBenchmark { ), new Verifier(new Metrics(functionRegistry), new XPackLicenseState(() -> 0L)) ); - optimizer = new LogicalPlanOptimizer(new LogicalOptimizerContext(config, FoldContext.small())); + defaultOptimizer = new LogicalPlanOptimizer(new LogicalOptimizerContext(config, FoldContext.small())); } - private LogicalPlan plan(String query) { + private LogicalPlan plan(EsqlParser parser, Analyzer analyzer, LogicalPlanOptimizer optimizer, String query) { var parsed = parser.createStatement(query, new QueryParams(), telemetry); var analyzed = analyzer.analyze(parsed); var optimized = optimizer.optimize(analyzed); @@ -124,6 +124,6 @@ public class QueryPlanningBenchmark { @Benchmark public void manyFields(Blackhole blackhole) { - blackhole.consume(plan("FROM test | LIMIT 10")); + blackhole.consume(plan(defaultParser, manyFieldsAnalyzer, defaultOptimizer, "FROM test | LIMIT 10")); } } diff --git a/catalog-info.yaml b/catalog-info.yaml index b001eee61e69..0768e1670666 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -263,3 +263,41 @@ spec: Daily: branch: main cronline: "0 12 * * * America/New_York" +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-elasticsearch-periodic-micro-benchmarks + description: Runs periodic micro benchmarks fom the main branch + links: + - title: Pipeline + url: https://buildkite.com/elastic/elasticsearch-periodic-micro-benchmarks +spec: + type: buildkite-pipeline + system: buildkite + owner: group:elasticsearch-team + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + description: ":elasticsearch: Runs nightly micro benchmarks fom the main branch" + name: elasticsearch / periodic / micro-benchmarks + spec: + repository: elastic/elasticsearch + pipeline_file: .buildkite/pipelines/periodic-micro-benchmarks.yml + branch_configuration: main + teams: + elasticsearch-team: {} + ml-core: {} + everyone: + access_level: BUILD_AND_READ + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + trigger_mode: none + schedules: + Daily: + branch: main + cronline: "@daily"