Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/JonMagon/KDiskMark
A simple open-source disk benchmark tool for Linux distros
https://github.com/JonMagon/KDiskMark
benchmarking cpp crystaldiskmark dbus disk drive linux polkit qt5 ssd
Last synced: 2 months ago
JSON representation
A simple open-source disk benchmark tool for Linux distros
- Host: GitHub
- URL: https://github.com/JonMagon/KDiskMark
- Owner: JonMagon
- License: gpl-3.0
- Created: 2020-06-26T22:24:53.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-01T17:56:11.000Z (4 months ago)
- Last Synced: 2024-10-29T15:21:00.887Z (2 months ago)
- Topics: benchmarking, cpp, crystaldiskmark, dbus, disk, drive, linux, polkit, qt5, ssd
- Language: C++
- Homepage:
- Size: 2.31 MB
- Stars: 1,084
- Watchers: 16
- Forks: 43
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- fucking-Awesome-Linux-Software - ![Open-Source Software - A simple open-source disk benchmark tool for Linux distros, similar to CrystalDiskmark on Windows. (Applications / Utilities)
- Awesome-Linux-Software - ![Open-Source Software - A simple open-source disk benchmark tool for Linux distros, similar to CrystalDiskmark on Windows. (Applications / Utilities)
README
# KDiskMark
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-orange.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![GitHub (pre-)release](https://img.shields.io/github/release/JonMagon/KDiskMark/all.svg)](https://github.com/JonMagon/KDiskMark/releases)
[![Main](https://github.com/JonMagon/KDiskMark/actions/workflows/main.yml/badge.svg)](https://github.com/JonMagon/KDiskMark/actions/workflows/main.yml)**KDiskMark** is an HDD and SSD benchmark tool with a very friendly graphical user interface. **KDiskMark** with its presets and powerful GUI calls [Flexible I/O Tester](https://github.com/axboe/fio) and handles the output to provide an easy to view and interpret comprehensive benchmark result. The application is written in C++ with Qt and *doesn't have* any KDE dependencies.
## Features
* Configurable block size, queues, and threads count for each test
* Many languages support
* Report generation## Report Example
```
KDiskMark (3.0.0): https://github.com/JonMagon/KDiskMark
Flexible I/O Tester (fio-3.30): 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[Read]
Sequential 1 MiB (Q= 8, T= 1): 508.897 MB/s [ 497.0 IOPS] < 13840.05 us>
Sequential 1 MiB (Q= 1, T= 1): 438.278 MB/s [ 428.0 IOPS] < 2280.14 us>
Random 4 KiB (Q= 32, T= 1): 354.657 MB/s [ 88664.6 IOPS] < 352.37 us>
Random 4 KiB (Q= 1, T= 1): 44.166 MB/s [ 11041.6 IOPS] < 88.48 us>[Write]
Sequential 1 MiB (Q= 8, T= 1): 460.312 MB/s [ 449.5 IOPS] < 15153.11 us>
Sequential 1 MiB (Q= 1, T= 1): 333.085 MB/s [ 325.3 IOPS] < 2349.82 us>
Random 4 KiB (Q= 32, T= 1): 315.170 MB/s [ 78792.5 IOPS] < 383.86 us>
Random 4 KiB (Q= 1, T= 1): 91.040 MB/s [ 22760.3 IOPS] < 39.80 us>Profile: Default
Test: 1 GiB (x5) [Measure: 5 sec / Interval: 5 sec]
Date: 2022-08-24 16:10:33
OS: opensuse-tumbleweed 20220821 [linux 5.19.2-1-default]
```## Dependencies
### Required
* GCC/Clang C++17 (or later)
* [CMake](https://cmake.org/) >= 3.12
* [Extra CMake Modules](https://github.com/KDE/extra-cmake-modules) >= 5.73
* [Qt](https://www.qt.io/) with Widgets and DBus >= 5.9
* [PolicyKit](https://gitlab.freedesktop.org/polkit/polkit) Agent
* `PolkitQt-1` bindings.
* [Flexible I/O Tester](https://github.com/axboe/fio) with libaio >= 3.1
* `libaio` development package.### External libraries
* [SingleApplication](https://github.com/itay-grudev/SingleApplication) prevents launch of multiple application instances.## Installation
Binaries are available on the [Releases](https://github.com/JonMagon/KDiskMark/releases/latest) page.### Install from the Snap Store
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-white.svg)](https://snapcraft.io/kdiskmark)
```bash
sudo snap install kdiskmark
sudo snap connect kdiskmark:removable-media # external storages
````### Install from the Flathub repository
[](https://flathub.org/apps/details/io.github.jonmagon.kdiskmark)
```bash
flatpak install flathub io.github.jonmagon.kdiskmark
````### Ubuntu based distros
```bash
sudo add-apt-repository ppa:jonmagon/kdiskmark
sudo apt update
sudo apt install kdiskmark
```### Arch based distros
KDiskMark is included in the official [extra](https://www.archlinux.org/packages/extra/x86_64/kdiskmark/) repo. You can install it like any other package:
```bash
sudo pacman -Syu kdiskmark
```Development version can be installed from AUR `kdiskmark-git` package.
```bash
git clone https://aur.archlinux.org/kdiskmark-git.git
cd kdiskmark-git
makepkg -si
```### Fedora
KDiskMark is included in the official [Fedora](https://src.fedoraproject.org/rpms/kdiskmark/) repo. You can install it like any other package:
```bash
sudo dnf install kdiskmark
```### openSUSE Tumbleweed
```bash
sudo zypper install kdiskmark
```## Building
### Building a package using CPack
You can build **KDiskMark** by using the following commands:```bash
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release ..
cpack -G DEB # Or RPM, ZIP etc.
```### Building with Qt6
To build **KDiskMark** with Qt6 instead of the default Qt5, use the `USE_QT6` flag during the CMake configuration step:```bash
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D USE_QT6=ON ..
cpack -G DEB # Or RPM, ZIP etc.
```## Localization [![Crowdin](https://badges.crowdin.net/kdiskmark/localized.svg)](https://crowdin.com/project/kdiskmark)
To help with localization you can use [Crowdin](https://crowdin.com/project/kdiskmark) or translate files in `data/translations` with [Qt Linguist](https://doc.qt.io/Qt-5/linguist-translators.html) directly. To add a new language, copy `data/translations/kdiskmark.ts` to `data/translations/kdiskmark__.ts`, translate it, then add the file to the TS_FILES variable in CMakeLists.txt, and create a pull request. It is also possible to add localized Comment and Keywords sections into `data/kdiskmark.desktop` and message for PolicyKit authorization into `data/dev.jonmagon.kdiskmark.helper.policy`.Languages currently available:
* Chinese (Simplified)
* Czech
* Dutch
* English (default)
* French
* German
* Hindi
* Hungarian
* Italian
* Japanese
* Polish
* Portuguese (Brazilian)
* Russian
* Slovak
* Spanish (Mexico)
* Swedish
* Turkish
* Ukrainian## TODO
- [ ] Text-based user interface
- [x] Performance profiles (mix, peak, real-world)## Special Thanks
* Artem Grinev () for his help with assembling the AppImage package.Thanks to the package maintainers, translators, and all users for supporting the project.
## Credits
**Application Icon**
Copyright (c) https://www.iconfinder.com/baitisstudio**FlagKit**
https://github.com/madebybowtie/FlagKitIf you have any ideas, critics, suggestions or whatever you want to call it, please open an issue.