Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

Start with the workload, not the storage device. A busy SSD, a low GPU-utilization sample, or a promising GPUDirect Storage (GDS) setting does not by itself prove that storage is limiting training or inference. Storage is the bottleneck only when data movement constrains useful accelerator work on the critical path.

Establish a repeatable workload baseline, determine whether input or output transfers overlap with computation, then correlate application timing with GPU, CPU, storage, network and PCIe-path measurements. Map the physical route from drive or storage service to the accelerator, benchmark the relevant subsystem with representative requests, and change one supported variable at a time. Consider GDS only when the application and platform meet its direct-I/O requirements.

1. Prove that data movement is on the critical path

NVIDIA’s GPUDirect Storage Design Guide states the central rule: “For IO to be a bottleneck, it must be on the critical path.” In practical terms, faster storage can improve results only when the workload must wait for that storage or for processing immediately around it. If compute dominates, or asynchronous reads are completely hidden behind GPU work, a faster drive and GDS may produce little or no application-level gain.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Define the symptom and capture a baseline

Write down exactly what is slow and when it is slow. Record the model and count of accelerators, dataset location, filesystem or protocol, CPU and memory configuration, storage devices, network path, driver and CUDA/GDS versions, and the software commit or container image. Capture a stable run with the same dataset, batch size, worker count, cache state and system load that you will use for comparisons.

#1 Best Overall
Sale
Samsung SSD 990 PRO 2TB, PCIe 4.0 M.2 2280, Up to 7,450 MB/s | NVMe Internal Solid State Hard Drive for High End Computing, Gaming, and Heavy Duty Workstations, (MZ-V9P2T0B/AM)
  • MEET THE NEXT GEN: Consider this a cheat code; Our Samsung 990 PRO Gen4 SSD helps you reach near max performance with lightning-fast speeds; Whether you’re a hardcore gamer or a tech guru, you’ll get power efficiency built for the final boss
  • REACH THE NEXT LEVEL: Gen4 steps up with faster transfer speeds and high-performance bandwidth; With a more than 55% improvement in random performance compared to 980 PRO, it’s here for heavy computing and faster loading
  • THE FASTEST SSD FROM THE WORLD'S FLASH MEMORY BRAND: The speed you need for any occasion; With read and write speeds up to 7450/6900 MB/s you’ll reach near max performance of PCIe 4.0 powering through for any use
  • PLAY WITHOUT LIMITS: Give yourself some space with storage capacities from 1TB to 4TB; Sync all your saves and reign supreme in gaming, video editing, data analysis and more
  • IT’S A POWER MOVE: Save the power for your performance; Get power efficiency all while experiencing up to 50% improved performance per watt over the 980 PRO; It makes every move more effective with less consumption
  • Training: time per step, examples per second, tokens per second, data-loader wait time and the point at which the slowdown begins.
  • Inference: request throughput, average and tail latency, batch composition, queueing delay and whether the model is already resident in accelerator memory.
  • Data preparation: time spent reading, decoding, parsing, augmenting, shuffling and staging each batch.
  • Storage behavior: cold-cache startup versus steady-state operation, sequential versus random access, read/write mix, request size and concurrency.

Run enough iterations to separate startup effects from steady state. A first epoch may include filesystem and page-cache warming that does not represent later epochs. Conversely, a long run can expose thermal throttling, cache exhaustion or shared-storage contention that a short benchmark misses.

Compare transfer time with compute time

Use the application timeline or profiler to mark when a batch is requested, when bytes arrive, when preprocessing completes and when the accelerator launches useful kernels. If the GPU is idle while the next batch is unavailable, data movement may be on the critical path. If the GPU continues executing while transfers occur and the next batch is ready before the current kernels finish, the I/O is overlapped and may not limit throughput.

Do not infer a bottleneck from one low utilization sample. A model can show low average GPU utilization because its kernels are short, synchronization is frequent, or CPU preprocessing is serial. Conversely, a GPU can remain highly utilized while a storage subsystem is saturated if buffering and prefetching successfully hide the latency. The decisive evidence is temporal alignment between a loss of application progress and a constrained data path.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

2. Observe every layer during the same interval

Collect application timing, accelerator telemetry, CPU activity, storage statistics and network counters together. Measurements taken in different runs cannot reliably explain one another.

