KDiskMark is a free and open source alternative to CrystalDiskMark (which is Windows only) for Linux, a GUI HDD / SSD benchmarking software.
KDiskMark comes with a simple user interface, very similar to the one used by CrystalDiskMark, with presets. Under the hood, it uses FIO (Flexible I/O Tester), and it features configurable block size, queues, and threads count for each test. The application can also generate benchmark reports (
File -> Save) that you can use to easily share the benchmark results with others, and for future comparisons.
Despite its name (starting with K), this Qt5 application does not have any KDE-specific dependencies, so you can install it no matter what desktop environment you’re using without having to install a large number of dependencies.
It’s also worth noting that even though the latest KDiskMark version at the time I’m writing this article is 1.6.2, the application is quite new, having its initial release in the beginning of July 2020.
When you first run the application you’ll notice an interface similar to CrystalDiskMark, with 4 disk benchmarking tests, each with read and write columns. To get started, select the disk from the top drop-down (it defaults to the disk holding your home directory), then click on
All to perform all the available tests. You may also click on a specific test on the left-hand side, to only perform that test (e.g. click on
So what are those letter and numbers shown on the buttons on the left-hand side of KDiskMark? Let’s take the first test:
SEQ1MQ8T1 as an example. Here,
SEQ means sequential, followed by the block size (
Q means queues and it’s followed by the number of queues (
T means threads and it’s followed by the number of threads used by the test (
1 in this example).
RND means that test measures the random performance instead of sequential. This information is also shown in a tooltip, when hovering your mouse over those buttons.
These block sizes, queues and threads can all be changed from the KDiskMark options:
Settings -> Queues & Threads. From the
Settings menu you can also change the interval time for individual tests.
Let me also mention what all the fields above the tests do, since the application lacks any information about them. To the right of the
All button you’ll see a number that you can change (5 by default) – this is the number of tests to perform. To the right of this is the test size (1 GiB by default), which can be changed to a value up to 64 GiB, or as small as 16 MiB. Here it’s worth noting that you should pick a small size for low speed storage, like an USB stick. After this, to the right comes the drive that you want to test (defaults to the drive where your home folder is located), followed by the test unit, which defaults to MB/s, but you can also use GB/s, IOPS or μs (average latency).
You may also notice that KDiskMark has a
Profile menu that doesn’t do anything. That’s because profiles support has not yet been implemented, but it’s expected in a future release. Windows compatibility is also on the to-do list.
This is how a report generated by KDiskMark looks:
KDiskMark (1.6.2): https://github.com/JonMagon/KDiskMark
Flexible I/O Tester (fio-3.16): https://github.com/axboe/fio
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes
Sequential 1 MiB (Q= 8, T= 1): 465.477 MB/s [ 454.6 IOPS] < 15914.30 us>
Sequential 1 MiB (Q= 1, T= 1): 431.187 MB/s [ 421.1 IOPS] < 2356.48 us>
Random 4 KiB (Q=32, T=16): 199.840 MB/s [ 49961.0 IOPS] < 2552.16 us>
Random 4 KiB (Q= 1, T= 1): 35.636 MB/s [ 8909.2 IOPS] < 109.97 us>
Sequential 1 MiB (Q= 8, T= 1): 172.132 MB/s [ 168.1 IOPS] < 41336.98 us>
Sequential 1 MiB (Q= 1, T= 1): 282.402 MB/s [ 275.8 IOPS] < 3215.23 us>
Random 4 KiB (Q=32, T=16): 123.100 MB/s [ 30776.0 IOPS] < 4136.08 us>
Random 4 KiB (Q= 1, T= 1): 116.440 MB/s [ 29110.0 IOPS] < 32.01 us>
Test: 32 MiB (x5) [Interval: 5 sec]
Date: 2020/10/01 14:59:55
OS: ubuntu 20.04 [linux 5.4.0-48-generic]
The KDiskMark releases page has binaries for DEB-based Linux distributions (Debian / Ubuntu and Linux distributions based on these), RPM (Fedora / openSUSE) and a generic binary archive that you should be able to run on any Linux distributions, but you do have to install fio 3.1 or newer manually in this case (e.g. on Debian / Ubuntu: sudo apt install fio).
I want to note that in my test, I was able to install the DEB on Ubuntu 20.04, but not on Ubuntu 18.04 due to requiring newer dependencies.