Skip to content

[Feature]: Detect unresponsive node-local GPU driver calls #1576

Description

@YQ-Wang

Prerequisites

  • I searched existing issues

Code of Conduct

  • I agree to follow NVSentinel's Code of Conduct

Feature Summary

Add a watchdog to the GPU health monitor that detects DCGM operations that stop returning because the node-local NVIDIA driver is unresponsive.

Problem/Use Case

A GPU driver failure does not always return a DCGM timeout or error. A driver-facing call can block indefinitely while Kubernetes continues to report the node as Ready and its GPUs as allocatable. Because the poll loop itself is blocked, it cannot publish a health event. The liveness probe eventually restarts the monitor, but the replacement can block on the same driver operation without recording the underlying fault.

Remote DCGM endpoints require different handling: an unresponsive service, DNS failure, or network problem does not prove that the local node's GPU driver needs remediation.

Proposed Solution

  • Track node-local DCGM operations from an independent watchdog thread using a configurable monotonic deadline.
  • Emit GpuDriverUnresponsive with DRIVER_PROBE_HANG and a reboot recommendation only for embedded, node-local mode.
  • Classify hangs in remote modes as GpuDcgmConnectivityFailure with DCGM_PROBE_HANG and no local reboot recommendation.
  • Bound critical event delivery within the liveness restart budget and retry failed delivery attempts.
  • Persist active local-driver state across monitor restarts to avoid duplicate events and allow a later healthy clearing event.
  • Export a detection metric and expose watchdog and liveness timing through Helm values.
  • Ship GpuDriverUnresponsive with STORE_ONLY processing by default so operators can validate detections before enabling remediation.

Component

Health Monitor

Related Implementation

Draft implementation: #1574

Depends on the pre-cleanup delivery fix tracked in #1575.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions