TKperf Installation

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Dieser Artikel schildert die Installation des Performance-Werkzeugs TKperf. Es werden die Anforderungen an die Installation selbst, die Installations-Schritte sowie ein erster Aufruf von TKperf erläutert.

Anforderungen

  1. Es wird eine funktionierende Fio-Installation > Version 2.0.3 vorausgesetzt. Das Python-Tool überprüft mittels 'which fio' ob Fio vorhanden und aufrufbar ist. Ein Howto zur Fio-Installation ist im Artikel Fio kompilieren zugänglich.
  2. hdparm
  3. sg3-utils (zum Testen von SAS Devices)
  4. nvme-cli (zum Testen von nvme Devices)
  5. rst2pdf

Unter Ubuntu können die Pakete aus den Repositories installiert werden:

sudo apt install hdparm sg3-utils nvme-cli rst2pdf

Zum Ausführen des Python-Programms sind folgende Python Pakete erforderlich:

  • logging, json, lxml, subprocess, datetime, argparse, copy, collections, numpy, matplotlib
  • Unter Ubuntu ist ausreichend aus den Repositories folgende Pakete zu installieren:
    sudo apt install python-argparse python-matplotlib python-lxml python-numpy python-simplejson python-setuptools

Installation unter Ubuntu

Unter Ubuntu gibt es unterschiedliche Möglichkeiten TKperf zu installieren, bei aktuellen Versionen installieren Sie TKperf per Github.

Ubuntu Repository

Nicht mehr empfohlen: TKperf kann beim Einsatz bis zu Ubuntu 14.04 über das Thomas-Krenn Ubuntu Repo installiert werden (s.a. Thomas Krenn Ubuntu-Repo verwenden):

:~$ sudo apt-get install tkperf
[sudo] password for gschoenb: 
Reading package lists... Done
Building dependency tree
[...]

Git Repository

Bei Ubuntu Versionen ab 16.04 (xenial) ist der Installationsweg über unser Thomas-Krenn Github Repo. Dieser manuelle Download über git wird wie folgt vorgenommen.

  • Klonen Sie TKperf in ein beliebiges Verzeichnis, hier wurde Downloads verwendet:
:~/Downloads/tkperf$ git clone https://github.com/thomas-krenn/TKperf.git .
Cloning into '.'...
remote: Counting objects: 914, done.
remote: Compressing objects: 100% (374/374), done.
remote: Total 914 (delta 549), reused 878 (delta 529)
Receiving objects: 100% (914/914), 180.49 KiB, done.
Resolving deltas: 100% (549/549), done.
  • Starten Sie das Python Setup Skript:
:~/Downloads/tkperf$ sudo python setup.py install
running install
running build
[...]
  • Prüfen Sie die Installation von TKperf:
:~/Downloads/tkperf$ tkperf -v
TKperf Version: 2.1 using fio: /usr/local/bin/fio, fio-2.0.13-16-g99db


Hinweis zur Aktualisierung: Bei einer Aktualisierung der Quelldateien (mittels Download oder Git) muss der Aufruf des oben genannten Installation-Befehls (sudo python setup.py install) erneut erfolgen.

  • Für die manuelle Installation von Fio verwenden Sie die Anleitung im Artikel Fio kompilieren.

TKperf Testlauf

Achtung: Bei einem Testlauf gehen alle Daten auf dem Device verloren. Das angegebene Device wird mehrmals überschrieben, für SSDs wird außerdem ein Secure Erase durchgeführt.

Wichtige Information: Es empfiehlt sich die Tests, die im Regelfall sehr lange laufen, in einer Screen-Session[1] zu starten, um zu verhindern, dass der Testlauf unbeabsichtigt beendet wird.

Genauere Informationen zu den Testläufen finden Sie auch im Artikel TKperf Testabläufe.

Nach erfolgreicher Installation kann ein Testlauf gestartet werden - dazu werden root-Rechte benötigt.

$ sudo tkperf

Ohne Angabe von Parametern liefert das Script folgenden Fehler zurück:

