GoodputMeasurement
GoodputMeasurement watches a Job’s pod logs in real time, applies regex patterns from a LogProfile, and computes a goodput ratio — the fraction of elapsed training time the job was making useful forward progress. It is automatically created by the Job controller when spec.goodputMeasurement is configured, or can be created manually.
Spec fields
Status fields
Additional diagnostic fields (all optional):
How it works
- Watches pod logs via the
PodLogFetcherinterface atsampleInterval. - Applies named capture group regexes from the referenced
LogProfile. - Computes the goodput ratio:
(t_w - t_ch - t_rm - t_re - t_save) / (t_w - t_re)wheret_w= training time,t_ch= lost work time,t_rm= resume time,t_re= reschedule time,t_save= checkpoint save time. - Sets
Completewhen the referenced Job reaches a terminal state.
Threshold evaluation (pass/fail) is done at the Job tier, not here — see Job.spec.thresholds.
A measurement the Job controller creates records the Job’s UID in the nvcre.nvidia.com/job-uid annotation. The Workflow owns the measurement, so it outlives its Job. A retried Workflow group gives each attempt its own Job name, and so its own measurement, and the earlier attempt’s measurement is deleted when that attempt is retired. A Job can still be replaced under the same name, for example a retry relaunched by a controller version from before attempt-indexed names. A measurement left by such an earlier Job is not used for the new Job’s thresholds or stall detection: the Job controller deletes it and creates a fresh one for the new Job, the same way it treats a BandwidthMeasurement. A measurement without the annotation was created before it existed and is matched by Job name.