Application and accelerator evidence

  • Mark batch boundaries, data-loader waits, host-to-device copies and accelerator kernel intervals in the application trace.
  • Record per-step or per-request throughput and latency, not only a process-wide average.
  • Use nvidia-smi for a quick view of GPU utilization, memory use, power and clocks. For fleet or time-series collection, use NVIDIA Data Center GPU Manager (DCGM) through dcgmi.
  • Correlate CPU utilization, run-queue pressure, memory bandwidth and context switches with periods of missing or late data. A CPU saturated by parsing or decompression can make storage appear slow even when the device is delivering bytes promptly.

Storage and network evidence

On Linux, collect device-level counters with iostat while the workload is running. Examine read and write bandwidth, operations per second, request size, queue depth, utilization and await or equivalent latency fields. For remote storage, add NIC throughput, packet rates, retransmissions, errors, link speed and fabric or storage-service counters where available. A low device-utilization value is not proof of spare capacity if the application is issuing tiny requests, waiting on metadata or limited by a higher layer.

GDS-specific evidence

NVIDIA’s GPUDirect Storage Benchmarking and Configuration Guide recommends combining gds_stats with Linux iostat and GPU tools. GDS statistics are disabled by default. Enable the documented profile:cufile_stats setting in /etc/cufile.json, then collect statistics for the test interval and restore your normal configuration when profiling is complete.

Use gds_stats to determine whether the application is making cuFile operations, their sizes and rates, and whether a direct path is actually being exercised. A configuration flag alone does not prove that transfers are bypassing a CPU staging buffer. Check the installed GDS release documentation for the exact commands and fields because availability and output vary by version.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Kingston NV3 1TB M.2 2280 NVMe SSD | PCIe 4.0 Gen 4x4 | Up to 6000 MB/s | SNV3S/1000G
  • Ideal for high speed, low power storage
  • Gen 4x4 NVMe PCle performance
  • Up to 6,000MB/s read, 4,000MB/s write
  • Includes Acronis cloning software
  • 5-year limited warranty

Build a synchronized timeline

Put all observations on one time axis. A useful timeline answers questions such as:

  • Does storage or network throughput fall exactly when accelerator idle gaps appear?
  • Does CPU utilization or memory traffic spike before each late batch?
  • Does the GPU remain busy while storage is saturated, indicating successful overlap?
  • Do queue depth and latency rise when another job starts, indicating shared-resource contention?

Treat these correlations as leads, not proof. Confirm a suspected layer by changing one relevant variable and observing whether the original workload metric changes in the predicted direction.

3. Map the physical and software route

Throughput and latency are determined by the slowest or most contended part of the route, not by the peak specification of one component. Draw the path for each storage target and mark every boundary.

Local-drive path

For local NVMe or other PCIe storage, document the drive count and model, negotiated link width and generation, PCIe switches, CPU root complex, socket or NUMA node, and the accelerator’s own PCIe placement. Confirm the negotiated state rather than assuming the slot’s advertised maximum. Multiple drives can share an uplink or switch, and a root-complex or socket crossing can add contention or latency.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

NVIDIA’s design documentation gives a platform-specific example in which at least four x4 PCIe drives are needed to saturate a x16 PCIe link. That is a design illustration, not a universal sizing rule: the result depends on drive behavior, protocol overhead, workload concurrency and the rest of the server topology. The design guide and configuration guide describe why placement, switches and root complexes affect delivered GDS throughput and latency.

Network-storage path

For a remote filesystem or storage service, include the storage server or appliance, filesystem and protocol, client NIC, network or fabric, NIC-to-CPU path, NIC-to-accelerator path, PCIe switches and any socket or NUMA crossings. Check whether the link is dedicated or shared and whether multiple accelerators compete for one NIC or uplink.

Path segment What to verify Typical limiting signal
Drive or storage service Media saturation, queue depth, service time, cache state and contention from other clients High device latency or service time while requests are outstanding
PCIe link or switch Negotiated generation and width, shared uplinks, error counters and aggregate traffic Several devices together approach an uplink limit while each device appears below its peak
CPU or NUMA boundary Socket placement, memory locality, CPU parsing and copy activity High CPU time, remote-memory traffic or late batches despite available device bandwidth
NIC and fabric Link rate, congestion, retransmissions, packet errors and shared traffic Throughput collapse or tail latency increase under concurrent load
Filesystem and protocol Supported direct-I/O mode, metadata behavior, locking and mount options Small-request or metadata waits, or fallback to buffered I/O
Application path Request size, worker count, prefetch depth, parsing and buffer ownership Idle gaps with low storage utilization or excessive CPU preparation time

