Experiment with new private runner machine types for gitlab-org/gitlab pipeline => 100%

This issue is only for tracking purpose of gitlab-com/www-gitlab-com#10623 (closed) (for this board: https://gitlab.com/groups/gitlab-org/-/boards/978615?label_name[]=Engineering%20Productivity).

Preliminary work

  1. Set up auto-scale runner managers:
  2. Testing MRs:
  3. Ensuring caches are refreshed: https://gitlab.com/gitlab-org/gitlab/-/pipelines/265516050
  4. Then both MRs are set to Draft so that pipelines run for non-Merged results so that gems/packages don't change and cache can be fully used equally by all pipelines.
  5. Create a script to automate the analysis: gitlab-org/quality/toolbox!69 (merged)

Prices per month - https://cloud.google.com/compute/vm-instance-pricing

N1 standard machine types (General-purpose machine type family) (current GitLab shared runners)

Machine type Virtual CPUs Memory Price (USD) Preemptible price (USD) 1-year CUD 3-year CUD
n1-standard-2 2 7.5GB $48.54 $14.60 $43.61 $31.185
n1-standard-4 4 15GB $97.09 $29.2 $87.22 $62.37

E2 standard machine types (General-purpose machine type family)

Machine type Virtual CPUs Memory Price (USD) Preemptible price (USD) 1-year CUD 3-year CUD
e2-standard-2 2 8GB $48.91 $14.67 $30.78 $22
e2-standard-4 4 16GB $97.83 $29.35 $61.56 $44

N2 machine types

Machine type Virtual CPUs Memory Price (USD) Preemptible price (USD) 1-year CUD 3-year CUD
n2-standard-2 2 8 $56.72 $17.18 $44.68 $31.88
n2-standard-4 4 16 $113.43 $34.37 $89.36 $63.76

N2D machine types

Machine type Virtual CPUs Memory Price (USD) Preemptible price (USD) 1-year CUD 3-year CUD
n2d-standard-2 2 8 $49.34 $14.93 $38.9 $27.74
n2d-standard-4 4 16 $98.69 $29.85 $77.8 $55.48
n2d-highcpu-2 2 2 $36.43 $11.02 $28.7 $20.48
n2d-highcpu-4 4 4 $72.86 $22.04 $57.4 $40.96

C2 machine types

Machine type Virtual CPUs Memory Price (USD) Preemptible price (USD) 1-year CUD 3-year CUD
c2-standard-4 4 16 $121.9392 $36.8650 $96.03 $60.94

Automated analysis

Machine type results (based on raw durations regardless of price difference)

  1. c2-standard-4 (best on 44 jobs, worst on 0 jobs) 🏆
  2. n2d-standard-4 (best on 10 jobs, worst on 0 jobs)
  3. n2-standard-4 (best on 9 jobs, worst on 0 jobs)
  4. n2-standard-2 (best on 4 jobs, worst on 0 jobs)
  5. n2d-standard-2 (best on 1 jobs, worst on 0 jobs)
  6. n1-standard-4 (best on 1 jobs, worst on 1 jobs)
  7. e2-standard-2 (best on 0 jobs, worst on 7 jobs)
  8. e2-standard-4 (best on 0 jobs, worst on 5 jobs)
  9. n1-standard-2 (best on 0 jobs, worst on 56 jobs) 🐢

With no surprise the c2-standard-4 machine type is the best here since it allows for more multi-threading.

Machine type results with timings pro-rated with price coefficient compared to the n1-standard-2 un-discounted price

  1. n2d-standard-2 (best on 55 jobs, worst on 0 jobs) 🏆
  2. n2-standard-2 (best on 7 jobs, worst on 0 jobs)
  3. n2d-standard-4 (best on 6 jobs, worst on 0 jobs)
  4. e2-standard-2 (best on 1 jobs, worst on 0 jobs)
  5. n2-standard-4 (best on 0 jobs, worst on 3 jobs)
  6. n1-standard-4 (best on 0 jobs, worst on 3 jobs)
  7. c2-standard-4 (best on 0 jobs, worst on 14 jobs)
  8. e2-standard-4 (best on 0 jobs, worst on 41 jobs) 🐢
  9. n1-standard-2 (best on 0 jobs, worst on 8 jobs)

With no price discount, n2d-standard-2 machine type is the best.

Machine type results with timings pro-rated with price coefficient compared to the n1-standard-2 1-year CUD price

  1. e2-standard-2 (best on 33 jobs, worst on 0 jobs) 🏆
  2. n2d-standard-2 (best on 27 jobs, worst on 0 jobs)
  3. n2d-standard-4 (best on 5 jobs, worst on 1 jobs)
  4. n2-standard-2 (best on 4 jobs, worst on 0 jobs)
  5. n2-standard-4 (best on 0 jobs, worst on 2 jobs)
  6. e2-standard-4 (best on 0 jobs, worst on 1 jobs)
  7. c2-standard-4 (best on 0 jobs, worst on 7 jobs)
  8. n1-standard-4 (best on 0 jobs, worst on 49 jobs) 🐢
  9. n1-standard-2 (best on 0 jobs, worst on 9 jobs)