$ sudo tkperf
usage: tkperf [-h] [-v] [-d] [-q] [-nj NUMJOBS] [-iod IODEPTH] [-rt RUNTIME]
              [-i {sas,nvme,fusion}] [-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
tkperf: error: too few arguments

Im nächsten Schritt werden Aufruf-Parameter an TKperf übergeben. Zumindest folgende Informationen werden für einen Testlauf benötigt:

  • Test-Typ (SSD oder HDD)
  • Beschreibender Name des Tests (z.B. Intel320)
  • Pfad zum zu testenden Device (z.B. /dev/sda)

Mit diesen drei wesentlichen Informationen kann bereits ein Testlauf gestartet werden. Entweder mit sudo:

$ sudo tkperf ssd Intel320 /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:

oder direkt als root:

# tkperf ssd Intel320 /dev/sdb

Wie in der Ausgabe ersichtlich warnt das Performance-Tool davor, dass alle Daten auf dem Device verloren gehen. Eine Einschränkung bezüglich der Auswahl der Devices gibt es - für aktuell gemountete Devices ist es nicht möglich einen Test zu starten.

Zusätzliche nützliche Parameter

Für die meisten SSDs reichen Standard-Parameter für die Anzahl der Prozess und der ausstehenden I/Os nicht aus. Es empfiehlt sich daher folgende Parameter für einen SSD-Test zu verwenden:

-nj 2 -iod 16

Mit diesen Parametern werden zumindest 2 Prozesse und 16 outstanding I/Os pro Prozess von Fio eingesetzt (s.a. Fio Grundlagen).

Zusätzlich wird für SSDs, deren Controller Komprimierung einsetzt, ein Parameter benötigt der die Zufälligkeit der eingesetzten Daten-Puffer garantiert. Über die Option "-rfb" wird dies erreicht (vgl. Welche Art von Daten setzt Fio ein). Abschließend ergeben sich folgende Parameter für einen SSD-Test:

-nj 2 -iod 16 -rfb

Während des Testlaufes

Das Log '[Name-des-gestarteten-Tests].log' enthält sowohl Fehlermeldungen als auch Informationen über die gestarteten Fio-Jobs. Neben der Ausgabe des "Terse Outputs" aller Fio Jobs befindet sich am Ende eines Tests im Log File jene Matrix, die später für die Auswertung und Generierung der Graphen und Reports verwendet wird. Außerdem werden bei Tests, die einen Steady State involvieren, die Informationen bezüglich der Erreichung des Steady States in das Log geschrieben.

Bei Unklarheiten im PDF-Report empfiehlt es sich in der Log-Datei die Performance-Werte zu überprüfen. Im Zusammenhang mit dem Fio Terse Output, der geparst wurde, steht im Fio HOWTO[2] eine Beschreibung, an welchen Stellen sich die einzelnen Werte befinden.

Nach dem Testlauf

Nach dem Aufruf befinden sich zusätzlich zu der Log-Datei die Grafiken, ein XML und eine rst-Datei im Verzeichnis:

# ls
intel320-avg-LAT-mes2DPlt.png    intel320.pdf
intel320-IOPS-mes2DPlt.png       intel320.rst
intel320-IOPS-mes3DPlt.png       intel320-TP-mes2DPlt.png
intel320-IOPS-stdyStConvPlt.png  intel320-TP-RW-stdyStConvPlt.png
intel320-IOPS-stdyStVerPlt.png   intel320-TP-stdyStVerPlt.png
intel320-LAT-mes3DPlt.png        intel320-writeSatIOPSPlt.png
intel320-LAT-stdyStConvPlt.png   intel320-writeSatLatPlt.png
intel320-LAT-stdyStVerPlt.png    intel320.xml
intel320-max-LAT-mes2DPlt.png    intel320.log

TKperf XML-Datei

Die xml-Datei enthält wie bereits erwähnt die Testergebnisse der einzelnen Testläufe. Die Datei braucht unter normalen Umständen nicht editiert zu werden. Eine Ausnahme bildet der Umstand, wenn manuell Informationen zum Report hinzugefügt werden sollen. Diese Informationen können nachträglich ins XML eingefügt werden und der Report aus dem XML neu erstellt werden. Hierzu ein kleiner Auszug aus einer XML-Datei (nicht vollständig):

<intel320>
<testdate>"2012-09-26"</testdate>
<devinfo>
"\tModel Number:       INTEL SSDSA2CW160G3                     \n
\tSerial Number:      CVPR1462071K160DGN  
\n\tFirmware Revision:  4PC10362
\n\tdevice size with M = 1000*1000:      160041 MBytes (160 GB)\n"
</devinfo>
<ioperfversion>"1.0"</ioperfversion>
<lat><fioversion>"fio 2.0.7\n"</fioversion><numjobs>2</numjobs><iodepth>16</iodepth>
<roundmat>
[...]
</roundmat>
<tp><fioversion>"fio 2.0.7\n"</fioversion><numjobs>2</numjobs><iodepth>16</iodepth>
<roundmat>
[...]
</roundmat>
<stdyrounds>[0, 1, 2, 3, 4]</stdyrounds>
<stdyvalues>[128655, 122786, 126858, 125772, 126053]</stdyvalues>
<stdyslope>[-221.80000000001655, 126468.40000000001]</stdyslope>
<stdyavg>126024.8</stdyavg>
<reachstdystate>true</reachstdystate>
<rndnr>4</rndnr>
</tp>
</intel320>

TKperf-Report erstellen

Die von TKperf generierte rst-Datei wird zur Erstellung eines pdf-Reports herangezogen. Die Datei enthält den Report als restructured Text (wikipedia.org). Dazu ein kurzer Auszug:

# head -20 intel320.rst 
.. |logo| image:: TK_Logo_RGB.png
	:height: 70px
.. footer::
	|logo| http://www.thomas-krenn.com - Page ###Page### of ###Total###

====================
IO perf test report
====================

.. contents::
.. sectnum::
.. include:: <isonum.txt>

Device Information
===================
[...]

Mit dem Werkzeug rst2pdf kann daraus eine pdf-Datei erstellt werden:

# rst2pdf intel320.rst

Fehlerbehandlung

  • Frozen State

Die SSD befindet sich im Frozen State, das Secure Erase kann daher nicht durchgeführt werden. Ein kurzes herausziehen und wieder einschieben der SSD sollte das Problem lösen. Kontrolle:

# hdparm -I /dev/sdb|grep frozen
	not	frozen

Ausgabe des Hilfe-Textes

Der Hilfe-Text kann über den Parameter '--help' abgerufen werden:

$ tkperf --help
usage: tkperf [-h] [-v] [-d] [-q] [-nj NUMJOBS] [-iod IODEPTH] [-rt RUNTIME]
              [-i {sas,nvme,fusion}] [-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

optional arguments:
  -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}, --interface {sas,nvme,fusion}
                        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

Einzelnachweise

  1. Screen man-Page (linux.die.net)
  2. Fio HOWTO (git.kernel.dk)


Foto Georg Schönberger.jpg

Autor: Georg Schönberger

Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.


Das könnte Sie auch interessieren

SSD Performance mit TKperf vergleichen
TKperf
TKperf Testabläufe