Skip to content

Feat: add jobset_ttr_pod_oom DAG for v6e recovery validation - #178

Open
chiajunglien wants to merge 15 commits into
devfrom
tpu-obs/user/emma/dag_jobset_ttr_03
Open

Feat: add jobset_ttr_pod_oom DAG for v6e recovery validation#178
chiajunglien wants to merge 15 commits into
devfrom
tpu-obs/user/emma/dag_jobset_ttr_03

Conversation

@chiajunglien

Copy link
Copy Markdown

Description

The primary goal of this PR is to implement the jobset_ttr_pod_oom DAG, designed to validate the self-healing capability of TPU JobSets under memory pressure. Unlike simple pod deletion, this DAG automates OOM (Out-Of-Memory) fault injection to ensure JAX workloads and the JobSet controller correctly handle and recover from container-level failures.

Technical Implementation

  • Dynamic Provisioning: Builds node pool info from GCS configurations and provisions TPU resources based on MachineConfigMap (e.g., v6e-16).
  • Resource Constraints: Dynamically injects memory limits (e.g., 4Gi) into the JobSet YAML to facilitate rapid OOM triggering.
  • Fault Injection: Implements @task trigger_oom_killed which executes oomkill.py inside a random pod via kubectl exec.
  • Detection Phase: Monitors the JobSet's reaction. It expects the JobSet to detect the missing pod and trigger a full-slice restart (Killing event) to maintain JAX synchronization.
  • Performance Metric: Measures the Time To Recovery (TTR).

Airflow/Composer

Required Variables

  • Cluster Information (This DAG requires an existing cluster)

    • PROJECT_ID: The GCP project ID where the cluster resides. (Default to cienet-cmcs)
    • CLUSTER_NAME: The name of the target GKE cluster. (Default to tpu-observability-automation-dev)
    • LOCATION: The region of the GKE cluster. (Default to us-central1)
  • Node Pool Configurations

    • NODE_POOL_NAME: The base name for the new node pool. (Default to jobset-ttr-pod-oom-v6e)
    • NODE_LOCATIONS: The zone for the nodes in the normal test path. (Default to us-central1-b)
    • NUM_NODES: The number of nodes to create in the pool. (Default to 4)
    • MACHINE_TYPE: The machine type for the GKE nodes. (Default to ct6e-standard-4t)
    • TPU_TOPOLOGY: The TPU topology for the node pool. (Default to 4x4)

Before submitting this PR, please make sure (put X in square brackets):

  • I have performed a self-review of my code.
  • I have necessary comments in my code, particularly in hard-to-understand areas.
  • I have run one-shot tests and provided workload links above if applicable.
  • I have made or will make corresponding changes to the doc if needed.

@chiajunglien
chiajunglien force-pushed the tpu-obs/user/emma/dag_jobset_ttr_03 branch 2 times, most recently from 5325c2a to e190a7f Compare January 15, 2026 08:51
@chiajunglien
chiajunglien force-pushed the tpu-obs/user/emma/dag_jobset_ttr_03 branch from ada763d to e407947 Compare January 22, 2026 02:45
@chiajunglien
chiajunglien force-pushed the tpu-obs/user/emma/dag_jobset_ttr_03 branch from 8933089 to 702a14b Compare January 23, 2026 08:21
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 2 times, most recently from 0f0e4e2 to 31723ef Compare January 28, 2026 06:23
@chiajunglien
chiajunglien force-pushed the tpu-obs/user/emma/dag_jobset_ttr_03 branch from 652855f to 8dd08c3 Compare January 28, 2026 08:15
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 4 times, most recently from 49ba692 to dc199fa Compare February 4, 2026 09:55
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 5 times, most recently from ac9e9e7 to 0cf6e23 Compare February 13, 2026 08:57
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 2 times, most recently from e1c48aa to 821fb36 Compare March 6, 2026 08:10
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 2 times, most recently from ed1546a to 6c50b20 Compare March 9, 2026 06:46
Comment on lines +118 to +119
This test requires an existing cluster and a container image containing
the `oomkill.py` script to run.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the content of this script, can we specify the raw commands from DAG directly?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 2 times, most recently from 65e3f42 to cb3b7b7 Compare March 13, 2026 10:08
@chiajunglien
chiajunglien force-pushed the tpu-obs/user/emma/dag_jobset_ttr_03 branch from 808d5d4 to 934886f Compare May 11, 2026 08:49
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 3 times, most recently from 8eb5556 to acf36a1 Compare May 19, 2026 03:54
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 3 times, most recently from 83f8b37 to ea29ef3 Compare May 28, 2026 07:44
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 4 times, most recently from 4af284a to a9fa8fb Compare June 8, 2026 08:58
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 4 times, most recently from f8824db to 09c9e42 Compare June 17, 2026 08:08
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 5 times, most recently from d242c8d to f76e189 Compare July 3, 2026 08:25
@alfredyu-cienet
alfredyu-cienet force-pushed the dev branch 3 times, most recently from d43f051 to a577785 Compare July 9, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants