Linux Benchmarks Of NVMe SSD Performance With Varying I/O Polling Queues

Written by Michael Larabel in Linux Storage on 5 September 2019 at 09:44 AM EDT. 7 Comments
LINUX STORAGE
A Phoronix reader recently pointed out a little known kernel tunable option to adjust the number of I/O polling queues for NVMe solid-state drives that can potentially help improve the performance/latency. Here are some benchmarks from the NVMe poll_queues option.

A Phoronix Premium reader recently requested some benchmark runs with varying I/O polling queues for NVMe SSD storage. The poll_queues option adjusts the number of queues to use for polled I/O with the NVMe driver; the default is currently 0 but some recommendations put the recommended number at one queue per physical CPU core. At least in his experience, he's been tuning his systems with this option and seems to help his I/O performance but was something he hadn't actually benchmarked. Well, here are some tests but the results are a mixed bag.

Details and background information with this NVMe I/O polling testing via this forum thread. Besides Phoronix Premium
NVMe IO Queue Test

I ran some preliminary benchmarks on an Intel Core i9 7980XE workstation with a Samsung 970 EVO 500GB NVMe solid-state drive.
NVMe IO Queue Test

NVMe IO Queue Test

NVMe IO Queue Test

For program start-up time, using multiple I/O queues actually hurt the performance at least for this particular setup.
NVMe IO Queue Test

The SQLite insertion performance was also slightly higher with multiple queues.
NVMe IO Queue Test

Random read performance did help marginally with a higher number of queues.
NVMe IO Queue Test

The sequential read performance on this particular system topped out at four queues.
NVMe IO Queue Test

Sequential write also topped out at four queues.
NVMe IO Queue Test

The higher number of queues did hurt the performance in some of these synthetic benchmarks.
NVMe IO Queue Test

NVMe IO Queue Test

The BlogBench read performance did better with utilizing this tunable but the write performance only became degraded.
NVMe IO Queue Test

The results were quite mixed.
NVMe IO Queue Test

Making use of multiple I/O polling queues did help the LLVM build time by a few seconds.
NVMe IO Queue Test

NVMe IO Queue Test

NVMe IO Queue Test

Overall the results were quite mixed, but depending upon your I/O workload, it may be worth investigating the NVMe poll_queues tunable for enhancing the performance of your Linux system(s).
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week