TQ
dev.com

Blog about software development

Subscribe

Check your NMVe drive I/O latency, disable APST

30 Aug 2025 - by 'Maurits van der Schee'

I've got a ADATA SX8200PNP (XPG SX8200 Pro PCIe Gen3x4 M.2 2280 2TB NMVe) and it is not as performant as I would like. I've found this out by running a simple I/O ping test (using the "ioping" tool). In this post I'll explain how you can do this test to see whether or not you are affected as well and what you can do to make your SSD 5-10x more responsive.

Test your NMVe latency

First we install the test tool:

sudo apt install ioping

Now run:

ioping -c 10 /tmp

You should see something like this:

4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=1 time=97.9 us (warmup)
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=2 time=337.5 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=3 time=394.8 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=4 time=329.8 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=5 time=251.2 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=6 time=407.1 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=7 time=376.4 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=8 time=387.8 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=9 time=353.4 us
4 KiB <<< /tmp (ext4 /dev/dm-1 1.79 TiB): request=10 time=366.5 us

--- /tmp (ext4 /dev/dm-1 1.79 TiB) ioping statistics ---
9 requests completed in 3.20 ms, 36 KiB read, 2.81 k iops, 11.0 MiB/s
generated 10 requests in 9.00 s, 40 KiB, 1 iops, 4.44 KiB/s
min/avg/max/mdev = 251.2 us / 356.1 us / 407.1 us / 44.3 us

If you see times above 1 ms (milliseconds = 1000 us) then something is wrong. I had times reported of 2.8 ms before I applied the fix below. If your times are under 1 ms then they are okay. I have seen some very fast NVMe drives report about 200 us on average.

Improve your NMVe latency

Edit the grub config:

sudo nano /etc/default/grub

Now add "nvme_core.default_ps_max_latency_us=0" to end of default kernel line. Change this line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

into the following:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=0"

Save the file and exit and run the following command to make the configuration effective:

sudo update-grub

Now reboot. After rebooting you will see that the I/O ping test reports lower latency.

Enjoy!

Links


PS: Liked this article? Please share it on Facebook, Twitter or LinkedIn.