Login
Login-Name Passwort


 
Newsletter
Werbung

Do, 7. August 2003, 00:00

Performance-Messungen unter Linux

Vorwort

In diesem Artikel beschreiben wir, welche Möglichkeiten es gibt, die Performance von Applikationen und Treibern unter Linux zu messen. Linux bietet schon von Haus aus einige Möglichkeiten, und viele für die Messung nötigen Tools sind bereits in der Standard-Installation der meisten Distributionen enthalten.

Der Artikel ist im ersten Teil gegliedert nach den verschiedenen Komponenten, die man messen kann. Im zweiten Teil gehen wir dann auf integrierte Testprogramme und die Kernel-Compilierung ein.

Allgemeines

Im Allgemeinen sind die Benchmark-Werte unter Linux und UNIX nicht sehr verläßlich. Denn je nachdem, was das System im Hintergrund gerade tut, können sich starke Differenzen zum optimalen Wert aufzeigen. Um das auszugleichen, macht man oft jede Messung dreimal und nimmt den besten Wert der drei Durchläufe.

Die Alternative wäre, sein System vor der Messung in Runlevel 1 zu bringen, doch das ist nicht immer möglich und auch nicht immer gewünscht, weil die Ergebnisse nicht unter realistischen Bedingungen ermittelt wurden. Fürs Marketing sind solche Zahlen allerdings ideal...

Messung von Komponenten

CPU

Um zu ermitteln, ob Linux alle CPUs richtig erkannt hat und diese mit der richtigen Geschwindigkeit laufen, genügt ein simpler Befehl.

cat /proc/cpuinfo

Die Ausgabe könnte ähnlich aussehen wie hier:

processor : 0
vendor_id : AuthenticAMD
cpu family : 5
model : 8
model name : AMD-K6(tm) 3D processor
stepping : 12
cpu MHz : 400.893
cache size : 64 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips : 799.53

Wichtig ist für uns zunächst der CPU-Typ. Dieser sollte mit dem übereinstimmen, was tatsächlich im Rechner steckt. Dann ist die (rechnerisch ermittelte) Taktfrequenz (cpu MHz) von Interesse. Ist diese niedriger als erwartet, ist möglicherweise das Motherboard nicht richtig konfiguriert oder der Rechner ist in einem Stromspar-Modus.

Die bogomips-Zahl hängt im Prinzip nur vom CPU-Typ und der Takfrequenz ab. Bei modernen CPUs (Pentium MMX, K6/2) sollte sie das Doppelte der Taktfrequenz betragen, bei älteren CPUs (Pentium) gleichauf mit der Taktfrequenz liegen oder sogar nur halb so hoch (486). Man sollte den erwarteten Wert für seine CPU im BogoMips Mini-HOWTO nachlesen. Abweichungen von 1% sind normal, doch deutliche Abweichungen können darauf hindeuten, daß etwas faul ist.

RAM

Mir ist leider im Moment kein Programm bekannt, das die RAM-Geschwindigkeit direkt messen würde. Das Paket lm-sensors enthält jedoch die notwendigen Treiber und ein Programm (decode-dimms.pl), um die in den DIMMs gespeicherte EEPROM-Information auszulesen. Eine Beispiel-Ausgabe ist hier zu finden.

Mit dem Programm hdparm kann man die Geschwindigkeit des Buffer-Cache messen. Dies läßt eventuell. Rückschlüsse auf die RAM-Performance zu:

# hdparm -T /dev/hda
/dev/hda:
 Timing buffer-cache reads: 128 MB in 1.69 seconds = 75.74 MB/sec

Festplatte

Das Tool, um die Geschwindigkeit der Festplatte zu ermitteln, ist hdparm. Es kann recht zuverlässig die Transferrate einer Festplatte (IDE oder SCSI) sowie diverse Einstellungen ermitteln. Von einer vollständigen Performance-Analyse ist es jedoch weit entfernt. Es kann auch SCSI-CDROMs messen, versagt aber bei IDE-CDROMs.

Der Aufruf ist einfach, hier am Beispiel einer IDE-Festplatte:

hdparm -t /dev/hda

Die Ausgabe bedarf keiner weiteren Erklärung:

/dev/hda:
 Timing buffered disk reads: 64 MB in 5.35 seconds = 11.96 MB/sec

Hier wird allerdings nur die reine Lesegeschwindigkeit der Platte ermittelt. Lesen und Schreiben im Dateisystem sind wieder etwas ganz anderes. Dazu kommen wir im nächsten Abschnitt.

Dateisystem

Zur Messung der Dateisystem-Geschwindigkeit stehen ausgefeilte Tools zur Verfügung: bonnie, bonnie++, mongo, postmark und iozone. Diese Programme sind so konstruiert, daß sie die Auswirkungen des Caches (des Linux Buffer Caches, der nahezu den gesamten Speicher einnehmen kann) minimieren. Dazu ist es aber nötig, daß die verwendeten Dateien groß genug sind. Sie sollten mindestens doppelt so groß wie der Hauptspeicher sein. Bei bonnie und bonnie++ erreicht man das mit der Option -s, der man die Dateigröße in MB anhängt. Hier eine Ausgabe von bonnie++:

Version 1.00 ------Sequential Output------ --Sequential Input- --Random-
 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine MB K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
Unknown 512 6153 96 15755 29 2871 5 3741 57 11431 12 14.4 0
 ------Sequential Create------ --------Random Create--------
 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
 files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
 30 173 97 +++++ 94 6721 98 169 99 +++++ 100 699 99

iozone liefert keine einzelne Zahl, sondern eine ganze Tabelle mit Geschwindigkeiten bei verschiedenen Dateigrößen. Es ist schwierig, hier die relevanten Zahlen herauszupicken. Mongo ist ein zerstörender Test von den Autoren von Reiserfs. Ich gehe hier nicht weiter darauf ein, weil dazu eine ungenutzte Partition nötig ist.

Postmark schließlich testet in erster Linie das Erzeugen, Löschen und Vergrößern von Dateien. Ein Testlauf könnte so aussehen:

Creating files...Done
Performing transactions..........Done
Deleting files...Done 570 seconds total
	14 seconds of transactions (35 per second)
Files:
	50244 created (88 per second)
		Creation alone: 50000 files (92 per second)
		Mixed with transactions: 244 files (17 per second)
	236 read (16 per second)
	264 appended (18 per second)
	50244 deleted (88 per second)
		Deletion alone: 49988 files (2940 per second)
		Mixed with transactions: 256 files (18 per second)
Data:
	1.22 megabytes read (2.19 kilobytes per second)
	252.35 megabytes written (453.35 kilobytes per second)

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung