bonnie++

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Anwendungen hinzufügen

  2. Ein Terminal öffnen

  3. Root-Rechte

Inhaltsverzeichnis
  1. Installation
  2. Nutzung
  3. Interpretation der Ausgabe
  4. Links

Wiki/Icons/terminal.png bonnie++ {en} ist ein Benchmarkwerkzeug, mit dessen Hilfe man die Schreib- und Leseleistung eines Systems in Bezug auf Massenspeicher testen kann. Einfach ausgedrückt, kann man damit testen, wie schnell ein Rechner Daten zur und von der Festplatte bewegen kann. An einem solchen Vorgang sind natürlich neben der Hardware auch das Dateisystem und das Betriebssystem selbst beteiligt. Dadurch kann man bonnie++ nicht nur nutzen, um die Leistung einer neuen Festplatte zu prüfen, sondern auch herausfinden, ob ein Dateisystem bessere Leistungen liefert als ein anderes.

Installation

Das Programm kann mittels des folgenden Pakets installiert [1] werden:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install bonnie++ 

sudo aptitude install bonnie++ 

Nutzung

Bevor man bonnie++ startet, sollte man sich im Klaren sein, dass das Programm nicht gerade zimperlich mit Ressourcen umgeht. Damit die Tests aussagekräftig werden, schreibt bonnie++ nicht einfach nur ein paar Kilobyte an Daten. Standardmäßig legt bonnie++ zum Testen im ersten Schritt eine Datei an, die doppelt so groß wie der RAM des Systems ist (siehe free). Auf einem Server mit 8 GB RAM erzeugt bonnie++ also eine 16 GB große Datei. Man sollte daher ausreichend Platz haben und bonnie++ nicht auf Maschinen aufrufen, die gerade Wichtigeres zu tun haben. Informationen zum verfügbaren Platz auf Partitionen kann man mit dem Befehl df erhalten.

bonnie++ liegt zwar unter /usr/sbin, sollte aber nicht als root [3] gestartet werden. Startet man bonnie++ dennoch als root, erhält man einen Hinweis, dass man es besser als normaler Benutzer verwenden sollte. Um einen Testlauf von bonnie++ anzustoßen, ruft man es einfach über

bonnie++ 

auf [2]. Alternativ (wenn /usr/sbin nicht im Pfad ist) kann man das Programm auch über

/usr/sbin/bonnie++ 

starten. bonnie++ testet dann innerhalb des Verzeichnisses, in dem man es gestartet hat. Startet man es im eigenen Homeverzeichnis, wird nur die Schreib-/Leseleistung des Dateisystems bzw. der Hardware getestest, auf der das eigene Benutzerverzeichnis liegt.

Interpretation der Ausgabe

Die Ausgabe von bonnie++ ist nicht unbedingt selbsterklärend. Die Software misst prinzipiell drei Werte:

Eine typische Ausgabe kann dabei so aussehen:

/usr/sbin/bonnie++
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
srv1            16G   910  98 62103   8 29399   4  3481  75 71631   4 236.6   5
Latency             15233us   11422ms    1309ms     112ms     204ms    1157ms
Version  1.96       ------Sequential Create------ --------Random Create--------
srv1                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 22125  29 +++++ +++ 10922   6 +++++ +++ +++++ +++ +++++ +++
Latency             21238us     704us     395us     603us      26us      72us
1.96,1.96,srv1,1,1307522373,16G,,910,98,62103,8,29399,4,3481,75,71631,4,236.6,5,16,,,,,22125,29,+++++,+++,10922,6,+++++,+++,+++++,+++,+++++,+++,15233us,11422ms,1309ms,112ms,204ms,1157ms,21238us,704us,395us,603us,26us,72us

Wichtig sind dabei die mit "Sequential Output" und "Sequential Input" überschriebenen Bereiche.

Ausgabe konvertieren

Man kann die Ausgabe auch mittels:

bonnie >> test.csv 

in eine csv-Datei schreiben lassen. Anschließend lässt sich diese Datei durch:

bon_csv2html test.csv > test.html 

in eine HTML-Datei konvertieren.

Sequential Output

Diese Spalte zeigt die Schreibgeschwindigkeit des Systems. Dabei wird zwischen einem wiederholten Aufruf von putc() - also quasi dem Schreiben einzelner Zeichen, dem Schreiben von ganzen Blöcken und dem "Rewrite", also dem Verändern von Blöcken, unterschieden.

Die Zahl 910 gibt an, dass 910.000 (K steht für Kilo = 1000) putc() Aufrufe pro Sekunde durchgeführt werden können. Das Beispiel zeigt auch, dass 62.103.000 Blöcke pro Sekunde geschrieben werden können. Wie man erkennen kann, ist das Schreiben ganzer Blöcke wesentlich effizienter als einzelne putc-Aufrufe.

Sequential Input

Diese Spalte zeigt die Lesegeschwindigkeit des Systems. Es wird wieder nach einzelnen Zeichen und ganzen Blöcken unterschieden. Im Beispiel werden 3.481.000 Zeichen pro Sekunde gelesen oder 71.631.000 Blöcke pro Sekunde.

Random Seeks

Diese Spalte zeigt die Anzahl von Seek-Operationen (siehe dazu auch Spurwechselzeit), also das physikalische Bewegen des Schreib-/Lesekopfs zu einer anderen Position, pro Sekunde. Höhere Werte sind natürlich besser. Das System aus dem Beispiel kann also 236,6 mal pro Sekunde die Leseposition der Festplatte ändern. Dazu gehört zum einen das Bewegen des Schreib-/Lesekopfs, zum anderen die Drehung der Platte selbst.

Sequential Create / Random Create

Diese Daten geben an, wie schnell Dateien bzw. Datenstrukturen auf den Massenspeicher (Partition, Hardware) geschrieben (create), gelesen (read) oder gelöscht (delete) werden können. Diese Werte sind wichtig für Systeme wie Mail-, News- oder Proxyserver, die viele kleine Dateien speichern müssen.

Hinweis zu den %CP-Angaben

Die %CP-Angaben zeigen, wie sehr der Prozessor bei den einzelnen Aufgaben belastet wurde. Allerdings muss man diese Werte auf Multikern- oder Multi-CPU-Systemen mit Vorsicht betrachten. Oftmals läuft bonnie++ selbst auf einem anderen Prozessor als der Schreib-/Leseprozess. Die Werte sind in einem solchen Fall nicht aussagekräftig.

+ Zeichen in der Ausgabe

Die Pluszeichen in der Ausgabe bedeuten, dass ein Test zu schnell abgeschlossen wurde, um aussagekräftig zu sein. Man erhält diese Werte hauptsächlich bei den Werten Sequential Create und Random Create. Das liegt daran, dass bonnie++ zum Testen dieser Werte eine große Anzahl an Dateien erzeugen muss. Es kann aber nicht vorher erkennen, wie viele Dateien für einen Test sinnvoll sind. Deshalb nimmt bonnie++ immer 16x1024 Dateien. Das zeigt sich auch im Beispiel, unter "files" steht 16. Man kann das mit dem Parameter -n erhöhen.

/usr/sbin/bonnie++ -n 128 

würde 128x1024, also gute 131.000 Dateien zum Testen anlegen. Das dauert natürlich deutlich länger und die Messwerte werden besser. Allerdings muss man bei diesem Parameter aufpassen, dass man nicht alle Inodes aufbraucht und so keine weiteren Dateien mehr auf dieser Partition erzeugt werden können, bis man wieder Dateien löscht.