Run gpt test suite against Ruby 3.3
As we did for Ruby 3.0 Run gpt test suite against Ruby 3 (#340294 - closed) and 3.1 #427702 (closed) we should run a test to check for any performance issues with Ruby 3.3
Prerequisite
MR against GitLab project with Ruby 3.3 and Omnibus package built in the MR.
Steps (copied from Ruby 3.2 issue so may need updated)
-
Build 10k environment using image MR above and GET -
Copy 10k configuration example under a new folder, run symlink -
Update configs to use your test GCP project. For example, using sandbox project. -
Create token on GitLab.com, it will be passed to Ansible command later to download custom GitLab package from MR -
If target package is Jammy, add machine_image = "ubuntu-2204-lts"to enviroment.tf to switch to 22.04 (GET installs 20.04 by default) -
Add gitlab_deb_download_urlandgitlab_deb_download_url_headersfor vars.yaml to switch GET using custom Omnibus package from MR - https://gitlab.com/gitlab-org/gitlab-environment-toolkit/-/blob/main/docs/environment_configure.md#gitlab-omnibus-installation-options - example how it can look like:- gitlab_deb_download_url: "{{ lookup('env','GITLAB_UBUNTU_IMAGE') | default('https://gitlab.com/api/v4/projects/14588374/jobs/5259591132/artifacts/pkg/ubuntu-jammy/gitlab.deb', true)}}" # update to use latest image url gitlab_deb_download_url_headers: { 'PRIVATE-TOKEN': "{{ lookup('env','PRIVATE_PROD_TOKEN')}}" } # use your .com token
-
Build env following GET docs
-
-
Check that Ruby version is new on Rails node - should be 3.3 -
Ensure required rate limits are disabled - for GPT testing, custom Post Configure task is used https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit-configs/quality/-/blob/main/custom_task_files/gitlab_tasks/post_configure.yml#L1-35 applies it automatically (see https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit-configs/quality/-/blob/main/configs/reference_architectures/10k/ansible/inventory/vars.yml#L24-40 and https://gitlab.com/gitlab-org/gitlab-environment-toolkit/-/blob/main/docs/environment_advanced.md#custom-tasks. -
Provision test VM in the same region zone as 10k env => to trigger seed and performance testing against env from it to reduce latency -
Seed with performance data - https://gitlab.com/gitlab-org/quality/performance/-/blob/main/docs/environment_prep.md -
Horizontal Data -
Vertical Large Project Data
-
-
Run GPT from test VM - https://gitlab.com/gitlab-org/quality/performance/-/blob/main/docs/k6.md. Explore using screento trigger commands to ensure that command won't interrupt if your internet connection is unstable.-
Running against 10k environment so using 60s_200rps.json
-
-
Analyse results, compare it to https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/10k -
Export Server performance metrics from Grafana, share link in the issue -
Destroy env and test VM
Results
- We stood up a 10k environment and ran tests and compared against the Reference Architecture 10k runs as well as against a basically identical environment (but with Ruby 3.2 instead of Ruby 3.3).
- The details of the results are in the spreadsheet: https://docs.google.com/spreadsheets/d/1L9orxqEgvZv2AHO9EAIOVepr1K6UjV5EYP0eZKg8s80/edit?usp=sharing
- The results of comparing the Ruby 3.2 and Ruby 3.3 runs are: #516194 (comment 2761142041)
The performance of Ruby 3.3 is generally comparable to Ruby 3.2, with only a few endpoints showing degraded performance (api_v4_users, web_user, api_v4_groups_group, web_project_file_rendered). The overall test score is slightly better for Ruby 3.3 (88.81% vs 88.75%). Memory utilization was slightly higher for Ruby 3.3 but showed similar patterns during testing.
Based on these results, upgrading to Ruby 3.3 appears to maintain acceptable performance levels for GitLab's 10k reference architecture.
We also created a runbook with the steps done in this pass to ease future iteration.