Measuring storage and IOPS performance means quantifying how many input/output operations a storage device can handle per second, along with the latency and throughput of those operations. You typically run a benchmarking tool that issues a controlled workload against the drive and reports the resulting IOPS, latency, and bandwidth. This article explains what IOPS is, how it is measured, what tools are used, and how to interpret the results.
What Is IOPS and Why Does It Matter?
IOPS stands for Input/Output Operations Per Second. It is a count of how many read or write commands a storage device can complete in one second. Each operation is a discrete request to read or write a block of data, and the size of that block is usually fixed during a test (commonly 4 KB, 8 KB, or 16 KB). IOPS is a key metric for workloads that involve many small, random accesses—like databases, virtual machines, and email servers—where the drive must handle a high number of requests rather than a few large sequential transfers.
However, IOPS alone does not tell the whole story. Two drives can both report 100,000 IOPS, but if one has an average latency of 0.5 ms and the other 5 ms, the user experience will be very different. Latency (the time to complete a single operation) and throughput (the amount of data transferred per second, usually in MB/s or GB/s) are equally important. A complete performance picture includes all three: IOPS, latency, and throughput.
How IOPS Is Measured
IOPS is measured by running a synthetic benchmark that sends a series of read or write requests to the storage device and records how many complete within a second. The test is typically characterized by:
- Block size: The size of each I/O request, often 4 KB for random tests and 128 KB or 1 MB for sequential tests.
- Queue depth: The number of outstanding I/O requests at any moment. A higher queue depth allows the device to reorder and pipeline operations, which usually increases IOPS but can increase latency.
- Read/write mix: The percentage of reads versus writes. Many workloads are read-heavy (e.g., 70% read, 30% write), but some are write-heavy.
- Access pattern: Random or sequential. Random access means the requests hit scattered locations on the disk; sequential access means they are contiguous.
For example, a common test is “4 KB random read, queue depth 32.� This simulates a database server reading small chunks of data with many concurrent requests. The benchmark tool will report the average IOPS, the average latency, and sometimes the 99th percentile latency (the worst-case latency that 99% of requests fall under).
Common Benchmark Tools
Several free and widely used tools can measure storage performance. The choice depends on your operating system and what you want to test.
- fio (Flexible I/O tester): A command-line tool for Linux, but also available on Windows and macOS. It is extremely flexible and can simulate almost any workload. You can specify block size, queue depth, read/write mix, and duration.
- Iometer: An older but still used tool for Windows and Linux. It provides a graphical interface and can test both local disks and network storage.
- CrystalDiskMark: A simple Windows tool that runs a few preset tests (sequential and random, various block sizes) and displays the results in a clear table. It is great for a quick check.
- dd: A Linux command that can measure sequential write and read throughput, but it does not provide IOPS or latency for random access.
- hdparm: A Linux utility that can measure read speed and set drive parameters, but it is not a full benchmark.
When using these tools, it is important to test the drive as it will be used in practice. For example, if you are running a database, test with 8 KB or 16 KB block sizes and a queue depth that matches your application’s concurrency. If you are editing large video files, test sequential throughput with large blocks.
How to Read and Compare Results
Benchmark results are usually presented as a table or a graph. The key numbers to look at are:
- IOPS: The higher the better for random-access workloads. A typical SATA SSD might achieve 50,000–100,000 IOPS, while a high-end NVMe SSD can exceed 500,000 IOPS.
- Latency: Lower is better. Average latency for a good SSD is under 1 ms for random reads; for HDDs it is usually 5–15 ms.
- Throughput: For sequential transfers, this is the most important number. A SATA SSD might do 500–550 MB/s, while an NVMe SSD can do 3,000–7,000 MB/s.
When comparing drives, make sure the test parameters are identical. A drive that scores 100,000 IOPS at queue depth 32 may only score 20,000 at queue depth 1. Similarly, 4 KB random reads are very different from 1 MB sequential reads. Always check the test conditions before drawing conclusions.
Another important point is that the numbers reported by a benchmark are the maximum the drive can do under ideal, synthetic conditions. Real-world performance is influenced by the file system, the controller, the CPU, and the specific access pattern of your application. A drive that shines in a benchmark may not feel faster in everyday use if your workload is not demanding.
Factors That Affect IOPS Performance
Several hardware and software factors influence the IOPS a storage system can deliver:
- Drive type: HDDs have moving parts and typically deliver 100–200 IOPS. SATA SSDs are much faster, and NVMe SSDs are the fastest, using the PCIe bus directly.
- Interface: SATA III has a theoretical limit of 6 Gb/s (about 550 MB/s), which caps throughput but not necessarily IOPS. NVMe over PCIe can handle much higher throughput and queue depths.
- Queue depth: The ability to handle many simultaneous requests is crucial for high IOPS. NVMe supports queue depths up to 65,535, while SATA is limited to 32.
- Controller and firmware: The drive’s controller processes commands and manages the NAND flash. A better controller can improve latency and sustained performance.
- File system and OS: The file system adds overhead, and the OS scheduler can affect how requests are batched. Some file systems are optimized for high IOPS (e.g., XFS, ZFS).
- Over-provisioning: SSDs have spare NAND blocks for wear leveling and garbage collection. More over-provisioning can improve sustained IOPS, especially for writes.
For example, a SATA SSD with a good controller might sustain 80,000 random read IOPS, but if the drive is nearly full, performance can drop because the controller has fewer free blocks to work with. Similarly, a RAID array of HDDs can increase IOPS by striping across multiple disks, but the controller and cache play a big role.
Common Mistakes in Measuring IOPS
Many users misinterpret or mis-measure IOPS. Here are the most frequent pitfalls:
- Using the wrong block size: If you test with 1 MB blocks, you are measuring throughput, not IOPS. IOPS is meaningful for small blocks (4–16 KB).
- Ignoring queue depth: A test at queue depth 1 will show low IOPS but very low latency. A test at queue depth 64 will show high IOPS but higher latency. Neither is “correct�—it depends on your workload.
- Testing a full drive: A drive that is almost full will perform worse than an empty one, especially for writes. Always test with a realistic free space.
- Not warming up: Some drives have a cache that makes the first few seconds look great. Run the test long enough (e.g., 60 seconds) to get steady-state results.
- Confusing MB/s with IOPS: They are related: IOPS × block size = throughput (in bytes/s). For example, 100,000 IOPS × 4 KB = 400,000 KB/s = ~390 MB/s. If you see a high MB/s number, it may be from sequential transfers, not high IOPS.
Another misconception is that higher IOPS always means better performance. For a single-user desktop, a drive with 50,000 IOPS and 0.1 ms latency will feel snappier than one with 200,000 IOPS but 2 ms latency. The latter may be better for a server with many concurrent requests, but for interactive use, latency matters more.
How to Choose the Right Measurement for Your Needs
To get useful performance numbers, start by defining your workload:
- For a database or virtual machine host: Run random read/write tests with block sizes of 4–16 KB and queue depths of 16–64. Look at both IOPS and latency, especially the 99th percentile.
- For video editing or large file transfers: Run sequential read/write tests with block sizes of 128 KB–1 MB. Focus on throughput (MB/s).
- For a general-purpose desktop: A mix of random and sequential tests will give a balanced view. CrystalDiskMark’s default settings are a good starting point.
When you run the test, make sure the drive is not the system drive (if possible) and that no other heavy processes are running. Close background apps, and use a tool that can pin the test to a specific drive. Also, consider testing with different queue depths to see how the drive scales. A drive that performs well at queue depth 1 but poorly at 32 may not be suitable for a busy server.
Frequently Asked Questions
What is a good IOPS number for an SSD?
For a SATA SSD, a good random read IOPS is around 50,000–100,000. For an NVMe SSD, expect 200,000–500,000 or higher. However, the “good� number depends on your workload. A database server might need 100,000 IOPS, while a home PC might be fine with 20,000.
Does IOPS matter for gaming?
For gaming, IOPS is less critical than for servers. What matters more is low latency and high sequential throughput for loading large game assets. A fast NVMe SSD with 50,000 IOPS will load games faster than an HDD with 200 IOPS, but beyond that, the difference is small.
How do I convert IOPS to MB/s?
Multiply IOPS by the block size in bytes. For example, 100,000 IOPS × 4,096 bytes = 409,600,000 bytes/s ≈ 390 MB/s. This is the theoretical throughput if all operations are that block size.
Why does my SSD show lower IOPS than advertised?
Advertised numbers are often measured with the best-case parameters (e.g., queue depth 32, 4 KB reads, empty drive). Your real-world workload may have different block sizes, a mix of reads and writes, or a nearly full drive, all of which lower performance. Also, the test tool may not be configured to match the manufacturer’s conditions.
What is the difference between IOPS and latency?
IOPS is the number of operations per second, while latency is the time it takes for one operation to complete. They are related: if a drive has an average latency of 1 ms, the theoretical maximum IOPS is 1,000 (since 1 second / 0.001 seconds = 1,000). In practice, drives can achieve higher IOPS by processing multiple requests concurrently.
Can I measure IOPS on a network drive?
Yes, you can run benchmark tools against a network share, but the results will be limited by the network bandwidth and the server’s performance. Tools like fio and Iometer can test network drives, but you should also measure network latency separately to understand the bottleneck.
Related
Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.
More cards in this drawer
- Word Select Last Line in Paragraph?
- Google Assistant IFTTT Recipes: 7 Useful Automations
- OLED TVs in Dark Rooms: Why They Look Better and When They Don’t
- Philips DST7060/20 7000 Series Iron: Specs & Fit
- Coal Fueled Jet Aircraft: Could It Work?675 L
- Remote Desktop on Raspberry Pi: How to Enable It