With a 1-year CUD price discount, e2-standard-2 machine type is the best, followed by the n2d-standard-2 machine type.

Machine type results with timings pro-rated with price coefficient compared to the n1-standard-2 3-year CUD price

  1. e2-standard-2 (best on 31 jobs, worst on 0 jobs) 🏆
  2. n2d-standard-2 (best on 29 jobs, worst on 0 jobs)
  3. n2d-standard-4 (best on 5 jobs, worst on 1 jobs)
  4. n2-standard-2 (best on 4 jobs, worst on 0 jobs)
  5. e2-standard-4 (best on 0 jobs, worst on 1 jobs)
  6. n2-standard-4 (best on 0 jobs, worst on 3 jobs)
  7. n1-standard-4 (best on 0 jobs, worst on 55 jobs) 🐢
  8. n1-standard-2 (best on 0 jobs, worst on 9 jobs)

With a 3-year CUD price discount, e2-standard-2 machine type is the best, followed closely by the n2d-standard-2 machine type.

Comparing exclusively e2-standard-2, and n2d-standard-2 (based on raw durations regardless of price difference)

  1. n2d-standard-2 (best on 66 jobs, worst on 3 jobs) 🏆
  2. e2-standard-2 (best on 3 jobs, worst on 66 jobs) 🐢

Comparing exclusively e2-standard-2, and n2d-standard-2 with timings pro-rated with price coefficient compared to the n1-standard-2 un-discounted price

  1. n2d-standard-2 (best on 66 jobs, worst on 3 jobs) 🏆
  2. e2-standard-2 (best on 3 jobs, worst on 66 jobs) 🐢

Comparing exclusively e2-standard-2, and n2d-standard-2 with timings pro-rated with price coefficient compared to the n1-standard-2 1-year CUD price

  1. e2-standard-2 (best on 41 jobs, worst on 28 jobs) 🏆
  2. n2d-standard-2 (best on 28 jobs, worst on 41 jobs) 🐢

Comparing exclusively e2-standard-2, and n2d-standard-2 with timings pro-rated with price coefficient compared to the n1-standard-2 3-year CUD price

  1. e2-standard-2 (best on 39 jobs, worst on 30 jobs) 🏆
  2. n2d-standard-2 (best on 30 jobs, worst on 39 jobs) 🐢
