Catalog
google/gke-ai-troubleshooting-tpu-vbar-oom

google

gke-ai-troubleshooting-tpu-vbar-oom

Diagnoses and prevents vbar_control_agent segfaults, out-of-memory (OOM) errors, and TPU device initialization failures on TPU v6e nodes in GKE caused by race conditions during TPU device resets or high-frequency metrics polling. Use when troubleshooting vbar_control_agent crashes, memory cgroup OOMs in serial console logs, tpu-device-plugin metrics checksum corruption errors, or custom TPU metrics collection conflicts on GKE TPU v6e nodes. Don't use for general non-TPU container OOM troubleshooting or standard GKE node lifecycle operations.

v1.0Latest
New~1.6kUpdated Aug 5, 2026

TPU Connection Failure and VBAR OOM Troubleshooting

Use this skill to systematically diagnose and prevent vbar_control_agent segfaults and Out-Of-Memory (OOM) errors on TPU v6e nodes.

⚠️ Prerequisites

  • Cloud Logging must be enabled for the project.
  • Access to the project and cluster via gcloud or equivalent tool.

🔍 Diagnostic Workflow

Step 0: Context Acquisition & Time Window Definition

Independently gather required context using available GCP/GKE tools or use the provided {variable} placeholders:

  • {project_id}: The GCP Project ID (e.g., customer-ai-project-123).
  • {cluster_name}: The GKE Cluster Name (e.g., tpu-cluster-prod).
  • {node_name}: The Node Name or Instance ID (e.g., tpu-node-1).
  • {workload_name}: The Workload Name / JobSet Name (e.g., my-training-job-456).
  • {namespace}: The Workload Namespace.
  • {issue_time}: The timestamp of the issue (e.g., 2026-04-14T20:00:00Z).

Time Handling & Execution Rules

  1. Window Calculation: If an issue timestamp {issue_time} is provided, calculate the query time window as [{issue_time} - 30m] to [{issue_time} + 30m].
    • Let {start_time} = {issue_time} - 30m
    • Let {end_time} = {issue_time} + 30m
  2. Informational vs. Live Execution: If the user request is informational or query-formulation (e.g. "How can I check...", "How do I determine..."), or if live GCP project resources are not actively targetable, directly output the calculated time window, log names, and Cloud Logging filter templates without attempting live log execution commands.

Step 1: Check for vbar_control_agent OOMs

Look for specific out of memory messages from vbar_control_agent in serial console logs (serialconsole.googleapis.com%2fserial_port_1_output).

  • Tool to use: query_logs (for live diagnostics)
  • Filter Templates:

Serial Console Logs (OOMs):

logName="projects/{project_id}/logs/serialconsole.googleapis.com%2fserial_port_1_output"
AND labels."compute.googleapis.com/resource_name"="{node_name}"
AND SEARCH(text_payload, "Memory cgroup out of memory: Killed process .* (vbar_control_ag)")
AND timestamp >= "{start_time}"
AND timestamp <= "{end_time}"
  • Logic: Presence of Memory cgroup out of memory messages related to vbar_control_agent. Stack traces pointing to libtpu::tpunetd::VBARControlHelper::MetricsReadFromVBAR are a strong indicator.
  • Automation: Proceed to next step automatically after reporting findings.
  • Reference: See references/failure_signatures.md for example log patterns.

Step 2: Investigate tpu-device-plugin Metrics Fetch Failures [Low Risk]

Check if tpu-device-plugin is reporting metric fetch failures.

  • Tool to use: query_logs
  • Filter Template:
resource.type="k8s_container"
AND resource.labels.project_id="{project_id}"
AND resource.labels.cluster_name="{cluster_name}"
AND resource.labels.container_name="tpu-device-plugin"
AND severity=ERROR
AND textPayload:"metrics fetch failed for .* deviceID and .* device path with error: checksum didn't match with the metrics data. Corrupt data found"
AND timestamp >= "{start_time}"
AND timestamp <= "{end_time}"
  • Logic: Errors indicating "metrics fetch failed" with "checksum didn't match" suggest vBAR memory corruption.
  • Automation: Proceed to next step automatically after reporting findings.

Step 3: Check for Custom Metrics Collection Usage [Low Risk]

Inspect cluster configurations, workloads, or container specs to determine if custom TPU metrics collection mechanisms are deployed.

  • Action: Check if custom scripts or agents (e.g., using libtpu.sdk.tpumonitoring) are deployed that frequently query GetHostMetrics from vBAR Control Agent.

  • Verification Commands:

    • Kubectl Search (Inspect workload env/specs):
    kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"/"}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'
    
    • Log Search Filter (query_logs):
    resource.type="k8s_container"
    AND resource.labels.project_id="{project_id}"
    AND resource.labels.cluster_name="{cluster_name}"
    AND textPayload:"libtpu.sdk.tpumonitoring"
    AND timestamp >= "{start_time}"
    AND timestamp <= "{end_time}"
    
  • Logic: Confirmation of custom metrics collection helps confirm the race condition hypothesis.

