Benchmark Ihres Systems (CPU, Daten IO, MySQL) durchführen mit sysbench
sysbench ist eine Benchmarksuite, welche es Ihnen erlaubt sich schnell einen Überblick über die Leistung Ihres Systems zu verschaffen, welcher wichtig ist, wenn Sie vorhaben eine Datenbank unter hoher Last laufen zu lassen. Dieses Tutorial erklärt Ihnen, wie Sie mit sysbench Ihre CPU, Daten IO und MySQL Leistung benchmarken.
Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie.
1 Installation von sysbench
Unter Debian/Ubuntu kann sysbench wie folgt installiert werden:
apt-get install sysbench
Schauen Sie sich außerdem
man sysbench
an um mehr über seine Parameter zu erfahren.
Ich werde nun drei einfache, grundlegende Tests durchführen um die CPU-, Daten IO- und MySQL Leistung zu messen.
2 CPU Benchmark
Sie können Ihre CPU Leistung wie folgt benchmarken:
sysbench –test=cpu –cpu-max-prime=20000 run
root@server1:~# sysbench –test=cpu –cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options: Number of threads: 1 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 20000 Test execution summary: total time: 23.8724s total number of events: 10000 total time taken by event execution: 23.8716 per-request statistics: min: 2.31ms avg: 2.39ms max: 6.39ms approx. 95 percentile: 2.44ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 23.8716/0.00 root@server1:~#
Sie werden eine Menge Zahlen sehen, die wichtigste ist jedoch total time (gesamte Zeit):
total time: 23.8724s
Natürlich müssen Sie die Benchmarks mit anderen Systemen vergleichen um herauszufinden, ob Sie gut darstehen.
3 Daten IO Benchmark
Um die Daten IO Leistung zu messen benötigen Sie zu allererst eine Datei, welche viel größer ist als Ihr Arbeitsspeicher (andernfalls wird Ihr System den Arbeitsspeicher zum cachen benutzen und damit die Benchmarkergebnisse verfälschen) – 150GB ist hierfür ein guter Wert:
sysbench –test=fileio –file-total-size=150G prepare
Anschließend können Sie die Benchmarks ausführen:
sysbench –test=fileio –file-total-size=150G –file-test-mode=rndrw –init-rng=on –max-time=300 –max-requests=0 run
root@server1:~# sysbench –test=fileio –file-total-size=150G –file-test-mode=rndrw –init-rng=on –max-time=300 –max-requests=0 run
sysbench: /usr/lib/libmysqlclient.so.18: no version information available (required by sysbench) sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Initializing random number generator from timer. Extra file open flags: 0 128 files, 1.1719Gb each 150Gb total file size Block size 16Kb Number of random requests for random IO: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Time limit exceeded, exiting... Done. Operations performed: 600 Read, 400 Write, 1186 Other = 2186 Total Read 9.375Mb Written 6.25Mb Total transferred 15.625Mb (53.316Kb/sec) 3.33 Requests/sec executed Test execution summary: total time: 300.0975s total number of events: 1000 total time taken by event execution: 158.7611 per-request statistics: min: 0.01ms avg: 158.76ms max: 2596.96ms approx. 95 percentile: 482.29ms Threads fairness: events (avg/stddev): 1000.0000/0.00 execution time (avg/stddev): 158.7611/0.00 root@server1:~#
Die wichtige Zahl ist der Kb/sec Wert:
Read 9.375Mb Written 6.25Mb Total transferred 15.625Mb (53.316Kb/sec)
Nach dem Benchmark sollten Sie die 150GB Datei wieder löschen:
sysbench –test=fileio –file-total-size=150G cleanup
4 MySQL Benchmark
Um die MySQL Leistung zu messen müssen Sie zuerst eine Testtabelle in der Datenbank test erstellen, welche 1,000,000 Datenreihen hat:
sysbench –test=oltp –oltp-table-size=1000000 –mysql-db=test –mysql-user=root –mysql-password=yourrootsqlpassword prepare
root@server1:~# sysbench –test=oltp
–oltp-table-size=1000000 –mysql-db=test –mysql-user=root
–mysql-password=yourrootsqlpassword prepare
sysbench 0.4.12: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Creating table ’sbtest’…
Creating 1000000 records in table ’sbtest’…
root@server1:~#
Im Anschluss können Sie die MySQL Benchmarks wie folgt durchführen:
sysbench –test=oltp –oltp-table-size=1000000 –mysql-db=test –mysql-user=root –mysql-password=yourrootsqlpassword –max-time=60 –oltp-read-only=on –max-requests=0 –num-threads=8 run
root@server1:~# sysbench –test=oltp –oltp-table-size=1000000 –mysql-db=test –mysql-user=root –mysql-password=yourrootsqlpassword –max-time=60 –oltp-read-only=on –max-requests=0 –num-threads=8 run
sysbench 0.4.12: multi-threaded system evaluation benchmark No DB drivers specified, using mysql Running the test with following options: Number of threads: 8 Doing OLTP test. Running mixed OLTP test Doing read-only test Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases) Using "BEGIN" for starting transactions Using auto_inc on the id column Threads started! Time limit exceeded, exiting... (last message repeated 7 times) Done. OLTP test statistics: queries performed: read: 2253860 write: 0 other: 321980 total: 2575840 transactions: 160990 (2683.06 per sec.) deadlocks: 0 (0.00 per sec.) read/write requests: 2253860 (37562.81 per sec.) other operations: 321980 (5366.12 per sec.) Test execution summary: total time: 60.0024s total number of events: 160990 total time taken by event execution: 479.3419 per-request statistics: min: 0.81ms avg: 2.98ms max: 3283.40ms approx. 95 percentile: 4.62ms Threads fairness: events (avg/stddev): 20123.7500/63.52 execution time (avg/stddev): 59.9177/0.00 root@server1:~#
Die wichtige Zahl ist der Wert von transactions (pro Sekunde):
transactions: 160990 (2683.06 per sec.)
Um das System danach zu bereinigen (also die Tabelle zu entfernen) benutzen Sie:
sysbench –test=oltp –mysql-db=test –mysql-user=root –mysql-password=yourrootsqlpassword cleanup
5 Links
- sysbench: http://sysbench.sourceforge.net/