If your server feels slow, measuring is how you find out whether the disk is to blame. Below are the right methods for Windows and Linux, and how to read the results.
Windows: CrystalDiskMark
CrystalDiskMark is a free tool from its official site. The default settings are enough. What the rows mean:
- SEQ1M: sequential read/write of large files. Represents backups and file copies.
- RND4K: small, scattered reads and writes. This is what actually determines database and game server performance.
If you run a database or a game server, the RND4K numbers matter more than SEQ1M.
Linux: measuring with fio
apt install fio
fio --name=test --filename=/root/testfile --size=1G --bs=4k --rw=randrw --ioengine=libaio --direct=1 --runtime=30 --group_reporting
Remember to delete /root/testfile afterwards. The --direct=1 flag stops the operating system cache from inflating the result.
A quick write check
dd if=/dev/zero of=/root/test.img bs=1M count=1024 oflag=direct
This gives a rough sequential write figure. Useful for comparison, but less realistic than fio.
Reading the results
On a virtualised server the numbers reflect the slice allocated to you, not the whole physical disk. One low result is not a reason to panic; repeat the test a few times at different hours. What really matters is whether results swing wildly over time.
Symptoms of high disk latency: slow database queries, stutter while a game server saves the world, and the site slowing down during backups.
IOPS and latency: what really matters
- Throughput (MB/s): how much data moves per second. Felt when copying large files.
- IOPS: read/write operations per second. This is what decides database and game server performance.
- Latency: how long a single request takes. Usually the real source of that "stutter" feeling.
A high MB/s figure will not save you if latency is high, so read the iops and lat lines in the fio output.
What affects the result
- Cache: without
--direct=1the operating system cache inflates the numbers. - Test size: files smaller than RAM end up in cache; use at least 1 GB.
- Concurrent load: results are lower while other work runs. Repeat the test at a quiet hour.
Test at the right time, in the right order
- Stop heavy jobs on the server (backups, updates, bulk imports).
- Repeat the test at least three times at different hours and look at the average.
- Write the results down so you have a baseline when something slows down later.
- Delete the test files; a forgotten 1 GB file wastes disk space.
When comparing servers, use identical parameters. Two results taken with different block sizes or cache settings cannot be compared.
When is it the disk, and when is it not?
Disk trouble shows up as the whole site slowing while a backup runs, database writes taking longer, or a game server freezing during a world save. If page generation is slow but the disk test looks normal, the bottleneck is more likely your application code or the CPU. Measure before you change anything.
IOPS and latency: what really matters
- Throughput (MB/s): how much data moves per second. Felt when copying large files.
- IOPS: read/write operations per second. This is what decides database and game server performance.
- Latency: how long a single request takes.