🛠️ Resolution Workflow

Resolution 1: Temporarily Disable Custom Metrics Collection [High Risk]

If a custom metrics collection agent is identified, recommend disabling it.

  • Action: Recommend disabling the custom metrics collector.
  • Justification: Prevents reads from vBAR during device resets, stopping crashes and OOMs.

Resolution 2: Await vbar_control_agent Resiliency Update [Low Risk]

Advise that a permanent fix will be available in a future GKE version.

  • Action: Recommend upgrading GKE when the fix is available.
  • Justification: The updated agent will be resilient to memory corruption and gracefully handle reads from unbound vBARs.

📋 copypaste checklist

  • Acquire context and compute [{start_time}, {end_time}] window.
  • Check for vbar_control_agent segfaults and OOMs using query_logs.
  • Investigate tpu-device-plugin failures using query_logs.
  • Inspect for custom metrics collection usage.
  • Advise disabling custom metrics collection if applicable.
  • Advise awaiting resiliency update.
Files3
3 files · 13.4 KB

Select a file to preview

Overall Score

76/100

Grade

B

Good

Safety

78

Quality

75

Clarity

80

Completeness

72

Summary

This skill provides a systematic diagnostic workflow for troubleshooting vbar_control_agent segfaults, out-of-memory errors, and TPU device initialization failures on GKE TPU v6e nodes. It guides users through log analysis using Cloud Logging queries, investigation of custom metrics collection, and resolution steps to disable problematic metrics collection or await platform updates.

Detected Capabilities

gcloud CLI command executionCloud Logging query (LQL)kubectl pod inspectionlog pattern analysisdevice and metric diagnosis

Trigger Keywords

Phrases that MCP clients use to match this skill to user intent.

troubleshoot tpu segfaultstpu device oom errorsvbar control agent crashestpu metrics fetch failuresgke tpu node diagnosticstpu-device-plugin corruptioncustom tpu metrics conflict

Risk Signals

INFO

No destructive operations detected; skill is read-only diagnostic

SKILL.md overall
INFO

Cloud Logging queries use templated parameters (project_id, cluster_name, node_name) — proper escaping depends on user input substitution

Step 1, Step 2, Step 3 filter templates
WARNING

Kubectl command uses jsonpath to enumerate workload images without explicit namespace filtering; queries across all namespaces

Step 3 verification commands
INFO

Script execution requires PROJECT_ID environment variable or gcloud context; fails gracefully if not set

scripts/validate_queries.sh:5-10
WARNING

validate_queries.sh uses gcloud logging read with programmatic filters; filters are constructed with variable substitution but not shell-escaped

scripts/validate_queries.sh:13-20

Referenced Domains

External domains referenced in skill content, detected by static analysis.

www.apache.org

Use Cases

  • Diagnose vbar_control_agent OOM crashes on TPU v6e clusters
  • Identify memory cgroup failures in serial console logs
  • Detect tpu-device-plugin metric fetch failures and corruption
  • Discover custom TPU metrics collection conflicts
  • Prevent race conditions during TPU device resets
  • Troubleshoot high-frequency metrics polling issues on TPU nodes

Quality Notes

  • Strengths: Clear diagnostic workflow organized into logical steps (context acquisition, investigation, resolution). Comprehensive examples of failure signatures with anonymized real-world log patterns. Well-defined role for each query (serial console OOMs, plugin errors, metrics collection checks). Good use of checkboxes for procedural tracking.
  • Strengths: Time window calculation clearly documented with formulas (issue_time ± 30m). Template variables are well-defined with examples. Distinction between 'informational' vs 'live execution' modes is helpful.
  • Improvement: Log filter templates use LQL syntax with resource filters that are complex; unclear if all queries have been tested against actual GKE/Cloud Logging API. Recommend adding validation notes or example output.
  • Improvement: Step 3 kubectl command does not filter by namespace or node, potentially overwhelming output in large clusters. Could add namespace/node filtering hints.
  • Improvement: Supporting file 'references/failure_signatures.md' is included and well-organized but example logs are partially anonymized (could include more realistic patterns for agent matching).
  • Improvement: validate_queries.sh performs dry-run filter validation but doesn't catch malformed LQL syntax — gcloud logging read with limit=1 will succeed even for syntactically correct but logically broken filters.
  • Note: Skill correctly scopes itself to TPU v6e nodes and does not recommend general OOM troubleshooting — good boundary documentation.
Model: claude-haiku-4-5-20251001Analyzed: Aug 5, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Use google/gke-ai-troubleshooting-tpu-vbar-oom in your dev environment

Command Palette

Search for a command to run...