iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
The reliable way to troubleshoot a GPU training bottleneck is to trace a representative training interval, mark where each step waits, and separate four paths: input reading and preprocessing, host-to-device transfer, remote or object-storage access, and inter-GPU communication. Then change one stage at a time and compare end-to-end step time. Low GPU utilization is a clue, not proof that storage or networking is the cause.
Why a GPU can look idle while training is slow
A training step is a pipeline, not just a GPU kernel. A batch may be read from local or shared storage, fetched from an object store, decoded and transformed on CPU workers, copied into host memory, transferred to GPU memory, processed by the model, and synchronized with other GPUs. A delay in any stage can leave the accelerator waiting, but a busy-looking storage device does not prove that storage is limiting the step.
The useful question is whether the suspected I/O occurs on the step’s critical path. NVIDIA’s GPUDirect Storage Design Guide states: “For IO to be a bottleneck, it must be on the critical path.” If computation takes substantially longer than I/O, or asynchronous reads overlap computation completely, faster storage may not change training time. Conversely, a short read or transfer can be decisive when it occurs between dependent steps.
Recommended Free Tools
The conventional path can also contain two separate transfers: storage to host memory, then host memory to GPU memory. Improving storage throughput does not automatically remove the host-to-device copy, CPU parsing, or worker scheduling overhead.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Start with a trace that represents real training
Choose a representative interval
Capture enough consecutive steps to include normal batch sizes, augmentation, checkpoint behavior, evaluation boundaries, and the usual number of workers and ranks. Avoid drawing conclusions from startup, the first cold-cache batch, or a single unusually large sample. Record the model, precision, batch size, number of GPUs, data source, worker settings, and whether the cache is cold or warm.
Use NVIDIA Nsight Systems or an equivalent framework-aware profiler. The trace should show GPU kernels and idle periods alongside CPU threads, host-to-device transfers, filesystem or object-store activity, and distributed communication. Nsight Systems documents traces for S3 activity and GPUDirect Storage cuFile calls, which can reveal when object-store transfers or GDS operations actually occur.
Mark step boundaries and waits
Identify the beginning of data preparation, the first host-to-device copy, forward and backward computation, optimizer work, and the end of each synchronized step. For each gap in GPU activity, ask what event is immediately before the gap and which CPU thread or rank is responsible. A blank GPU interval that aligns with a DataLoader worker stall means something different from a blank interval aligned with an all-reduce.
- Measure complete step time, not only kernel duration.
- Record the duration and frequency of host-to-device copies.
- Compare CPU worker activity with the time the training loop requests the next batch.
- Correlate object or network transfers with the exact steps that slow down.
- In multi-GPU jobs, compare rank progress and collective-operation intervals.
Decide whether I/O is actually on the critical path
On the timeline, an I/O operation is critical when dependent computation cannot proceed until that operation completes. An operation that overlaps a long model kernel may consume bandwidth without delaying the step. This distinction prevents expensive changes that improve a metric but leave throughput unchanged.
Evidence that I/O is critical
- GPU idle intervals begin immediately after a batch request and end when a read, decode, or copy completes.
- Step time increases when storage latency or transfer latency increases.
- Ranks reach a collective at different times because one rank is waiting for input.
- A controlled run with already available batches or synthetic data removes the delay.
Evidence that I/O is not the limiting stage
- Reads and copies finish while long GPU kernels are still running.
- Replacing real input with synthetic batches leaves end-to-end step time unchanged.
- All ranks remain synchronized while the suspected I/O has substantial idle overlap.
- Model computation dominates the step by a margin larger than the measured I/O time.
Do not set a universal GPU-utilization target. Utilization can be low because of synchronization, launch overhead, small kernels, CPU preprocessing, memory pressure, or I/O. Only a correlated timeline and a controlled comparison identify the limiting stage.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Run a controlled input-path experiment
Isolate data preparation from model computation by comparing the normal run with a controlled run that feeds already available or synthetic batches. Keep the model, optimizer, batch size, precision, number of ranks, and step count constant. This is a diagnostic experiment: it shows whether the input path matters, but it does not by itself identify which component inside that path is responsible.
- Warm up the job and exclude startup steps from the comparison.
- Run the normal dataset path for a representative interval and record end-to-end step time.
- Run the same model with preloaded batches or synthetic tensors that match the shape and device-transfer behavior of real batches.
- Compare median and tail step times, GPU idle intervals, host-to-device copies, and rank skew.
- If the controlled run is faster, reintroduce the input stages one at a time: storage reads, decoding or transforms, worker loading, and transfer.
| Controlled result | What it establishes | Next inspection |
|---|---|---|
| Preloaded or synthetic batches reduce step time | The real input path contributes to the delay | Separate reads, preprocessing, worker scheduling, and host-to-device transfer |
| Step time is unchanged | The measured input path is unlikely to be the dominant limiter for that interval | Inspect model kernels, synchronization, memory behavior, and communication |
| Only some ranks improve | Input availability or source behavior is uneven across workers or hosts | Compare per-rank reads, cache state, source latency, and worker queues |
Inspect PyTorch DataLoader behavior and host resources
When the trace points to input delivery, examine the DataLoader rather than increasing workers blindly. PyTorch’s documentation covers multiprocessing tensor-sharing strategies, file-descriptor limits, and /dev/shm requirements. These host limits can produce stalls, failures, or excessive contention even when the storage system is fast.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Change worker settings incrementally
- Record the current worker count, prefetch settings, persistent-worker setting, batch size, and transform cost.
- Increase or decrease the worker count in small steps while keeping all other settings fixed.
- Measure queue wait time, CPU utilization, memory use, open file descriptors, and complete step time after each change.
- If multiprocessing sharing is involved, test the documented sharing strategy appropriate for the deployment and check available shared memory.
- Stop when additional workers no longer reduce batch wait time or begin to increase contention.
There is no universal worker count. The useful setting depends on CPU cores, transform complexity, sample size, storage latency, process limits, and the number of training ranks. A worker configuration that helps one host can overload another.
Recognize host-side symptoms
- Workers are runnable but spend time waiting on reads or transforms.
- The training process repeatedly waits for the next batch while GPU kernels have already finished.
- Worker processes terminate, hang, or report file-descriptor or shared-memory errors.
- CPU utilization is saturated during decoding while storage and network timelines are quiet.
These symptoms point to different fixes. File-descriptor or /dev/shm exhaustion requires resource correction; CPU-bound transforms require profiling or simplification; read waits require storage or network investigation.
Separate remote storage from distributed communication
Network traffic can come from at least two unrelated paths: samples arriving from object or network storage, and collectives such as all-reduce moving gradients between GPUs. Treating both as a single “network bottleneck” leads to the wrong remedy.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
When samples come from object or network storage
Inspect source-side throughput and latency, request concurrency, file or object sizes, retries, and cache hit behavior. A high aggregate bandwidth number can hide high per-sample latency when the loader makes many small requests. Conversely, large sequential reads may have good throughput but still delay a step if the next batch cannot begin until the read completes.
Nsight Systems can show S3 activity; use those intervals to match object-store transfers with slow steps. Check whether all ranks read the same objects, whether one host has a colder cache, and whether source-side throttling or request serialization affects only some workers.
When the job is multi-GPU
For distributed CUDA training, PyTorch’s distributed documentation recommends the NCCL backend. Verify that the job is using the intended backend and that all ranks make progress through collectives. If the detected network interface is wrong, PyTorch documents NCCL_SOCKET_IFNAME as an override. Set it to the intended interface before launching the job, for example:
NCCL_SOCKET_IFNAME=<interface> python train.py
Use the actual interface name from the host; the angle-bracket form is a placeholder, not a literal value.
| Timeline symptom | Likely path to test | Useful measurement |
|---|---|---|
| One rank reaches a collective late after waiting for its batch | Input storage, preprocessing, or host transfer | Per-rank batch-ready time and read latency |
| All ranks enter a collective but some wait inside it | Inter-GPU communication or interface selection | Collective duration, rank progress, and network-interface counters |
| Object-transfer intervals coincide with batch gaps | Remote or object storage | Request latency, throughput, retries, and cache hits |
Check rank progress and network counters before changing a collective backend or blaming slow storage. A misselected interface can make communication look like an input problem, while a slow object store can make a healthy NCCL setup appear to be the cause of rank skew.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesRank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Compare the existing path with a local cache or NVMe path
A controlled local-cache comparison is often the clearest way to test whether shared or remote storage is limiting training. Copy the same dataset, shard, or sample subset to local NVMe where feasible, then run the same job with identical worker and preprocessing settings. Keep the comparison fair: use the same file sizes, access order, batch composition, and cache temperature.
Measure more than peak throughput
- Latency for the actual request size and access pattern.
- Sustained throughput during the training interval.
- Cold-cache versus repeat-read behavior.
- CPU time spent parsing, decompressing, or transforming samples.
- Host-to-device transfer time after the read completes.
- End-to-end step-time improvement, including tail steps.
NVIDIA guidance emphasizes that storage requirements depend on workload and access pattern. Caching and local storage can help when remote latency is on the critical path, but neither is a universal fix. If local NVMe changes read time without changing step time, the read was overlapped or another stage dominates.
Interpret configuration-specific numbers correctly
NVIDIA’s SuperPOD material describes a requirement of 4 GBps per GPU for the workloads in that configuration. That figure is not a universal target for every training job. Likewise, a 2019 NVIDIA experiment reported 13.3 GB/s of local NVMe I/O bandwidth and about a 10% performance improvement relative to the stated 12.0 GB/s CPU-to-GPU memory transfer rate. Those are historical, experiment-specific results, not expected current throughput or a guaranteed training gain.
| Path option | When it is worth testing | What can limit the gain |
|---|---|---|
| Existing shared or remote storage | The trace shows reads delaying batch readiness | Source latency, contention, small requests, or throttling |
| Local cache or local NVMe | Remote reads are critical and data can be staged locally | Cache misses, limited capacity, CPU parsing, or unchanged transfer time |
| GPUDirect Storage | Eligible I/O is significant and the supported path is critical | CPU parsing, unsupported filesystem or platform, or fully overlapped I/O |
Evaluate GPUDirect Storage only when the workload is eligible
GPUDirect Storage (GDS) is not a default remedy for low utilization. Its value depends on whether the supported storage-to-GPU path removes a delay that matters to the step. The application, APIs, GPU, filesystem, and platform must all support the path, and the installation must be verified before interpreting a result.
Cases where GDS may help
- Storage-to-GPU I/O is a measurable portion of critical-path step time.
- The workload can transfer data without CPU parsing or processing that still has to occur first.
- The platform, filesystem, GPU, and application interfaces are supported and correctly installed.
- Replacing the current path with the GDS path reduces complete step time in a controlled comparison.
Cases where GDS may provide little benefit
- Model computation takes much longer than the read.
- Asynchronous I/O fully overlaps computation.
- Samples require CPU decoding, parsing, or transformation before the GPU can use them.
- The bottleneck is object-store latency, DataLoader scheduling, NCCL communication, or host memory rather than the storage-to-GPU copy.
Use a baseline and a GDS-enabled run with the same data, access pattern, batch settings, and cache state. Verify cuFile activity in the trace and compare complete step time, not only the apparent removal of a host copy.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Use a one-variable-at-a-time benchmark
Once the trace identifies a plausible stage, change one variable and rerun the same representative interval. This avoids attributing an improvement to the wrong change when, for example, a worker-count adjustment also warms a cache or alters request concurrency.
- Save the baseline trace and configuration.
- Choose one intervention: a local cache, worker adjustment, sharing strategy, interface override, preprocessing change, or GDS path.
- Keep model, batch, precision, rank count, dataset order, and measurement interval constant.
- Run enough warm-up steps to establish the intended cache state.
- Compare median and tail step time, samples or steps per second, GPU idle time, host-to-device duration, read latency, and rank skew.
- Retain the change only if complete training throughput improves without unacceptable memory, CPU, reliability, or operational cost.
For repeated experiments, record whether data was read cold or warm. A local cache can appear dramatically faster on repeat reads while providing little benefit to a first-epoch workload. Similarly, a storage change that raises throughput but leaves step time unchanged is not a successful training optimization.
Decision branches for common trace patterns
GPU idle while batch preparation is late
Inspect DataLoader queues, worker CPU time, file-descriptor and shared-memory limits, and read latency. Compare synthetic or preloaded batches, then test worker settings and a local cache separately.
GPU idle during host-to-device copies
Measure copy duration and frequency, pinned-memory behavior, batch size, and whether copies overlap kernels. Faster storage will not fix a transfer bottleneck that remains after the read completes.
GPU kernels are long and I/O overlaps them
Do not optimize storage first. Confirm that replacing real input does not change end-to-end step time, then investigate model computation, memory behavior, or synchronization.
Ranks wait inside collectives
Check NCCL selection, interface detection, rank progress, and network counters. Determine whether one rank arrived late because of input or whether the collective itself is slow before changing storage settings.
Only the first pass is slow
Distinguish cold-cache population from steady-state training. Measure both deliberately and report which behavior matters to the workload; a cache that helps repeat reads may not solve first-pass latency.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Quick Recap
Common troubleshooting mistakes
- Treating utilization as a diagnosis: low GPU utilization only tells you that the GPU is not continuously busy.
- Chasing peak bandwidth: request latency, file size, concurrency, and access pattern determine whether bytes arrive in time for the next step.
- Increasing workers without measuring: extra processes can exhaust shared memory or file descriptors and compete for CPU and storage.
- Changing the distributed backend first: verify rank progress and the selected interface before attributing a stall to NCCL or storage.
- Assuming GDS removes all input overhead: CPU parsing and preprocessing can remain on the critical path.
- Comparing unmatched cache states: cold remote data versus warm local data is not a controlled comparison.
- Optimizing a noncritical stage: an I/O operation that fully overlaps computation may not affect complete step time.
- Reporting a configuration number as a universal target: the 4 GBps-per-GPU SuperPOD figure and the historical 13.3 GB/s NVMe experiment apply only to their stated contexts.
A compact checklist
- Capture a representative Nsight Systems or equivalent trace.
- Mark batch-ready, transfer, kernel, and collective intervals.
- Confirm whether suspected I/O is on the critical path.
- Compare real input with preloaded or synthetic batches.
- Inspect DataLoader workers, CPU transforms,
/dev/shm, and file-descriptor limits. - Separate object-store traffic from NCCL communication.
- Verify the NCCL backend and network interface when distributed behavior is suspect.
- Compare remote storage with a local cache or NVMe path using the same workload.
- Consider GDS only after checking platform eligibility and measured critical-path impact.
- Change one variable, rerun the same interval, and judge success by end-to-end step time.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