Check the application’s data path

Trace who touches the bytes before and after accelerator computation. CPU-side parsing, decompression or augmentation may be the real limit. Pageable host memory, implicit copies, memory mapping with migration faults, unsupported filesystems or a fallback library path can prevent the intended direct transfer. GDS guidance is most favorable when transfers are explicit, GPU buffers are pinned, and the GPU is the first or last agent touching the data for the relevant operation.

Rank #3
Sandisk Optimus 5100 500GB NVMe SSD, PCIe 4.0, M.2 2280 | Up to 6,600MB/s Read Speeds, Up to 5,600MB/s Write Speeds, Internal Solid State Drive - SDSP51500GAN
  • SPEED UP PROJECTS. Launch creator applications fast with uncompromising PCIe 4.0 read speeds up to 7,100MB/s,[2] (1TB and 2TB[1] models) and write speeds up to 6,700MB/s[2] (1TB[1]-4TB[1] models).
  • CREATE AND STORE MORE. Make more room for your 4K videos and high-resolution images with capacities from 500GB[1] up to 4TB[1] on M.2 2280 built with our trusted 8th generation SANDISK BiCS QLC 3D CBA NAND.
  • IT GOES WHERE YOU GO. With an all-new power efficient design, your drive delivers high performance with low power, giving you more time to be productive while on the go.
  • UNCOMPROMISED RELIABILITY. With up to 1,200 TBW[3] (4TB[1] model) endurance rating, your drive is designed for creators.
  • KEEP YOUR DRIVE UPDATED. Monitor your SSD’s performance and check for updates with the downloadable SANDISK Dashboard application.[5]

4. Use profilers and targeted tools

Nsight Systems timeline

NVIDIA Nsight Systems can place application, CPU, accelerator and GDS activity on one timeline. The user guide documents GDS API tracing and the --gds-metrics option; support depends on the installed Nsight Systems, CUDA and GDS versions. Capture a short representative interval rather than an unbounded trace, and verify that the trace includes the processes and APIs you intend to inspect.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Subsystem counters

Use iostat for local block devices, nvidia-smi or dcgmi for accelerator telemetry, and the storage or fabric provider’s counters for remote systems. The GDS configuration guide’s vocabulary—throughput, IOPS, latency, queueing and path topology—helps keep measurements comparable. Record units, sampling interval and whether values are averages or maxima.

GDS benchmark utility

When GDS is installed and supported, use gdsio to measure the direct-I/O path. Keep the test target, data size, block size, read/write ratio, queueing and concurrency close to the application’s behavior. A synthetic result demonstrates what a path can deliver under those test conditions; it does not demonstrate that the application will improve. Always return to the original training or inference run after the benchmark.

5. Benchmark components, then validate the real workload

Benchmark in layers so that each result answers a specific question:

  1. Measure the baseline workload. Save throughput, step or request latency, accelerator idle time and representative telemetry.
  2. Test the storage layer. Use fio or an equivalent storage tool for local devices, matching block size, concurrency, access pattern and cache state. For GDS paths, use gdsio where supported.
  3. Test the network layer. Measure the relevant link and protocol path with an approved network or filesystem test while observing NIC and fabric counters.
  4. Compare with hardware limits. Account for negotiated PCIe width and generation, shared uplinks, protocol overhead, drive count, queue depth and the storage service’s limits. Do not compare a sequential, high-queue-depth result with a small random-read workload.
  5. Re-run the application. Keep the dataset, software, batch size, worker count and system state constant. Measure examples or tokens per second, training-step time, inference throughput and tail latency.

Use representative data sizes. A test that fits entirely in a page cache can report an impressive number while the production job repeatedly reads uncached data. Conversely, a test that bypasses the application’s parser or decompressor can hide CPU work that remains on the critical path.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

6. Decide whether GPUDirect Storage fits

GDS provides a direct DMA path between supported storage and GPU memory that can avoid a CPU bounce buffer. That architectural advantage matters only when the workload and platform can use it.

Suitability checklist

  • I/O occupies a meaningful part of the critical path rather than being fully hidden by computation.
  • The application performs explicit transfers using supported cuFile APIs or a supported integration.
  • The target accelerator, CUDA/GDS release, filesystem and storage path are supported together.
  • GPU destination or source buffers meet the pinned-memory requirements for the operation.
  • CPU parsing, decompression or transformation does not have to occur between storage and the GPU in a way that forces a CPU staging path.
  • The expected benefit is measured in the real workload, not inferred from a setting or a synthetic peak.

