This is an automated email from the ASF dual-hosted git repository.
shahar1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 95ba43c0347 Keep RunsOn runners off the Spot pools reclaimed most
often (#76084)
95ba43c0347 is described below
commit 95ba43c0347098ad0347d329717133c97facfc5a
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Oct 31 07:28:20 2026 +0100
Keep RunsOn runners off the Spot pools reclaimed most often (#76084)
From 2026-10-25 to 2026-10-30 about half of the Spot interruptions of
RunsOn runners in us-east-2
came from a few instance families that made up only an eighth of the Spot
launches: m5 (and the
m5n, m5d, m5ad, m5dn pools its prefix pulls in), m6a, and the r6a, r7a and
r6i pools of the
in-memory runners were reclaimed 13-54% of the time, the other families
1-4%. Each interruption
reruns the whole job. AWS Spot Advisor rates r7i above 20% in the region
too.
Generated-by: Claude Opus 5
---
dev/breeze/src/airflow_breeze/global_constants.py | 7 +++++--
dev/breeze/tests/test_selective_checks.py | 5 ++---
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py
b/dev/breeze/src/airflow_breeze/global_constants.py
index d61cf9b9bec..12c449068f2 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -43,8 +43,11 @@ PUBLIC_ARM_RUNNERS = '["ubuntu-22.04-arm"]'
# `spot=co` (capacity-optimized) takes Spot from the pools least likely to run
out or be reclaimed
# instead of RunsOn's default price-capacity-optimized: a capacity miss or an
interruption sends the
# runner to on-demand (and reruns the whole job), which costs more than the
higher Spot price.
+# A family matches as a prefix (`m5` also takes m5n, m5d, ...). Left out
because their us-east-2 Spot
+# runners were reclaimed far more often than the rest (13-54% vs. 1-4%, Oct
2026): m5, m5a, m6a and,
+# for the in-memory runners, r7a, r6a, r6i; r7i, which AWS Spot Advisor rates
>20% there, too.
RUNS_ON_AMD_RUNNER_TEMPLATE = (
-
"runs-on={run_id}/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5/image=ubuntu22-full-x64/volume=150gb/spot=co"
+
"runs-on={run_id}/family=m8a+m8i+m7a+m7i+m6i/image=ubuntu22-full-x64/volume=150gb/spot=co"
"/cpu={{0}}/ram={{1}}"
)
RUNS_ON_ARM_RUNNER_TEMPLATE = (
@@ -54,7 +57,7 @@ RUNS_ON_ARM_RUNNER_TEMPLATE = (
# databases wait on disk syncs. The RAM disk is capped at 100% of RAM before
RunsOn v3.5.0, so these jobs
# ask for memory headroom and also accept the memory-optimized r-family.
RUNS_ON_AMD_IN_MEMORY_RUNNER_TEMPLATE = (
-
"runs-on={run_id}/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5+r8i+r7a+r7i+r6a+r6i"
+ "runs-on={run_id}/family=m8a+m8i+m7a+m7i+m6i+r8i"
"/image=ubuntu22-full-x64/volume=150gb/spot=co"
"/cpu={{0}}/ram={{1}}/extras=tmpfs"
)
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index fd36a7c4975..47d3913f8b9 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -5198,14 +5198,13 @@ def
test_providers_with_test_side_effects_are_shared_process_providers():
RUNS_ON_AMD = (
-
'["runs-on=42/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5/image=ubuntu22-full-x64/volume=150gb/spot=co'
- '/cpu={0}/ram={1}"]'
+
'["runs-on=42/family=m8a+m8i+m7a+m7i+m6i/image=ubuntu22-full-x64/volume=150gb/spot=co/cpu={0}/ram={1}"]'
)
RUNS_ON_ARM = (
'["runs-on=42/family=m8g+m7g+m6g/image=ubuntu22-full-arm64/volume=150gb/spot=co/cpu={0}/ram={1}"]'
)
RUNS_ON_AMD_IN_MEMORY = (
- '["runs-on=42/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5+r8i+r7a+r7i+r6a+r6i'
+ '["runs-on=42/family=m8a+m8i+m7a+m7i+m6i+r8i'
"/image=ubuntu22-full-x64/volume=150gb/spot=co"
'/cpu={0}/ram={1}/extras=tmpfs"]'
)