mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-11-04 09:56:28 +00:00 
			
		
		
		
	Merge #329
329: Run all benchmarks once every friday r=irevoire a=irevoire All the benchmarks run every Friday on the `main` branch. To avoid having pending benchmarks everywhere, we execute one benchmark every 8 hours. Then the results are uploaded as if it was a normal user-run benchmark. This PR closes #314 and #321 Co-authored-by: Irevoire <tamo@meilisearch.com> Co-authored-by: Tamo <tamo@meilisearch.com>
This commit is contained in:
		
							
								
								
									
										8
									
								
								.github/workflows/benchmarks.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/benchmarks.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,7 +9,7 @@ on:
 | 
				
			|||||||
        default: 'search_songs'
 | 
					        default: 'search_songs'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
env:
 | 
					env:
 | 
				
			||||||
  HOME: "/home/runner" # The actions-rs/toolchain@v1 can fail we have no $HOME defined
 | 
					  BENCH_NAME: ${{ github.event.inputs.dataset_name }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  benchmarks:
 | 
					  benchmarks:
 | 
				
			||||||
@@ -38,14 +38,14 @@ jobs:
 | 
				
			|||||||
        id: commit_sha
 | 
					        id: commit_sha
 | 
				
			||||||
      - name: Set file basename with format "dataset_branch_commitSHA"
 | 
					      - name: Set file basename with format "dataset_branch_commitSHA"
 | 
				
			||||||
        shell: bash
 | 
					        shell: bash
 | 
				
			||||||
        run: echo "##[set-output name=basename;]$(echo ${{ github.event.inputs.dataset_name }}_${{ steps.normalized_current_branch.outputs.name }}_${{ steps.commit_sha.outputs.short }})"
 | 
					        run: echo "##[set-output name=basename;]$(echo ${BENCH_NAME}${{ steps.normalized_current_branch.outputs.name }}_${{ steps.commit_sha.outputs.short }})"
 | 
				
			||||||
        id: file
 | 
					        id: file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Run benchmarks
 | 
					      # Run benchmarks
 | 
				
			||||||
      - name: Run benchmarks - Dataset ${{ github.event.inputs.dataset_name }} - Branch ${{ steps.current_branch.outputs.name }} - Commit ${{ steps.commit_sha.outputs.short }}
 | 
					      - name: Run benchmarks - Dataset ${BENCH_NAME} - Branch ${{ steps.current_branch.outputs.name }} - Commit ${{ steps.commit_sha.outputs.short }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          cd benchmarks
 | 
					          cd benchmarks
 | 
				
			||||||
          cargo bench --bench ${{ github.event.inputs.dataset_name }} -- --save-baseline ${{ steps.file.outputs.basename }}
 | 
					          cargo bench --bench ${BENCH_NAME} -- --save-baseline ${{ steps.file.outputs.basename }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Generate critcmp files
 | 
					      # Generate critcmp files
 | 
				
			||||||
      - name: Install critcmp
 | 
					      - name: Install critcmp
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										70
									
								
								.github/workflows/cron_benchmarks_indexing.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/cron_benchmarks_indexing.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					name: Benchmarks indexing (cron)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  schedule:
 | 
				
			||||||
 | 
					    - cron: "30 0 * * FRI" # every friday at 00:30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					env:
 | 
				
			||||||
 | 
					  BENCH_NAME: "indexing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  benchmarks:
 | 
				
			||||||
 | 
					    name: Run and upload benchmarks
 | 
				
			||||||
 | 
					    runs-on: self-hosted
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      - uses: actions-rs/toolchain@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          profile: minimal
 | 
				
			||||||
 | 
					          toolchain: stable
 | 
				
			||||||
 | 
					          override: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Set variables
 | 
				
			||||||
 | 
					      - name: Set current branch name
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=name;]$(echo ${GITHUB_REF#refs/heads/})"
 | 
				
			||||||
 | 
					        id: current_branch
 | 
				
			||||||
 | 
					      - name: Set normalized current branch name # Replace `/` by `_` in branch name to avoid issues when pushing to S3
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=name;]$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')"
 | 
				
			||||||
 | 
					        id: normalized_current_branch
 | 
				
			||||||
 | 
					      - name: Set shorter commit SHA
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=short;]$(echo $GITHUB_SHA | cut -c1-8)"
 | 
				
			||||||
 | 
					        id: commit_sha
 | 
				
			||||||
 | 
					      - name: Set file basename with format "dataset_branch_commitSHA"
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=basename;]$(echo ${BENCH_NAME}${{ steps.normalized_current_branch.outputs.name }}_${{ steps.commit_sha.outputs.short }})"
 | 
				
			||||||
 | 
					        id: file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Run benchmarks
 | 
				
			||||||
 | 
					      - name: Run benchmarks - Dataset ${BENCH_NAME} - Branch ${{ steps.current_branch.outputs.name }} - Commit ${{ steps.commit_sha.outputs.short }}
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          cd benchmarks
 | 
				
			||||||
 | 
					          cargo bench --bench ${BENCH_NAME} -- --save-baseline ${{ steps.file.outputs.basename }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Generate critcmp files
 | 
				
			||||||
 | 
					      - name: Install critcmp
 | 
				
			||||||
 | 
					        run: cargo install critcmp
 | 
				
			||||||
 | 
					      - name: Export cripcmp file
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          critcmp --export ${{ steps.file.outputs.basename }} > ${{ steps.file.outputs.basename }}.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Upload benchmarks
 | 
				
			||||||
 | 
					      - name: Upload ${{ steps.file.outputs.basename }}.json to DO Spaces # DigitalOcean Spaces = S3
 | 
				
			||||||
 | 
					        uses: BetaHuhn/do-spaces-action@v2
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          access_key: ${{ secrets.DO_SPACES_ACCESS_KEY }}
 | 
				
			||||||
 | 
					          secret_key: ${{ secrets.DO_SPACES_SECRET_KEY }}
 | 
				
			||||||
 | 
					          space_name: ${{ secrets.DO_SPACES_SPACE_NAME }}
 | 
				
			||||||
 | 
					          space_region: ${{ secrets.DO_SPACES_SPACE_REGION }}
 | 
				
			||||||
 | 
					          source: ${{ steps.file.outputs.basename }}.json
 | 
				
			||||||
 | 
					          out_dir: critcmp_results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Helper
 | 
				
			||||||
 | 
					      - name: 'README: compare with another benchmark'
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          echo "${{ steps.file.outputs.basename }}.json has just been pushed."
 | 
				
			||||||
 | 
					          echo 'How to compare this benchmark with another one?'
 | 
				
			||||||
 | 
					          echo '  - Check the available files with: ./benchmarks/scripts/list.sh'
 | 
				
			||||||
 | 
					          echo "  - Run the following command: ./benchmaks/scipts/compare.sh <file-to-compare-with> ${{ steps.file.outputs.basename }}.json"
 | 
				
			||||||
							
								
								
									
										70
									
								
								.github/workflows/cron_benchmarks_search_songs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/cron_benchmarks_search_songs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					name: Benchmarks search songs (cron)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  schedule:
 | 
				
			||||||
 | 
					    - cron: "30 08 * * FRI" # every friday at 08:30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					env:
 | 
				
			||||||
 | 
					  BENCH_NAME: "search_songs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  benchmarks:
 | 
				
			||||||
 | 
					    name: Run and upload benchmarks
 | 
				
			||||||
 | 
					    runs-on: self-hosted
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      - uses: actions-rs/toolchain@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          profile: minimal
 | 
				
			||||||
 | 
					          toolchain: stable
 | 
				
			||||||
 | 
					          override: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Set variables
 | 
				
			||||||
 | 
					      - name: Set current branch name
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=name;]$(echo ${GITHUB_REF#refs/heads/})"
 | 
				
			||||||
 | 
					        id: current_branch
 | 
				
			||||||
 | 
					      - name: Set normalized current branch name # Replace `/` by `_` in branch name to avoid issues when pushing to S3
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=name;]$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')"
 | 
				
			||||||
 | 
					        id: normalized_current_branch
 | 
				
			||||||
 | 
					      - name: Set shorter commit SHA
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=short;]$(echo $GITHUB_SHA | cut -c1-8)"
 | 
				
			||||||
 | 
					        id: commit_sha
 | 
				
			||||||
 | 
					      - name: Set file basename with format "dataset_branch_commitSHA"
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=basename;]$(echo ${BENCH_NAME}${{ steps.normalized_current_branch.outputs.name }}_${{ steps.commit_sha.outputs.short }})"
 | 
				
			||||||
 | 
					        id: file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Run benchmarks
 | 
				
			||||||
 | 
					      - name: Run benchmarks - Dataset ${BENCH_NAME} - Branch ${{ steps.current_branch.outputs.name }} - Commit ${{ steps.commit_sha.outputs.short }}
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          cd benchmarks
 | 
				
			||||||
 | 
					          cargo bench --bench ${BENCH_NAME} -- --save-baseline ${{ steps.file.outputs.basename }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Generate critcmp files
 | 
				
			||||||
 | 
					      - name: Install critcmp
 | 
				
			||||||
 | 
					        run: cargo install critcmp
 | 
				
			||||||
 | 
					      - name: Export cripcmp file
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          critcmp --export ${{ steps.file.outputs.basename }} > ${{ steps.file.outputs.basename }}.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Upload benchmarks
 | 
				
			||||||
 | 
					      - name: Upload ${{ steps.file.outputs.basename }}.json to DO Spaces # DigitalOcean Spaces = S3
 | 
				
			||||||
 | 
					        uses: BetaHuhn/do-spaces-action@v2
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          access_key: ${{ secrets.DO_SPACES_ACCESS_KEY }}
 | 
				
			||||||
 | 
					          secret_key: ${{ secrets.DO_SPACES_SECRET_KEY }}
 | 
				
			||||||
 | 
					          space_name: ${{ secrets.DO_SPACES_SPACE_NAME }}
 | 
				
			||||||
 | 
					          space_region: ${{ secrets.DO_SPACES_SPACE_REGION }}
 | 
				
			||||||
 | 
					          source: ${{ steps.file.outputs.basename }}.json
 | 
				
			||||||
 | 
					          out_dir: critcmp_results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Helper
 | 
				
			||||||
 | 
					      - name: 'README: compare with another benchmark'
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          echo "${{ steps.file.outputs.basename }}.json has just been pushed."
 | 
				
			||||||
 | 
					          echo 'How to compare this benchmark with another one?'
 | 
				
			||||||
 | 
					          echo '  - Check the available files with: ./benchmarks/scripts/list.sh'
 | 
				
			||||||
 | 
					          echo "  - Run the following command: ./benchmaks/scipts/compare.sh <file-to-compare-with> ${{ steps.file.outputs.basename }}.json"
 | 
				
			||||||
							
								
								
									
										70
									
								
								.github/workflows/cron_benchmarks_search_wiki.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/cron_benchmarks_search_wiki.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					name: Benchmarks search wikipedia articles (cron)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  schedule:
 | 
				
			||||||
 | 
					    - cron: "30 16 * * FRI" # every friday at 16:30 (it’s snacky snack-time!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					env:
 | 
				
			||||||
 | 
					  BENCH_NAME: "search_wiki"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  benchmarks:
 | 
				
			||||||
 | 
					    name: Run and upload benchmarks
 | 
				
			||||||
 | 
					    runs-on: self-hosted
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      - uses: actions-rs/toolchain@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          profile: minimal
 | 
				
			||||||
 | 
					          toolchain: stable
 | 
				
			||||||
 | 
					          override: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Set variables
 | 
				
			||||||
 | 
					      - name: Set current branch name
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=name;]$(echo ${GITHUB_REF#refs/heads/})"
 | 
				
			||||||
 | 
					        id: current_branch
 | 
				
			||||||
 | 
					      - name: Set normalized current branch name # Replace `/` by `_` in branch name to avoid issues when pushing to S3
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=name;]$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')"
 | 
				
			||||||
 | 
					        id: normalized_current_branch
 | 
				
			||||||
 | 
					      - name: Set shorter commit SHA
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=short;]$(echo $GITHUB_SHA | cut -c1-8)"
 | 
				
			||||||
 | 
					        id: commit_sha
 | 
				
			||||||
 | 
					      - name: Set file basename with format "dataset_branch_commitSHA"
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					        run: echo "##[set-output name=basename;]$(echo ${BENCH_NAME}${{ steps.normalized_current_branch.outputs.name }}_${{ steps.commit_sha.outputs.short }})"
 | 
				
			||||||
 | 
					        id: file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Run benchmarks
 | 
				
			||||||
 | 
					      - name: Run benchmarks - Dataset ${BENCH_NAME} - Branch ${{ steps.current_branch.outputs.name }} - Commit ${{ steps.commit_sha.outputs.short }}
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          cd benchmarks
 | 
				
			||||||
 | 
					          cargo bench --bench ${BENCH_NAME} -- --save-baseline ${{ steps.file.outputs.basename }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Generate critcmp files
 | 
				
			||||||
 | 
					      - name: Install critcmp
 | 
				
			||||||
 | 
					        run: cargo install critcmp
 | 
				
			||||||
 | 
					      - name: Export cripcmp file
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          critcmp --export ${{ steps.file.outputs.basename }} > ${{ steps.file.outputs.basename }}.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Upload benchmarks
 | 
				
			||||||
 | 
					      - name: Upload ${{ steps.file.outputs.basename }}.json to DO Spaces # DigitalOcean Spaces = S3
 | 
				
			||||||
 | 
					        uses: BetaHuhn/do-spaces-action@v2
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          access_key: ${{ secrets.DO_SPACES_ACCESS_KEY }}
 | 
				
			||||||
 | 
					          secret_key: ${{ secrets.DO_SPACES_SECRET_KEY }}
 | 
				
			||||||
 | 
					          space_name: ${{ secrets.DO_SPACES_SPACE_NAME }}
 | 
				
			||||||
 | 
					          space_region: ${{ secrets.DO_SPACES_SPACE_REGION }}
 | 
				
			||||||
 | 
					          source: ${{ steps.file.outputs.basename }}.json
 | 
				
			||||||
 | 
					          out_dir: critcmp_results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Helper
 | 
				
			||||||
 | 
					      - name: 'README: compare with another benchmark'
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          echo "${{ steps.file.outputs.basename }}.json has just been pushed."
 | 
				
			||||||
 | 
					          echo 'How to compare this benchmark with another one?'
 | 
				
			||||||
 | 
					          echo '  - Check the available files with: ./benchmarks/scripts/list.sh'
 | 
				
			||||||
 | 
					          echo "  - Run the following command: ./benchmaks/scipts/compare.sh <file-to-compare-with> ${{ steps.file.outputs.basename }}.json"
 | 
				
			||||||
		Reference in New Issue
	
	Block a user