If the workload requires substantial CPU processing before the bytes can be used, GDS may remove one copy while leaving the dominant work untouched. If asynchronous transfers are already hidden behind compute, reducing transfer overhead may not alter step time. Consult the release-specific installation and troubleshooting material for your operating system, GPU, filesystem and CUDA/GDS version; do not assume that a command or option from another release applies unchanged.

Rank #4
Sale
Samsung SSD 990 PRO 1TB, PCIe 4.0 M.2 2280, Up to 7,450 MB/s | NVMe Internal Solid State Hard Drive for High End Computing, Gaming, and Heavy Duty Workstations (MZ-V9P1T0B/AM)
  • HUGE SPEED BOOST: Get random read/write speeds that are 40%/55% faster than 980 PRO; Experience up to 1400K/1550K IOPS, while sequential read/write speeds up to 7,450/6,900 MB/s reach near the max performance of PCIe 4.0*
  • BREAKTHROUGH POWER EFFICIENCY: Use less power and get more performance; Enjoy up to 50% improved performance per watt over 980 PRO, plus optimal power efficiency with max PCIe 4.0 performance**
  • SMART THERMAL CONTROL: Samsung's own nickel-coated controller delivers effective thermal control; With its slim size, 990 PRO is a perfect fit for desktops and laptops that meet the PCI-SIG D8 standard***
  • THE CHAMPION MAKER: Up to 65% improvement in random performance enables faster loads for an ultimate gaming experience on PS5 and DirectStorage PC games****
  • SAMSUNG MAGICIAN SOFTWARE: Get the most out of your SSD with Samsung Magician's advanced yet intuitive optimization tools; Monitor drive health, protect valuable data, and receive important updates for your 990 PRO

Verify the path instead of trusting configuration

After installation, run the documented checks, inspect cuFile and GDS statistics, and capture a profiler trace. Confirm that operations are issued as expected, that the target filesystem is supported, and that the measured path reaches the intended GPU memory. A successful library initialization message is not evidence that every application transfer uses GDS.

7. Change one variable at a time

Use the measurements to choose the next experiment:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Evidence Next controlled test
Small requests and low device utilization, with CPU time high in parsing or decoding Batch or coalesce requests, adjust worker and prefetch settings, and profile the parser before replacing storage.
Storage device latency and queue depth rise during accelerator idle gaps Test a faster or less contended device, more parallel devices, or a different request pattern while preserving the workload.
Several devices saturate a shared PCIe uplink Move devices or accelerators to a topology with adequate lanes and switches, then repeat the same benchmark.
NIC or fabric counters show congestion or retransmissions Test a less contended link, correct errors or adjust placement and concurrency with the network owner.
GPU is busy while storage is active and application throughput is unchanged Do not tune storage solely because it is busy; investigate compute, synchronization or another stage.
GDS statistics show fallback or no expected cuFile activity Check API usage, filesystem support, buffer registration, library versions and the application’s actual data path.

Retain the baseline, make one change, repeat the measurement and keep the change only if the application metric improves without unacceptable latency, reliability or operational cost. If multiple settings change together, you lose the ability to attribute the result.

Be conservative with system settings

The GDS configuration guide recommends defaults for several settings unless a storage provider recommends otherwise or testing demonstrates a benefit. The GPUDirect Storage Best Practices Guide, release v1.19.1, documents system-level considerations such as Access Control Services (ACS) and IOMMU. Requirements are platform- and version-specific. Verify the server vendor’s instructions, security policy and rollback procedure before changing firmware, kernel or I/O-isolation settings.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

8. Compare storage options by workload fit

There is no universal drive or storage-system winner established for every accelerator workload. Compare a candidate against the path and access pattern you actually operate.

Decision axis Questions to answer
Throughput and IOPS What sustained bytes per second and operations per second are delivered at the application’s request size, concurrency and read/write mix?
Latency What are average and tail latencies under realistic load, not just an idle-device measurement?
Topology Are enough PCIe lanes available? Are switches, root complexes, sockets and NICs placed to avoid shared bottlenecks?
Access pattern Is the workload sequential streaming or many small requests? How much data is reused, cached or preprocessed?
Scale and capacity How large is the dataset, how many accelerators will share it, and how will demand grow?
Software fit Are the filesystem, protocol, drivers, CUDA/GDS release and monitoring tools supported together?
Application impact Does the change reduce step time or tail latency and increase examples or tokens per second in the real job?