Details per job
brakeman-sast e2-standard-2 🐢 n2d-standard-2 🏆
avg 326.61440000000005 🐢 286.337 🏆
p50 313.933 🐢 285.999 🏆
p80 345.7472 🐢 292.06419999999997 🏆
p90 354.4496 🐢 292.4326 🏆
p95 358.8008 🐢 292.6168 🏆
min 306.301 🐢 278.896 🏆
max 363.152 🐢 292.801 🏆
build-assets-image e2-standard-2 🐢 n2d-standard-2 🏆
avg 96.61240000000001 🐢 66.108 🏆
p50 100.594 🐢 64.75 🏆
p80 100.7502 🐢 68.5532 🏆
p90 100.7506 🐢 70.3076 🏆
p95 100.7508 🐢 71.1848 🏆
min 85.908 🐢 62.832 🏆
max 100.751 🐢 72.062 🏆
build-qa-image e2-standard-2 🐢 n2d-standard-2 🏆
avg 115.1946 🐢 95.89200000000001 🏆
p50 117.509 🐢 94.614 🏆
p80 117.9986 🐢 98.0836 🏆
p90 118.8178 🐢 99.4208 🏆
p95 119.2274 🐢 100.0894 🏆
min 108.603 🐢 93.206 🏆
max 119.637 🐢 100.758 🏆
compile-production-assets e2-standard-2 🐢 n2d-standard-2 🏆
avg 405.9742 🐢 329.6418 🏆
p50 428.206 🐢 363.398 🏆
p80 434.6966 🐢 371.3732 🏆
p90 442.9638 🐢 372.2396 🏆
p95 447.0974 🐢 372.6728 🏆
min 312.289 🐢 255.177 🏆
max 451.231 🐢 373.106 🏆
compile-test-assets e2-standard-2 🐢 n2d-standard-2 🏆
avg 361.7408 🐢 335.7426 🏆
p50 378.505 🐢 334.445 🏆
p80 382.49219999999997 🐢 338.59459999999996 🏆
p90 384.2926 🐢 345.01779999999997 🏆
p95 385.19280000000003 🐢 348.2294 🏆
min 299.025 🏆 328.471 🐢
max 386.093 🐢 351.441 🏆
compile-test-assets as-if-foss e2-standard-2 🐢 n2d-standard-2 🏆
avg 442.1402 🐢 369.7812 🏆
p50 461.109 🐢 385.876 🏆
p80 463.26160000000004 🐢 395.8162 🏆
p90 465.25280000000004 🐢 398.8966 🏆
p95 466.2484 🐢 400.4368 🏆
min 372.782 🐢 283.534 🏆
max 467.244 🐢 401.977 🏆
coverage-frontend e2-standard-2 🏆 n2d-standard-2 🐢
avg 85.7868 🏆 86.5524 🐢
p50 85.774 🐢 85.549 🏆
p80 86.6388 🏆 90.0228 🐢
p90 86.6564 🏆 94.5944 🐢
p95 86.6652 🏆 96.8802 🐢
min 84.68 🐢 78.18 🏆
max 86.674 🏆 99.166 🐢
danger-review e2-standard-2 🐢 n2d-standard-2 🏆
avg 233.7162 🐢 211.22199999999998 🏆
p50 224.54 🐢 209.758 🏆
p80 248.3654 🐢 213.57680000000002 🏆
p90 249.8902 🐢 214.6784 🏆
p95 250.6526 🐢 215.2292 🏆
min 220.56 🐢 208.429 🏆
max 251.415 🐢 215.78 🏆
db:check-schema e2-standard-2 🐢 n2d-standard-2 🏆
avg 247.75680000000003 🐢 172.5972 🏆
p50 275.907 🐢 130.721 🏆
p80 278.916 🐢 263.638 🏆
p90 279.41200000000003 🐢 264.326 🏆
p95 279.66 🐢 264.67 🏆
min 135.256 🐢 100.572 🏆
max 279.908 🐢 265.014 🏆
dependency_scanning bundler-audit e2-standard-2 🐢 n2d-standard-2 🏆
avg 49.8096 🐢 42.4112 🏆
p50 50.208 🐢 37.752 🏆
p80 50.5532 🐢 44.120000000000005 🏆
p90 50.8836 🏆 53.42799999999999 🐢
p95 51.0488 🏆 58.081999999999994 🐢
min 48.559 🐢 36.027 🏆
max 51.214 🏆 62.736 🐢
dependency_scanning gemnasium e2-standard-2 🐢 n2d-standard-2 🏆
avg 357.9036 🐢 326.746 🏆
p50 357.558 🐢 327.089 🏆
p80 358.6776 🐢 330.81419999999997 🏆
p90 359.8048 🐢 330.9266 🏆
p95 360.3684 🐢 330.9828 🏆
min 355.722 🐢 320.843 🏆
max 360.932 🐢 331.039 🏆
dependency_scanning gemnasium-python e2-standard-2 🐢 n2d-standard-2 🏆
avg 59.051199999999994 🐢 49.0622 🏆
p50 57.875 🐢 49.207 🏆
p80 63.1468 🐢 49.7826 🏆
p90 63.672399999999996 🐢 50.6458 🏆
p95 63.935199999999995 🐢 51.0774 🏆
min 53.98 🐢 46.429 🏆
max 64.198 🐢 51.509 🏆
dependency_scanning retire-js e2-standard-2 🐢 n2d-standard-2 🏆
avg 233.12040000000002 🐢 201.1832 🏆
p50 231.942 🐢 200.464 🏆
p80 238.43439999999998 🐢 203.483 🏆
p90 243.8652 🐢 204.797 🏆
p95 246.5806 🐢 205.45399999999998 🏆
min 223.083 🐢 197.631 🏆
max 249.296 🐢 206.111 🏆
detect-tests e2-standard-2 🏆 n2d-standard-2 🐢
avg 126.502 🏆 146.8692 🐢
p50 144.269 🏆 166.235 🐢
p80 146.47719999999998 🏆 173.1258 🐢
p90 147.0076 🏆 180.79739999999998 🐢
p95 147.27280000000002 🏆 184.6332 🐢
min 95.866 🐢 93.116 🏆
max 147.538 🏆 188.469 🐢
detect-tests as-if-foss e2-standard-2 🏆 n2d-standard-2 🐢
avg 115.89020000000001 🏆 148.7566 🐢
p50 103.394 🏆 165.865 🐢
p80 138.88 🏆 170.81099999999998 🐢
p90 143.47 🏆 174.069 🐢
p95 145.765 🏆 175.698 🐢
min 93.713 🐢 92.342 🏆
max 148.06 🏆 177.327 🐢
dont-interrupt-me e2-standard-2 🐢 n2d-standard-2 🏆
avg 11.505500000000001 🐢 10.472 🏆
p50 11.567 🐢 9.965 🏆
p80 12.138200000000001 🐢 11.517199999999999 🏆
p90 12.5516 🐢 12.0346 🏆
p95 12.758299999999998 🐢 12.293299999999999 🏆
min 9.923 🐢 8.899 🏆
max 12.965 🐢 12.552 🏆
downtime_check e2-standard-2 🐢 n2d-standard-2 🏆
avg 173.5504 🐢 164.785 🏆
p50 222.662 🐢 215.772 🏆
p80 223.7804 🐢 216.92919999999998 🏆
p90 224.4512 🐢 217.0536 🏆
p95 224.78660000000002 🐢 217.1158 🏆
min 94.795 🐢 86.382 🏆
max 225.122 🐢 217.178 🏆
eslint-sast e2-standard-2 🐢 n2d-standard-2 🏆
avg 100.5392 🐢 74.00319999999999 🏆
p50 98.656 🐢 74.28 🏆
p80 104.6198 🐢 74.73599999999999 🏆
p90 105.68939999999999 🐢 75.056 🏆
p95 106.2242 🐢 75.21600000000001 🏆
min 94.956 🐢 72.437 🏆
max 106.759 🐢 75.376 🏆
gitlab_git_test e2-standard-2 🐢 n2d-standard-2 🏆
avg 110.16159999999999 🐢 87.04719999999999 🏆
p50 128.762 🐢 93.188 🏆
p80 129.4556 🐢 103.8264 🏆
p90 129.98080000000002 🐢 115.6792 🏆
p95 130.2434 🐢 121.6056 🏆
min 40.738 🐢 27.427 🏆
max 130.506 🐢 127.532 🏆
graphql-schema-dump e2-standard-2 🐢 n2d-standard-2 🏆
avg 176.946 🐢 163.9918 🏆
p50 225.181 🐢 216.823 🏆
p80 226.19480000000001 🐢 218.09879999999998 🏆
p90 226.2464 🐢 219.0404 🏆
p95 226.2722 🐢 219.5112 🏆
min 97.047 🐢 81.459 🏆
max 226.298 🐢 219.982 🏆
graphql-verify e2-standard-2 🐢 n2d-standard-2 🏆
avg 228.18179999999998 🐢 180.3656 🏆
p50 234.873 🐢 211.999 🏆
p80 238.698 🐢 225.423 🏆
p90 241.782 🐢 225.525 🏆
p95 243.324 🐢 225.57600000000002 🏆
min 207.418 🐢 93.168 🏆
max 244.866 🐢 225.627 🏆
jest e2-standard-2 🐢 n2d-standard-2 🏆
avg 968.5337499999998 🐢 699.9722 🏆
p50 970.392 🐢 677.5060000000001 🏆
p80 982.514 🐢 760.4380000000001 🏆
p90 995.6191 🐢 785.9311 🏆
p95 1041.01235 🐢 792.61325 🏆
min 843.147 🐢 636.151 🏆
max 1079.247 🐢 795.24 🏆
jest-as-if-foss e2-standard-2 🐢 n2d-standard-2 🏆
avg 996.2839 🐢 670.6241 🏆
p50 983.9745 🐢 664.3789999999999 🏆
p80 1012.1858 🐢 686.3484 🏆
p90 1054.2455 🐢 703.9135 🏆
p95 1066.99175 🐢 706.30525 🏆
min 964.639 🐢 644.171 🏆
max 1079.738 🐢 708.697 🏆
jest-integration e2-standard-2 🐢 n2d-standard-2 🏆
avg 233.19340000000003 🐢 146.3752 🏆
p50 254.958 🐢 130.886 🏆
p80 258.7068 🐢 155.24080000000004 🏆
p90 263.7884 🐢 200.71839999999997 🏆
p95 266.3292 🐢 223.4572 🏆
min 138.392 🐢 104.471 🏆
max 268.87 🐢 246.196 🏆
karma e2-standard-2 🐢 n2d-standard-2 🏆
avg 171.3346 🐢 91.4006 🏆
p50 217.331 🐢 94.203 🏆
p80 228.0524 🐢 96.071 🏆
p90 228.8132 🐢 96.48899999999999 🏆
p95 229.1936 🐢 96.698 🏆
min 90.129 🐢 81.204 🏆
max 229.574 🐢 96.907 🏆
karma-as-if-foss e2-standard-2 🐢 n2d-standard-2 🏆
avg 209.3424 🐢 83.1468 🏆
p50 203.204 🐢 81.123 🏆
p80 223.0464 🐢 89.30760000000001 🏆
p90 223.6752 🐢 89.5468 🏆
p95 223.9896 🐢 89.6664 🏆
min 197.693 🐢 75.07 🏆
max 224.304 🐢 89.786 🏆
license_scanning e2-standard-2 🐢 n2d-standard-2 🏆
avg 755.5813999999999 🐢 583.1214 🏆
p50 745.188 🐢 580.419 🏆
p80 757.2346 🐢 587.9272000000001 🏆
p90 780.8038 🐢 590.2376 🏆
p95 792.5884000000001 🐢 591.3928 🏆
min 739.583 🐢 576.075 🏆
max 804.373 🐢 592.548 🏆
lint-yaml e2-standard-2 🐢 n2d-standard-2 🏆
avg 40.5122 🐢 31.4296 🏆
p50 37.776 🐢 31.915 🏆
p80 45.2438 🐢 32.535199999999996 🏆
p90 46.151399999999995 🐢 32.5856 🏆
p95 46.605199999999996 🐢 32.610800000000005 🏆
min 36.266 🐢 29.637 🏆
max 47.059 🐢 32.636 🏆
memory-on-boot e2-standard-2 🐢 n2d-standard-2 🏆
avg 371.7934000000001 🐢 304.7928 🏆
p50 379.514 🐢 335.036 🏆
p80 380.6156 🐢 336.8598 🏆
p90 381.6188 🐢 337.2654 🏆
p95 382.1204 🐢 337.46819999999997 🏆
min 355.701 🐢 182.495 🏆
max 382.622 🐢 337.671 🏆
memory-static e2-standard-2 🐢 n2d-standard-2 🏆
avg 265.95779999999996 🐢 240.91440000000003 🏆
p50 263.882 🐢 245.722 🏆
p80 271.8184 🐢 246.9172 🏆
p90 272.6812 🐢 246.9736 🏆
p95 273.1126 🐢 247.0018 🏆
min 258.999 🐢 222.144 🏆
max 273.544 🐢 247.03 🏆
nodejs-scan-sast e2-standard-2 🐢 n2d-standard-2 🏆
avg 1620.5826000000002 🐢 1274.8282 🏆
p50 1617.121 🐢 1275.147 🏆
p80 1637.2344 🐢 1277.2354 🏆
p90 1642.1671999999999 🐢 1280.6462 🏆
p95 1644.6336 🐢 1282.3516 🏆
min 1600.982 🐢 1267.055 🏆
max 1647.1 🐢 1284.057 🏆
qa:internal e2-standard-2 🐢 n2d-standard-2 🏆
avg 135.1844 🐢 94.4302 🏆
p50 137.413 🐢 132.58 🏆
p80 138.91819999999998 🐢 133.5114 🏆
p90 139.1846 🐢 133.65019999999998 🏆
p95 139.3178 🐢 133.71959999999999 🏆
min 127.754 🐢 36.072 🏆
max 139.451 🐢 133.789 🏆
qa:internal-as-if-foss e2-standard-2 🐢 n2d-standard-2 🏆
avg 110.0248 🏆 112.4434 🐢
p50 139.208 🐢 132.91 🏆
p80 146.2794 🐢 133.7212 🏆
p90 157.61219999999997 🐢 133.9376 🏆
p95 163.27859999999998 🐢 134.04579999999999 🏆
min 45.374 🐢 37.004 🏆
max 168.945 🐢 134.154 🏆
qa:selectors e2-standard-2 🐢 n2d-standard-2 🏆
avg 114.352 🐢 92.1884 🏆
p50 133.539 🐢 130.756 🏆
p80 135.3042 🐢 132.1224 🏆
p90 135.8526 🐢 133.15120000000002 🏆
p95 136.1268 🐢 133.6656 🏆
min 39.379 🐢 32.165 🏆
max 136.401 🐢 134.18 🏆
qa:selectors-as-if-foss e2-standard-2 🐢 n2d-standard-2 🏆
avg 113.46600000000001 🐢 109.2404 🏆
p50 133.113 🐢 130.047 🏆
p80 134.5642 🐢 130.3528 🏆
p90 134.8946 🐢 130.4184 🏆
p95 135.0598 🐢 130.4512 🏆
min 43.615 🐢 30.161 🏆
max 135.225 🐢 130.484 🏆
retrieve-tests-metadata e2-standard-2 🐢 n2d-standard-2 🏆
avg 84.49519999999998 🐢 75.069 🏆
p50 82.986 🐢 75.705 🏆
p80 91.26039999999999 🐢 80.1244 🏆
p90 91.7892 🐢 85.58919999999999 🏆
p95 92.0536 🐢 88.3216 🏆
min 74.496 🐢 60.597 🏆
max 92.318 🐢 91.054 🏆
rspec fail-fast e2-standard-2 🐢 n2d-standard-2 🏆
avg 355.3606 🐢 280.43760000000003 🏆
p50 357.399 🐢 272.018 🏆
p80 361.2748 🐢 331.3362 🏆
p90 364.1104 🐢 334.3746 🏆
p95 365.5282 🐢 335.8938 🏆
min 343.936 🐢 192.287 🏆
max 366.946 🐢 337.413 🏆
rspec foss-impact e2-standard-2 🐢 n2d-standard-2 🏆
avg 305.3712 🐢 200.7926 🏆
p50 303.835 🐢 188.334 🏆
p80 307.8934 🐢 263.2702 🏆
p90 311.7342 🐢 277.60659999999996 🏆
p95 313.6546 🐢 284.77479999999997 🏆
min 297.889 🐢 127.183 🏆
max 315.575 🐢 291.943 🏆
rspec frontend_fixture e2-standard-2 🐢 n2d-standard-2 🏆
avg 501.87019999999995 🐢 431.7192 🏆
p50 507.313 🐢 437.167 🏆
p80 522.1634 🐢 439.3418 🏆
p90 522.2722 🐢 441.0874 🏆
p95 522.3266 🐢 441.96020000000004 🏆
min 478.456 🐢 408.195 🏆
max 522.381 🐢 442.833 🏆
rspec frontend_fixture as-if-foss e2-standard-2 🐢 n2d-standard-2 🏆
avg 468.7853999999999 🐢 409.6324000000001 🏆
p50 471.484 🐢 416.038 🏆
p80 481.1438 🐢 417.22999999999996 🏆
p90 484.1574 🐢 418.13599999999997 🏆
p95 485.6642 🐢 418.589 🏆
min 440.694 🐢 380.891 🏆
max 487.171 🐢 419.042 🏆
rspec integration pg11 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1345.4286499999998 🐢 1042.8200749999999 🏆
p50 1331.525 🐢 1073.1285 🏆
p80 1404.2066000000002 🐢 1096.1394 🏆
p90 1491.0244 🐢 1102.6225 🏆
p95 1534.7654499999999 🐢 1117.63195 🏆
min 1095.337 🐢 875.01 🏆
max 1747.072 🐢 1131.011 🏆
rspec integration pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1351.0507 🐢 1004.3312749999999 🏆
p50 1350.4029999999998 🐢 1025.2305000000001 🏆
p80 1460.8962000000001 🐢 1073.3666 🏆
p90 1493.1173000000001 🐢 1096.8882 🏆
p95 1545.44645 🐢 1122.18095 🏆
min 1085.067 🐢 867.277 🏆
max 1567.924 🐢 1152.707 🏆
rspec migration pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1954.2135999999998 🐢 1475.3336400000003 🏆
p50 2085.844 🐢 1691.312 🏆
p80 2412.8382000000006 🐢 1821.8792 🏆
p90 2515.3282 🐢 1948.3058 🏆
p95 2526.109 🐢 1957.8029999999999 🏆
min 979.897 🐢 767.52 🏆
max 2720.494 🐢 2015.438 🏆
rspec system pg11 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1159.1811666666667 🐢 913.8451083333331 🏆
p50 1152.3525 🐢 929.71 🏆
p80 1216.9736 🐢 972.9874 🏆
p90 1288.4618 🐢 1004.7560000000001 🏆
p95 1335.35225 🐢 1056.64955 🏆
min 961.623 🐢 617.161 🏆
max 1431.744 🐢 1185.038 🏆
rspec system pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1176.221858333334 🐢 880.0642416666664 🏆
p50 1173.5929999999998 🐢 892.644 🏆
p80 1250.1914 🐢 960.299 🏆
p90 1287.5820999999999 🐢 985.8930000000001 🏆
p95 1306.1996 🐢 1021.84745 🏆
min 899.457 🐢 655.223 🏆
max 1440.323 🐢 1073.689 🏆
rspec unit pg11 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1294.9866799999995 🐢 1006.9258699999998 🏆
p50 1323.4965 🐢 1010.4490000000001 🏆
p80 1419.736 🐢 1092.6198 🏆
p90 1456.8998 🐢 1109.0479 🏆
p95 1538.4694 🐢 1129.3073 🏆
min 950.277 🐢 729.133 🏆
max 1597.767 🐢 1196.184 🏆
rspec unit pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1289.8600299999996 🐢 983.1337777777778 🏆
p50 1302.017 🐢 986.216 🏆
p80 1414.8564000000001 🐢 1073.4694 🏆
p90 1477.5217 🐢 1102.6453999999999 🏆
p95 1516.8049 🐢 1113.3971000000001 🏆
min 915.233 🐢 753.506 🏆
max 1572.356 🐢 1154.388 🏆
rspec-ee frontend_fixture e2-standard-2 🐢 n2d-standard-2 🏆
avg 596.8254 🐢 507.88530000000003 🏆
p50 591.7760000000001 🐢 452.96500000000003 🏆
p80 710.6518 🐢 615.3416 🏆
p90 728.6799 🐢 621.5779 🏆
p95 734.17395 🐢 629.16445 🏆
min 457.652 🐢 397.273 🏆
max 739.668 🐢 636.751 🏆
rspec-ee integration pg11 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1107.15345 🐢 847.7888500000001 🏆
p50 1092.429 🐢 864.378 🏆
p80 1219.0254 🐢 937.5606 🏆
p90 1239.2442 🐢 952.3696 🏆
p95 1255.1697000000001 🐢 964.3114500000001 🏆
min 911.395 🐢 681.776 🏆
max 1285.488 🐢 1054.304 🏆
rspec-ee integration pg11 geo e2-standard-2 🐢 n2d-standard-2 🏆
avg 605.9413999999999 🐢 384.9822 🏆
p50 636.726 🐢 366.659 🏆
p80 641.3778 🐢 404.4842 🏆
p90 645.4514 🐢 422.96259999999995 🏆
p95 647.4882 🐢 432.2018 🏆
min 511.685 🐢 360.248 🏆
max 649.525 🐢 441.441 🏆
rspec-ee integration pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1136.9855000000002 🐢 869.0492 🏆
p50 1139.4180000000001 🐢 877.017 🏆
p80 1208.5096000000003 🐢 919.8742000000001 🏆
p90 1291.2767 🐢 967.5134 🏆
p95 1292.4799500000001 🐢 992.4153 🏆
min 934.332 🐢 732.773 🏆
max 1296.754 🐢 1014.556 🏆
rspec-ee integration pg12 geo e2-standard-2 🐢 n2d-standard-2 🏆
avg 662.1719999999999 🐢 508.0924 🏆
p50 672.055 🐢 534.31 🏆
p80 692.1564 🐢 552.2302 🏆
p90 701.1532 🐢 558.0586 🏆
p95 705.6516 🐢 560.9728 🏆
min 581.978 🐢 367.327 🏆
max 710.15 🐢 563.887 🏆
rspec-ee migration pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1541.7215 🐢 1139.5934000000002 🏆
p50 1487.8905 🐢 1170.232 🏆
p80 2045.2685999999999 🐢 1494.644 🏆
p90 2085.0347 🐢 1565.618 🏆
p95 2128.01735 🐢 1593.887 🏆
min 1001.237 🐢 663.541 🏆
max 2171.0 🐢 1622.156 🏆
rspec-ee system pg11 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1299.0915 🐢 956.3360689655171 🏆
p50 1305.095 🐢 936.267 🏆
p80 1375.3966 🐢 1037.4432000000002 🏆
p90 1394.4776 🐢 1065.3094 🏆
p95 1413.628 🐢 1073.2982 🏆
min 1113.546 🐢 811.28 🏆
max 1460.328 🐢 1083.028 🏆
rspec-ee system pg11 geo e2-standard-2 🐢 n2d-standard-2 🏆
avg 727.7954 🐢 523.0474 🏆
p50 741.18 🐢 484.025 🏆
p80 759.1673999999999 🐢 547.0680000000001 🏆
p90 765.1522 🐢 601.564 🏆
p95 768.1446 🐢 628.8119999999999 🏆
min 640.396 🐢 475.61 🏆
max 771.137 🐢 656.06 🏆
rspec-ee system pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1295.3683333333333 🐢 988.3517241379311 🏆
p50 1316.0394999999999 🐢 1007.166 🏆
p80 1394.4988 🐢 1065.6968 🏆
p90 1435.632 🐢 1080.9508 🏆
p95 1464.9281999999998 🐢 1098.6202 🏆
min 1013.374 🐢 737.265 🏆
max 1483.909 🐢 1160.328 🏆
rspec-ee system pg12 geo e2-standard-2 🐢 n2d-standard-2 🏆
avg 766.8055999999999 🐢 605.4558 🏆
p50 775.7 🐢 647.512 🏆
p80 801.6754 🐢 679.254 🏆
p90 817.5441999999999 🐢 681.108 🏆
p95 825.4786 🐢 682.035 🏆
min 706.212 🐢 481.069 🏆
max 833.413 🐢 682.962 🏆
rspec-ee unit pg11 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1647.30934 🐢 1298.7583600000003 🏆
p50 1594.8555000000001 🐢 1260.229 🏆
p80 1937.7292000000002 🐢 1535.4515999999999 🏆
p90 2130.3945 🐢 1635.6814000000002 🏆
p95 2210.279 🐢 1709.59585 🏆
min 1152.573 🐢 892.967 🏆
max 2462.964 🐢 1771.601 🏆
rspec-ee unit pg11 geo e2-standard-2 🐢 n2d-standard-2 🏆
avg 1083.3391 🐢 747.693 🏆
p50 1054.9650000000001 🐢 731.6510000000001 🏆
p80 1285.3708 🐢 898.7158 🏆
p90 1289.498 🐢 991.3663 🏆
p95 1307.48 🐢 1001.53315 🏆
min 813.657 🐢 433.892 🏆
max 1325.462 🐢 1011.7 🏆
rspec-ee unit pg12 e2-standard-2 🐢 n2d-standard-2 🏆
avg 1704.0473800000004 🐢 1290.54148 🏆
p50 1621.0915 🐢 1234.676 🏆
p80 1978.4626 🐢 1527.6260000000002 🏆
p90 2074.0608 🐢 1634.9969 🏆
p95 2213.3034 🐢 1670.11975 🏆
min 1173.777 🐢 887.596 🏆
max 2285.96 🐢 1748.724 🏆
rspec-ee unit pg12 geo e2-standard-2 🐢 n2d-standard-2 🏆
avg 1016.5853999999999 🐢 811.0550999999999 🏆
p50 960.304 🐢 866.567 🏆
p80 1151.151 🐢 913.4354 🏆
p90 1258.4471999999998 🐢 985.7231999999999 🏆
p95 1324.4900999999998 🐢 1065.9230999999997 🏆
min 804.758 🐢 421.221 🏆
max 1390.533 🐢 1146.123 🏆
rspec:coverage e2-standard-2 🐢 n2d-standard-2 🏆
avg 329.51480000000004 🐢 228.32379999999998 🏆
p50 332.479 🐢 229.118 🏆
p80 364.2262 🐢 231.55180000000001 🏆
p90 373.7406 🐢 233.0674 🏆
p95 378.4978 🐢 233.8252 🏆
min 280.903 🐢 221.38 🏆
max 383.255 🐢 234.583 🏆
run-dev-fixtures e2-standard-2 🐢 n2d-standard-2 🏆
avg 305.78180000000003 🐢 217.80700000000002 🏆
p50 305.648 🐢 257.996 🏆
p80 308.8596 🐢 283.1222 🏆
p90 312.0428 🐢 284.5606 🏆
p95 313.63439999999997 🐢 285.2798 🏆
min 295.869 🐢 128.71 🏆
max 315.226 🐢 285.999 🏆
run-dev-fixtures-ee e2-standard-2 🐢 n2d-standard-2 🏆
avg 368.806 🐢 244.669 🏆
p50 370.193 🐢 197.104 🏆
p80 374.076 🐢 342.503 🏆
p90 381.436 🐢 342.793 🏆
p95 385.116 🐢 342.93800000000005 🏆
min 351.792 🐢 144.615 🏆
max 388.796 🐢 343.083 🏆
secrets-sast e2-standard-2 🐢 n2d-standard-2 🏆
avg 128.87960000000004 🐢 103.8622 🏆
p50 128.143 🐢 103.627 🏆
p80 132.459 🐢 104.9862 🏆
p90 133.149 🐢 106.07260000000001 🏆
p95 133.494 🐢 106.61580000000001 🏆
min 124.18 🐢 101.742 🏆
max 133.839 🐢 107.159 🏆
setup-test-env e2-standard-2 🐢 n2d-standard-2 🏆
avg 604.153 🐢 475.30879999999996 🏆
p50 631.576 🐢 529.794 🏆
p80 632.9726 🐢 531.065 🏆
p90 635.4378 🐢 531.679 🏆
p95 636.6704 🐢 531.986 🏆
min 493.642 🐢 382.55 🏆
max 637.903 🐢 532.293 🏆
static-analysis e2-standard-2 🐢 n2d-standard-2 🏆
avg 635.22725 🐢 535.24795 🏆
p50 595.413 🐢 504.71299999999997 🏆
p80 840.2504 🐢 649.0688 🏆
p90 886.2484 🐢 781.7592 🏆
p95 897.9930999999999 🐢 784.8962 🏆
min 448.953 🐢 320.431 🏆
max 904.759 🐢 804.451 🏆
verify-tests-yml e2-standard-2 🐢 n2d-standard-2 🏆
avg 40.681400000000004 🐢 33.4914 🏆
p50 39.307 🐢 33.628 🏆
p80 42.809599999999996 🐢 34.7018 🏆
p90 43.5068 🐢 34.873400000000004 🏆
p95 43.8554 🐢 34.9592 🏆
min 38.483 🐢 32.058 🏆
max 44.204 🐢 35.045 🏆
webpack-dev-server e2-standard-2 🐢 n2d-standard-2 🏆
avg 335.0364 🐢 259.5096 🏆
p50 332.766 🐢 278.746 🏆
p80 340.1594 🐢 284.10020000000003 🏆
p90 344.9742 🐢 284.2346 🏆
p95 347.3816 🐢 284.3018 🏆
min 322.875 🐢 171.79 🏆
max 349.789 🐢 284.369 🏆

