Aktuell stehe ich vor der Hausforderungen SATA und PCIe SSDs von verschiedenen Herstellern auf ihre Performance und Leistungsdaten verifizieren zu müssen. Hierzu war ich auf der Suche nach einem passenden Tool um die Tests durchführen zu können.
Die „Besonderheit“ ist allerdings dass dies nicht unter Windows sondern unter Linux geschehen soll. Da die SSDs auch später unter Linux zum Einsatz kommen sollen.
Bei meiner Suche bin ich bei TKperf von Thomas Krenn hängen geblieben. Eine Ausführliche Erklärung wie das Tool aufgebaut ist und funktioniert, findet man im Wiki von Thomas Krenn. Es wird bei der Nutzung von TKperf alle Daten auf dem zu testenden Laufwerk überschrieben!
Daher möchte ich diesen Beitrag dafür nutzen, um die Installation von TKperf unter der aktuellen Ubuntu Server Version zu dokumentieren.
Download der aktuellen Version von TKperf.
git clone https://github.com/thomas-krenn/TKperf.git /opt/TKperf
Installation der Abhängigkeiten.
apt update && apt upgrade apt install fio hdparm sg3-utils nvme-cli rst2pdf
Zusätzlich sind noch folgende Python 3 Bibliotheken notwendig.
apt install python3-matplotlib python3-lxml python3-numpy python3-simplejson python3-setuptools
Installation von TKperf.
cd /opt/TKperf/ python3 setup.py install
Funktionstest der Anwendung.
tkperf -v TKperf Version: 2.2
Übersicht der möglichen Parameter und deren Erklärung. Dieser enthält für jeden Parameter eine kurze/lange Beschreibung.
tkperf --help usage: tkperf [-h] [-v] [-d] [-q] [-nj NUMJOBS] [-iod IODEPTH] [-rt RUNTIME] [-i {sas,nvme,fusion,usb,sdcard,compactflash}] [-xml] [-rfb] [-dsc DESC_FILE] [-c CONFIG] [-ft] [-fm FEATURE_MATRIX] [-hddt {iops,tp}] [-ssdt {iops,lat,tp,writesat}] [-m MAIL] [-s SMTP] [-g GEN_REPORT] {hdd,ssd,raid} testname device positional arguments: {hdd,ssd,raid} specify the test mode for the device testname name of the performance tests, corresponds to the result output filenames device device to run fio test on options: -h, --help show this help message and exit -v, --version get the version information -d, --debug get detailed debug information -q, --quiet turn off logging of info messages -nj NUMJOBS, --numjobs NUMJOBS specify number of jobs for fio -iod IODEPTH, --iodepth IODEPTH specify iodepth for libaio used by fio -rt RUNTIME, --runtime RUNTIME specify the fio runtime of one test round, if not set this is 60 seconds -i {sas,nvme,fusion,usb,sdcard,compactflash}, --interface {sas,nvme,fusion,usb,sdcard,compactflash} specify optional device interface -xml, --fromxml don't run tests but load test objects from xml file -rfb, --refill_buffers use Fio's refill buffers option to circumvent any compression of devices -dsc DESC_FILE, --desc_file DESC_FILE use a description file for the tested device if hdparm doesn't work correctly -c CONFIG, --config CONFIG specify the config file for a raid device -ft, --force_test skip checks if the used device is mounted, don't print warnings and force starting the test -fm FEATURE_MATRIX, --feature_matrix FEATURE_MATRIX add a feature matrix of the given device to the report -hddt {iops,tp}, --hdd_type {iops,tp} choose which tests are run -ssdt {iops,lat,tp,writesat}, --ssd_type {iops,lat,tp,writesat} choose which tests are run -m MAIL, --mail MAIL Send reports or errors to mail address, needs -s to be set -s SMTP, --smtp SMTP Use the specified smtp server to send mails, uses port 25 to connect -g GEN_REPORT, --gen_report GEN_REPORT Set and specify command to generate pdf report, e.g. rst2pdf
Nachstehend ein exemplarischer Aufruf des Tools.
tkperf -nj 2 -iod 16 ssd sdb /dev/sdb !!!Attention!!! All data on /dev/sdb will be lost! Are you sure you want to continue? (In case you really know what you are doing.) Press 'y' to continue, any key to stop: y Starting ssd mode... Testing device: device size with M = 1000*1000: 0 MBytes write-caching = not supported Device Logical Sector Size: 512 Device Physical Sector Size: 512 Starting test: iops
Sitzt, passt, wackelt und hat Luft. Viel Spaß beim Ausprobieren. 🙂