For local NVMe storage, confirm server form factor, interface generation, firmware, endurance rating and lane allocation before purchase or deployment. A faster individual drive cannot overcome a saturated shared link, CPU preprocessing, a filesystem limitation or a remote-storage bottleneck.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

9. Common misleading diagnoses and recovery steps

“The GPU is only 40% utilized, so storage is slow.”

Check the timeline first. Low utilization may result from synchronization, small kernels, CPU preprocessing, model imbalance or insufficient parallelism. If storage throughput is low during the idle gaps, test request batching and prefetching as well as the storage path.

Best Value
WD_Black SN7100 1TB NVMe SSD - Gen4 PCIe, M.2 2280, Up to 7,250 MB/s Read Speed, Up to 6,900 MB/s Write Speed, Next Gen TLC 3D NAND, for Laptops, Handheld Gaming Devices - WDS100T4X0E
  • This product has been replaced by our latest generation. Please search for the SANDISK Optimus GX 7100 NVMe SSD
  • HIGH-OCTANE GAMING. Experience speeds up to 7,250MB/s read and 6,900MB/s write (1-2TB models), with up to 35% faster performance than previous generation.
  • PURPOSE-BUILT. Designed for serious on-the-go gamers, with a PCIe Gen4 interface and SANDISK’s next generation TLC 3D NAND.
  • MORE TIME TO CLEAR THAT CHECKPOINT. Built with laptops and handheld gaming devices in mind, with up to 100% more power efficiency over the previous generation.
  • DO MORE WITH DASHBOARD. Ensure your drive is optimized for prime performance with the downloadable WD_BLACK Dashboard (Windows only).

“The SSD is at 100% utilization, so it is the cause.”

Determine whether that utilization coincides with late batches and reduced application progress. A device can be fully occupied while buffering hides its latency, or it can report low utilization while the application waits on metadata or tiny synchronous requests. Compare queueing, latency and workload throughput together.

“Enabling GDS made the path direct.”

Verify cuFile operations, supported filesystem and buffers with GDS statistics and a profiler. Check for fallback copies, unsupported calls and CPU processing that still intervenes. If the workload is compute-dominated or fully overlapped, a verified direct path may still show no measurable speedup.

“A synthetic benchmark proves the upgrade will help.”

Match the benchmark’s request size, queue depth, concurrency, cache state and read/write mix to production, then rerun the original application. Treat peak figures as capability boundaries, not promised training or inference performance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Changing every tuning knob will find the answer faster.”

Restore defaults, document the baseline and test one supported variable at a time. Include rollback steps for firmware, kernel, mount, topology and GDS configuration changes. Keep only changes that improve the application metric and remain stable under representative load.

10. A repeatable incident checklist

  1. Describe the workload, dataset, access pattern, accelerator count and exact symptom.
  2. Capture a stable cold-cache and steady-state baseline with application-level throughput and latency.
  3. Determine whether transfer or preparation time creates accelerator idle gaps or late requests.
  4. Collect synchronized application, GPU, CPU, storage and network telemetry.
  5. Map drives, NICs, PCIe links, switches, root complexes, NUMA boundaries and filesystem paths.
  6. Benchmark the suspected layer with representative data, request sizes and concurrency.
  7. Check GDS suitability and verify actual cuFile/direct-path activity before attributing a result to GDS.
  8. Change one supported variable, repeat the workload and compare against the saved baseline.
  9. Record the measured outcome, side effects, configuration and rollback procedure.

For broader architectural context on storage tiers and data movement in AI systems, see NVIDIA’s “Tips on Scaling Storage for AI Training and Inferencing.” The practical answer for a particular server still comes from synchronized measurements of that server and its representative workload.

Bottom line

Diagnose outward from useful work: prove that data movement is blocking progress, observe every layer on one timeline, map the physical route, benchmark the suspected component and validate one controlled change in the real application. GDS is a targeted optimization for supported, I/O-bound paths—not a general cure for low accelerator utilization. When measurements point to CPU preparation, PCIe topology, network contention, filesystem behavior or request shape, fix that layer instead of replacing storage by assumption.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.