For CI jobs, the n2d-standard-2 machine type seems to almost always be better than the e2-standard-2 machine type, so we might want to commit for this as we'd save already 3.4$ / instance / month (we'd save $9 / instance / month with e2-standard-2).

Pipelines list

n1-standard-2

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/265681900
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/265682278
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/265852223
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/265855733
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/265855817

n1-standard-4

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/267074963
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/267081314
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/267096130
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/267108824
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/267119602

e2-standard-2

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/265923277
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/265924017
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/266035530
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/266035566
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/266036601

e2-standard-4

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/267183916
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/267190658
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/267210060
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/267225328
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/267225789

n2d-standard-2

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/266120165
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/266118070
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/266118947
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/266161480
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/266160716

n2d-standard-4

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/267589342
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/267611773
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/267635311
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/267706052
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/267727213

n2-standard-2

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/266912431
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/266914140
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/266926705
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/266934615
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/266939951

n2-standard-4

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/267773393
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/267783246
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/267798990
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/267810139
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/267810916

c2-standard-4

  1. https://gitlab.com/gitlab-org/gitlab/pipelines/266974571
  2. https://gitlab.com/gitlab-org/gitlab/pipelines/266984678
  3. https://gitlab.com/gitlab-org/gitlab/pipelines/267005624
  4. https://gitlab.com/gitlab-org/gitlab/pipelines/267006517
  5. https://gitlab.com/gitlab-org/gitlab/pipelines/267020257
Edited by Kyle Wiebers