Goodput Tracking¤
Track effective training goodput — the fraction of wall-clock time spent on useful computation rather than stalls.
See Also¤
- Performance Overview - All performance tools
- Roofline - Roofline analysis
- Synchronization - Host/device sync helpers
datarax.performance.goodput ¤
Goodput/badput telemetry for pipeline performance visibility.
Tracks time breakdown per batch: - Source time: data loading from source - Transform time: operator execution - Transfer time: host-to-device transfers - Overhead: control flow, Python, framework overhead
Goodput ratio = productive_time / wall_time, where productive_time = source + transform + transfer. Overhead is the remainder.
Usage::
tracker = GoodputTracker()
for batch in pipeline:
tracker.start_batch()
with tracker.time_source():
data = source.get_batch()
with tracker.time_transform():
result = transform(data)
with tracker.time_transfer():
device_data = jax.device_put(result)
block_until_ready_tree(device_data)
tracker.end_batch()
print(tracker.summary())
GoodputMetrics
dataclass
¤
GoodputMetrics(total_batches: int, wall_clock_sec: float, source_sec: float, transform_sec: float, transfer_sec: float, productive_sec: float, overhead_sec: float, goodput_ratio: float)
Summary metrics from a GoodputTracker.
GoodputTracker ¤
Lightweight pipeline telemetry tracker.
Records per-batch time breakdowns and computes goodput/badput ratios. Thread-safe for single-producer usage (one batch at a time).
record_source ¤
record_source(duration_sec: float) -> None
Record source loading time for current batch.
record_transform ¤
record_transform(duration_sec: float) -> None
Record transform execution time for current batch.
record_transfer ¤
record_transfer(duration_sec: float) -> None
Record host-to-device transfer time for current batch.
time_transform ¤
time_transform() -> Generator[None, None, None]
Context manager to time transform execution.