====== Linux Benchmarks & Test tools ====== auch unter Linux gibt es natürlich eine gute Auswahl an Benchmarks, also Programme zum testen der Hardware auf "Flaschenhälse". [[http://ltp.sourceforge.net/tooltable.php|Linux Test Tools]] - gute Übersicht nach Kategorien [[http://lbs.sourceforge.net/|Linux Benchmark Suite Homepage]] [[http://tldp.org/HOWTO/Benchmarking-HOWTO.html|Linux Benchmarking HOWTO]] ===== Test-suiten ===== * [[http://www.phoronix-test-suite.com/|Phoronix Test Suite]], [[http://www.phoronix.com/scan.php?page=article&item=phoronix_pts&num=1|Phoronix Test Suite Released]] * [[http://www.netlib.org/benchmark/hpl/|Linpack]] ===== I/O ===== * [[http://linux.inet.hr/how_fast_is_your_disk.html|How fast is your disk?]] * **tiobench** : für I/O- und Multitheading-Benchmarking * [[http://sourceforge.net/projects/sysbench/|sysbench]] (Realistische I/O-Load-Messung mit Unterstützung der [[datenbanken:mysql|MySQL-Datenbank]]) siehe auch: [[http://www.randombugs.com/linux/compiling-sysbench-0412-debian.html|Compiling sysbench 0.4.12 for Debian]] und [[http://www.mysqlperformanceblog.com/2008/03/05/evaluating-io-subsystem-performance-for-mysql-needs/|Evaluating IO subsystem performance for MySQL Needs]] other: * dbench (synthetisch) * [[http://www.netapp.com/tech_library/postmark.html|postmark]] (gibts auch für NT): geeignet für kleine Dateien (mail und news-Server) Je nach Benchmark ist ggf. das Löschen der Caches sinnvoll: drop_caches Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free. To free pagecache: echo 1 > /proc/sys/vm/drop_caches To free dentries and inodes: echo 2 > /proc/sys/vm/drop_caches To free pagecache, dentries and inodes: echo 3 > /proc/sys/vm/drop_caches As this is a non-destructive operation and dirty objects are not freeable, the user should run `sync' first. ==== dbench ==== dbench 10 -t 60 -c results.txt ==== dd ==== funktioniert immer, für sequentielle Schreib/Lesetests ok. dd if=/dev/zero of=/ziel/testfile.dd bs=1000M count=1 oflag=direct Mit Zufallsdaten um Kompressions-/dedup-Effekte auszuschließen (z.B. bei SSDs): sudo dd if=/dev/urandom of=randfile bs=1M count=1024 && sync sudo dd if=randfile of=/dev/ZIEL bs=4k count=100000 oflag=direct,dsync ==== fio ==== sudo fio --filename=/dev/ZIEL --size=20G --direct=1 --sync=1 --rw=write --bs=4k --numjobs=1 --iodepth=1 --runtime=60 --time_based --group_reporting --name=Schreibtest siehe "man fio", wichtig sind z.B. --direct für O_DIRECT-Zugriff (ohne Kernel page cache) und --sync für syncrone (O_DSYNC)-Zugriff um Schreibcaches abzuschalten. ==== IOMeter ==== IOMeter ist ein Festplattenbenchmark, der neue Entwicklungen (z.B. Dualcore und NCQ von Sata) besser berücksichtigt. [[http://www.iometer.org/doc/downloads.html|IOMeter Download]] ==== hdparm-test ==== mit dem Standard-tool hdparm kann man die Interfacegeschwindigkeit und eine groben Geschwindigkeitstest machen. Dabei werden aber nicht unterschiedliche Zonen bewertet. sudo hdparm -T /dev/hda bzw. sudo hdparm -t /dev/hda (hda ändern auf anderen Wert wenn nötig) siehe [[http://www.die.net/doc/linux/man/man8/hdparm.8.html|hdparm Handbuch]] ==== bonnie++ ==== bonnie++ start beim Aufruf einen Festplattentest im aktuellen Verzeichnis und gibt dann auf der Standardausgabe einen Report aus, den man mit bon_csv2html zu einer html-Datei verarbeiten kann. Dazu wird/werden die letzten Zeile(n) ausgewertet. Bei einem Server mit 32GB RAM und Benutzer "benchuser" : bonnie++ -r 32768 -u benchuser > output.txt Mehrere Pluszeichen weisen darauf hin das der Testlauf zu schnell fertig war um präzise Messergebnise zu erhalten. Es muss mit ''-n'' die Anzahl der Dateien hochgesetzt werden. bonnie++ -r 32768 -n 4 -u benchuser > output.txt Einen einzelnen Testlauf kann man durch Pipes direkt als html-Datei ausgeben lassen: bonnie++ | tail -n 1 | bon_csv2html > report.html bei umfangreichen Testläufen sollte man sich die Ergebnisse abspeichern und kann sie dann später verarbeiten (etwa so: ''bonnie++ > bonnie-report.txt''). Man kann sich die Ergebnisse auch als Textdatei aufbereiten lassen (mit csv2txt). Wichtig sind bei den Ausgaben von bonnie++ dabei immer die Zeilen am Ende (im CSV-Format) die in etwa so aussehen: Rechnername,3G,16310,45,26006,15,15854,5,19301,50,32735,6,131.5,0,16,+++++,+++,+++++,+++,30870,82,29483,82,+++++,+++,23010,61 wobei die Tests (bzw. die Daten) mit "+++" nicht aussagekräftig genug waren. Die Optionen (Anzahl der Testläufe etc.) findet man im Handbuch (''man bonnie++''). [[http://www.linux.com/feature/139742|Using Bonnie++ for filesystem performance benchmarking]] ==== iozone3 ==== [[http://www.linux.com/feature/139744|IOzone for filesystem performance benchmarking]] ===== CPU ===== ===== Mailserver ===== [[http://www.linux-magazin.de/heft_abo/ausgaben/2006/12/post_belastungsprobe?special=Groupware&category=16633|Mit dem Mailserver-Benchmark Postal Engpässen auf der Spur - Post-Belastungsprobe]] ===== Netzwerk ===== * netperf * tbench (im dbench-Paket) * [[http://www.heise.de/software/download/netio/2155|netio]] (Protokolle: TCP/UDP/NetBIOS) * [[http://sourceforge.net/projects/iperf/|iperf]] / [[http://sourceforge.net/project/showfiles.php?group_id=128336&package_id=268197|jperf (plattformunabhängige Java-Variante)]] * Aufruf **Server**: iperf -s (wartet per default auf Port 5001 auf Verbindungen * Aufruf **Client**: z.B.iperf -P 1 -i 1 -p 5001 -w 56K -f k -t 10 -c SERVER-IP :!: Zwei Netzwerkkarten im gleichen Server zu testen ist (ohne weitere Verrenkungen) nicht möglich, der Kernel erkennt das dies ineffizient ist. Dennoch gibt es [[http://serverfault.com/questions/127636/force-local-ip-traffic-to-an-external-interface|Lösungen zu diesem "Problem"]], getestet habe ich [[http://serverfault.com/a/309442|diese Lösung]]. ==== DNS ==== [[ftp://ftp.nominum.com/pub/nominum/dnsperf/|dnsperf]] ([[http://snobbycloud.blogspot.de/2012/07/installing-dnsperf-to-ubuntu-1204.html|muss kompiliert werden]]) ==== NFS ==== * nhfsstone ==== SMTP ==== * [[http://www.coker.com.au/postal/|postal]] * [[http://www.slamd.com/|SLAMD Distributed Load Generation Engine]] * [[http://www.postfix.org/smtp-source.1.html|smtp-source]] (ein SMTP/LMTP Nachrichtengenerator) und [[http://www.postfix.org/smtp-sink.1.html|smtp-sink (nimmt Nachrichten an und verwirft diese)]] von Wietse Venema (siehe http://www.postfix.org/TUNING_README.html) **smtp-sink Beispiel**: Der Rechner "blackhole.domain.tld" soll auf Port 25 (SMTP) 80000 mails entgegennehmen (und verwerfen). smtp-sink läuft als Benutzer "maildrop", da root nicht erlaubt ist. smtp-sink -u maildrop -c blackhole.domain.tld:25 80000 ==== HTTP ==== * [[http://httpd.apache.org/docs/1.3/programs/ab.html|Apache Bench (ab): Apache Bestandteil]] z. B. mit 10 konkurrierenden Verbindungen und 50 Anfragen: ab -n 50 -c 10 $URL * siege * httperf (bisher nicht in [[debian:Debian]] stable sondern nur in testing + bei Ubuntu enthalten) * [[http://jakarta.apache.org/jmeter/|Jmeter]] * [[http://www.paessler.com/webstress|Webstress (Windows)]] * [[http://www.xenoclast.org/doc/benchmark/HTTP-benchmarking-HOWTO/|The Linux HTTP Benchmarking HOWTO]] ===== X-Server ===== * xengine ===== Stresstests ===== * zum belasten der CPU (prüfen von Systemstabilität) eignet sich cpuburn ganz gut. * contest: Kernelkompilationstests, eine ziemliche reale Aufgabe