version: 0.2

remote:
 - type: oss-standalone
 - setup: redisearch-m7

exporter:
  redistimeseries:
    break_by:
      - version
      - commit
    timemetric: "$.StartTime"
    metrics:
      - "$.Tests.Overall.rps"
      - "$.Tests.Overall.avg_latency_ms"
      - "$.Tests.Overall.p50_latency_ms"
      - "$.Tests.Overall.p95_latency_ms"
      - "$.Tests.Overall.p99_latency_ms"
      - "$.Tests.Overall.max_latency_ms"
      - "$.Tests.Overall.min_latency_ms"
      - "$.build.build_time"
      - "$.build.vector_index_sz_mb"
      - '$."ALL STATS".*."Ops/sec"'
      - '$."ALL STATS".*."Latency"'
      - "$.OverallRates.overallOpsRate"
      - "$.OverallQuantiles.allCommands.q50"
      - "$.OverallQuantiles.allCommands.q95"
      - "$.OverallQuantiles.allCommands.q99"
      - "$.OverallQuantiles.allCommands.q999"
  comparison:
    metrics:
      - "Ops/sec"
      - "$.Tests.Overall.rps"
      - "$.OverallRates.overallOpsRate"
    mode: higher-better
    baseline-branch: master
clusterconfig:
  - init_commands:
    - 'search.CLUSTERREFRESH'
spec:
  setups:
  - name: oss-standalone
    type: oss-standalone
    redis_topology:
      primaries: 1
      replicas: 0
    resources:
      requests:
        cpus: "1"
        memory: "25g"

  - name: oss-standalone-threads-6
    type: oss-standalone
    redis_topology:
      primaries: 1
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "7"
        memory: "25g"
    dbconfig:
      module-configuration-parameters:
        redisearch:
          WORKERS: 6
          MIN_OPERATION_WORKERS: 6
        module-oss:
          WORKERS: 6
          MIN_OPERATION_WORKERS: 6

  - name: oss-standalone-1replica
    type: oss-standalone
    redis_topology:
      primaries: 1
      replicas: 1
      placement: "sparse"
    resources:
      requests:
        cpus: "2"
        memory: "10g"

  - name: oss-cluster-01-primaries
    type: oss-cluster
    redis_topology:
      primaries: 1
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "1"
        memory: "10g"

  - name: oss-cluster-02-primaries
    type: oss-cluster
    redis_topology:
      primaries: 2
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "2"
        memory: "10g"

  - name: oss-cluster-03-primaries
    type: oss-cluster
    redis_topology:
      primaries: 3
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "3"
        memory: "30g"

  - name: oss-cluster-04-primaries-threads-6
    type: oss-cluster
    redis_topology:
      primaries: 4
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "28" # 4 * 7 (4 primaries x 7 threads (main thread + 6 workers))
        memory: "40g"
    dbconfig:
      module-configuration-parameters:
        redisearch:
          WORKERS: 6
          MIN_OPERATION_WORKERS: 6
        module-oss:
          WORKERS: 6
          MIN_OPERATION_WORKERS: 6

  - name: oss-cluster-04-primaries
    type: oss-cluster
    redis_topology:
      primaries: 4
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "24"
        memory: "40g"

  - name: oss-cluster-05-primaries
    type: oss-cluster
    redis_topology:
      primaries: 5
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "5"
        memory: "50g"

  - name: oss-cluster-08-primaries
    type: oss-cluster
    redis_topology:
      primaries: 8
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "10"
        memory: "90g"

  - name: oss-cluster-09-primaries
    type: oss-cluster
    redis_topology:
      primaries: 9
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "10"
        memory: "90g"

  - name: oss-cluster-15-primaries
    type: oss-cluster
    redis_topology:
      primaries: 15
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "15"
        memory: "150g"

  - name: oss-cluster-16-primaries
    type: oss-cluster
    redis_topology:
      primaries: 16
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "18"
        memory: "180g"

  - name: oss-cluster-20-primaries
    type: oss-cluster
    redis_topology:
      primaries: 20
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "20"
        memory: "500g"

  - name: oss-cluster-21-primaries
    type: oss-cluster
    redis_topology:
      primaries: 21
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "21"
        memory: "210g"

  - name: oss-cluster-24-primaries
    type: oss-cluster
    redis_topology:
      primaries: 24
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "24"
        memory: "500g"

  - name: oss-cluster-30-primaries
    type: oss-cluster
    redis_topology:
      primaries: 30
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "30"
        memory: "300g"

  - name: oss-cluster-32-primaries
    type: oss-cluster
    redis_topology:
      primaries: 32
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "32"
        memory: "300g"

  - name: oss-cluster-08-primaries-250gb-threads-8
    type: oss-cluster
    redis_topology:
      primaries: 8
      replicas: 0
      placement: "sparse"
    resources:
      requests:
        cpus: "72" # 8 * 9 (8 primaries x 9 threads (main thread + 8 workers))
        memory: "250g"
    dbconfig:
      module-configuration-parameters:
        redisearch:
          WORKERS: 8
          MIN_OPERATION_WORKERS: 8
        module-oss:
          WORKERS: 8
          MIN_OPERATION_WORKERS: 8
