11. AI dataset storage latency rises above 200 ms. How would you isolate storage, network, or GPU-node delay?
A training workload reports persistent dataset-read latency above 200 ms. Trace a representative read from application and filesystem timing through client queues, node CPU and memory, network path, storage metadata and data services, caching, retries and throughput; compare healthy cohorts, preserve timestamps and topology, and define the evidence that locates the first boundary adding latency before changing configuration.
I would trace one representative read end to end, timestamp every boundary, and compare it with a healthy cohort. I would inspect client queues, node pressure, network, storage services, retries, and GPU transfer, then validate the first boundary that becomes abnormal before changing configuration.
The goal is to find where a slow dataset read first starts losing time. I would follow the same piece of data from the training program until it is ready for use, recording the time at each step. I would compare that journey with a similar run that is working normally. This shows whether the delay begins on the training machine, while the data is traveling, or while storage is finding and returning it. I would gather proof first, test the suspected area, make only the smallest justified change, and repeat the same test afterward.
- Is the 200 ms value an end-to-end read-latency target, and which percentile matters most: p50, p95, or p99?
- Can I compare the affected workload with healthy runs using the same dataset, job type, model, cluster, path, and similar load?
- What storage interface is involved, such as a filesystem, object store, or block storage?
- Are synchronized clocks and per-boundary timestamps already available across the application, nodes, network, and storage services?
- Is GPU starvation visible as part of the impact, or is the reported symptom limited to dataset-read latency?
I would start with the user-visible objective: dataset reads are persistently above the 200 ms target, so I need to locate the first boundary where the read path becomes abnormal. I would not immediately tune storage, networking, or the GPU node.
First, I would reproduce a representative slow read during a controlled time window. I would preserve the dataset, path, batch size, worker count, concurrency, topology, and timestamps. I would use a consistent clock source across systems so clock skew does not create a false latency boundary.
At the application and client boundary, I would measure DataLoader or prefetch queue depth, worker wait time, and per-worker latency. A large queue or long wait before I/O begins points toward a client-side bottleneck rather than remote storage.
At the GPU node, I would check CPU run queue, I/O wait, steal time, page-cache behavior, and major page faults. High run queue, I/O wait, or major faults compared with a healthy node can explain delay before the network path is reached.
For the network path, I would inspect round-trip time, throughput, retransmissions or drops, and packet loss across the NIC, fabric, switches, and storage front end. High RTT, loss, retransmissions, or unexpectedly low throughput relative to healthy runs makes the network the leading fault boundary.
For storage, I would separate metadata work from data reads. Metadata evidence includes lookup latency, operations per second, error rate, and lock contention. Data-service evidence includes p50, p95, and p99 read latency, throughput, backend queue length, and errors. This separation matters because slow namespace or metadata work can look like slow storage even when the data service itself is healthy.
On the return path, I would check retry rate and backoffs, then measure host-to-device transfer time and staging-buffer wait. High retries can amplify delay, while long H2D transfer or staging waits can localize the problem to the GPU-host transfer path instead of storage.
I would correlate all of these signals with consistent timestamps and bounded resource attributes such as job, node, rack, storage path, and workload cohort. Application instrumentation creates request or read timing. OpenTelemetry traces and metrics can carry correlation context; a collector can receive, enrich, sample when appropriate, and transport telemetry to the configured backend. Prometheus-style metrics provide aggregate trends, while traces or timestamped events provide per-read timing. eBPF and operating-system signals add kernel and network evidence, and NVIDIA DCGM provides GPU-related health and utilization signals. Dashboards query the stored telemetry so operators can compare the current path with healthy cohorts. No one signal alone proves root cause.
The main SLI is end-to-end dataset-read latency, normally viewed with percentiles such as p50, p95, and p99. Supporting SLIs include queue wait, network RTT and loss, metadata-operation latency, data-service latency, retry rate, throughput, and H2D transfer time. The SLO should define acceptable end-to-end behavior before alert thresholds are chosen. Alerts should be symptom based and actionable, with an owner, severity, runbook context, and a sustained condition or other noise control.
The key diagnostic step is to build a timestamped latency waterfall and compare each boundary with the healthy baseline. The first boundary where latency, queueing, errors, throughput, or utilization becomes abnormal localizes where the delay begins. I would treat that as the leading fault boundary, then collect targeted evidence to confirm the hypothesis and reject alternatives that remain healthy.
Telemetry has limits. High-cardinality labels increase ingestion and storage cost, so I would keep dimensions bounded. Detailed traces may be sampled to control overhead, but sampling can miss rare slow reads; targeted or tail-aware sampling can be useful during diagnosis when supported. Retention should be long enough for incident comparison without wasting storage. Missing telemetry or clock skew must be treated as uncertainty, not evidence. Credentials, tokens, personal data, and sensitive payloads must be redacted.
Because the question does not provide a confirmed root cause, I would not invent a specific configuration change. After evidence confirms the fault boundary, I would apply the smallest safe correction appropriate to that evidence. Then I would rerun the same workload and trace. Success means the previously abnormal boundary returns toward the healthy baseline and end-to-end dataset-read latency returns below the defined target without new errors or throughput regressions.
Finally, I would keep dashboards for boundary latency, queues, errors, retries, throughput, and GPU transfer, and test alerts with controlled conditions so operators know the dashboard and alerting path reflects real service health. This preserves the same evidence trail for future incidents.
- Define end-to-end dataset-read latency as the main SLI and agree on the target or SLO before choosing alert thresholds.
- Reproduce one representative slow read while preserving dataset, path, batch size, worker count, concurrency, topology, and time range.
- Use synchronized timestamps and common resource attributes so application, node, network, storage, and GPU-transfer evidence can be correlated.
- Measure client queue depth, worker wait time, and per-worker read latency.
- Measure GPU-node CPU run queue, I/O wait, steal time, page-cache behavior, and major page faults.
- Measure network RTT, throughput, retransmissions or drops, and packet loss along the NIC-to-storage path.
- Separate storage metadata from data services. Measure metadata latency, operations per second, errors, and lock contention separately from data-read latency, throughput, and backend queues.
- Measure retry rate, backoffs, host-to-device transfer time, and staging-buffer waits on the return path.
- Build a timestamped latency waterfall and compare each boundary with a healthy cohort using the same path and similar load.
- Identify the first boundary where latency, queueing, errors, throughput, or utilization becomes abnormal. Treat it as the leading fault boundary, not automatically as proven root cause.
- Collect targeted evidence to validate that hypothesis and reject alternatives that remain healthy.
- Apply only the smallest evidence-supported correction.
- Rerun the same read and verify that the abnormal boundary returns toward baseline and end-to-end latency returns below the target.
- Keep dashboards and actionable alerts for the important boundary signals to detect recurrence.
The investigation adds measurement cost because timestamps, metrics, traces, operating-system signals, and GPU signals must be collected, transported, stored, and queried. High-cardinality labels can make telemetry expensive, so labels should stay bounded. Detailed tracing and eBPF collection can add overhead, so sampling and limited diagnostic windows may be needed. Sampling can miss rare slow reads, while long retention increases storage cost. Maintaining synchronized clocks, dashboards, alerts, and healthy baselines also requires ongoing operational work, but it makes future diagnosis faster and reduces unsafe configuration changes.
This question tests whether the candidate can isolate latency in a distributed AI data path without guessing. A strong answer separates client, GPU-node, network, metadata, storage-data, retry, and GPU-transfer delay; preserves timestamps and topology; compares against healthy behavior; correlates multiple signals; and validates the first abnormal boundary before changing configuration. It also tests whether the candidate understands that one metric alone does not prove root cause.
Common mistakes are blaming storage only because the symptom is called storage latency; changing configuration before collecting evidence; using only averages instead of useful percentiles; failing to separate client queueing, GPU-node delay, network delay, metadata latency, data-service latency, retries, and H2D transfer; comparing unrelated workloads instead of a healthy cohort; using unsynchronized clocks; assuming one metric proves root cause; creating high-cardinality telemetry; ignoring sampling bias, missing telemetry, or retention limits; and declaring success without rerunning the same workload and verifying both the boundary and end-to-end latency.
Present the diagnosis as a boundary-by-boundary evidence flow. Say that you will preserve timestamps and topology, compare against a healthy cohort, find the first abnormal boundary, validate it with another signal, and only then make the smallest safe change. This shows disciplined troubleshooting instead of guessing.

