KIKOMONO

HOSTING GUIDE

Check VPS disk speed before you trust the NVMe label

Webmaster Toolbox

An NVMe label tells you what kind of drive is in the machine. It does not tell you how fast your share of it is, or whether that speed survives busy hours. A five-minute disk test during the trial answers both questions — and it costs nothing except a little care about where you run it.

Check VPS disk speed: The label is not a benchmark; Test random and sequential I/O; Repeat at busy times; Read latency, not just throughput

The short answer

On a shared VPS, the drive in the sales page is not the drive you get. You get a slice of it, shared with neighbours, possibly throttled, and possibly fast only while a burst allowance lasts. The check is fio, the standard Linux disk benchmark: one random-read test with small blocks, one sequential test with large blocks, both with direct I/O so the page cache cannot flatter the result. Run each test at least twice, at different times of day, on a scratch file you delete afterwards. Compare the runs with each other before you compare them with anything else — a disk that is fast at 3 a.m. and slow at 8 p.m. is telling you about the host, not about your workload.

Do this during the trial or money-back window, on a test server or a fresh install, not on a live database. The write test writes real data, and a benchmark run on a production volume is a risk, not a measurement.

What disk speed decides — and what it does not

Disk speed decides how fast the server reads and writes when the work is actually waiting on the disk: database queries that miss the cache, image uploads, backups, log writes, and the first load of pages nothing has cached yet. It does not decide everything that feels slow. A page that waits on a slow database query, an overloaded CPU, or a far-away visitor will stay slow on the fastest drive in the world. That is why this check belongs next to the other buying checks, not instead of them: our NVMe verification guide confirms what kind of drive you were given, and our steal-time check shows whether the CPU is being lent to a neighbour. Disk speed is the third leg of the same stool.

Three numbers come out of a disk test, and they answer three different questions:

A sales page that quotes only one of these is hiding the other two. A small VPS can show a fine sequential throughput while its random IOPS collapse under a database load, and that is exactly the workload a growing site runs.

The test: two fio runs, direct I/O, scratch file only

fio is the usual tool for this, and it is in most distributions' repositories. If it is not installed, install it on the test server only — never on a live site just for a benchmark. Run both tests in an empty directory with plenty of free space, and delete the test files when you are done.

Test 1: random reads, 4K blocks — the database test

fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=1 --runtime=60 --time_based --direct=1 --group_reporting

Random 4K reads are the closest simple stand-in for database and small-file work. The --direct=1 flag is the important one: without it, Linux serves much of the test from RAM cache, and you end up benchmarking your memory, not your disk. The --size=1G file must fit comfortably in free space — on a small disk, shrink it rather than filling the volume.

Test 2: sequential writes, 1M blocks — the backup test

fio --name=seqwrite --rw=write --bs=1M --size=1G --numjobs=1 --runtime=60 --time_based --direct=1 --group_reporting

Sequential writes are the backup-and-upload test: big, orderly, and the easiest number for a drive to look good on. That is the point of running it. If even the easy test is slow, the disk is slow. If the easy test is fast and the random test is not, the disk is fine for files and weak for databases — and you now know which kind of site it suits.

After both runs, remove the test files (rm -f randread.* seqwrite.* in the test directory, or the filenames fio reports) and confirm the space is back with df -h. A benchmark that leaves a gigabyte behind on a 25 GB disk has already changed the server it measured.

Why one run lies: cache, neighbours, and burst allowances

Three effects make a single benchmark untrustworthy, and each has a different fix:

If the numbers move a lot between runs, that movement is the finding. A disk whose random-read IOPS halve every evening is not a disk you plan a growing site on, whatever its best run says.

Reading the output without a threshold table

You will not find a published "minimum acceptable IOPS" for a shared VPS plan, because providers do not promise one — and any article that prints a pass/fail line is inventing a specification nobody signed. Read the output comparatively instead:

Keep the raw output with dates and times. It is the evidence a support ticket needs ("random-read IOPS fall by half every evening, here are three days of runs"), and it is the baseline you re-run after any move, upgrade, or complaint that the server "got slower".

When the numbers say move, upgrade, or accept

Three decisions, and only three, come out of this check:

If the numbers are bad only during the trial's first hour, say so in your notes and re-test before deciding — a fresh server doing its first updates is not a fair sample. But if the pattern holds across days, trust the pattern over the sales page. The label says NVMe; the benchmark says what your share of it actually does.

Where the facts in this guide come from

Everything above is standard Linux tooling and shared-hosting behaviour, not a vendor claim: fio's flags, direct I/O, and latency percentiles are documented in its own manual, and no provider publishes a guaranteed IOPS figure for a shared plan — which is why this guide gives you a comparison method instead of a threshold table. This guide has no affiliate links — if a link ever earns anything, we will say so in the sentence that carries it. For the companion checks, see verify VPS storage is really NVMe, check CPU steal time, and what breaks first on a small VPS.