Zum Inhalt springen

sysbench - System & Database Benchmark Spickzettel

sysbench - System & Database Benchmark Spickzettel

sysbench ist ein skriptfähiges, Multi-Thread Benchmark-Tool basierend auf LuaJIT. Es ist vor allem berühmt für Database Benchmarking (besonders MySQL und PostgreSQL via OLTP Workloads) aber versendet auch eingebaute Tests für CPU, Memory, File I/O, Threads und Mutexe. Weil Workloads parametriert und skriptfähig sind, produziert es wiederholbare Zahlen für Kapazitäts-Planung, Tuning und Vor/Nach Vergleiche.

Installation

PlattformBefehl
Debian/Ubuntusudo apt install sysbench
Fedora/RHELsudo dnf install sysbench
Arch Linuxsudo pacman -S sysbench
macOS (Homebrew)brew install sysbench
Aus QuelleAus dem akopytov/sysbench Repo bauen
Überprüfungsysbench --version

Befehlsstruktur

sysbench [testname] [options] {prepare | run | cleanup}
PhaseZweck
prepareDie Daten/Dateien erstellen die der Test benötigt
runBenchmark ausführen
cleanupTest Daten/Dateien entfernen

Häufige Globale Optionen

OptionBeschreibung
--threads=NAnzahl Worker-Threads
--time=NN Sekunden laufen (0 = bis Events erledigt)
--events=NGesamte Events limitieren
--rate=NZiel Events/Sek (Rate Limiting)
--report-interval=NAlle N Sekunden Zwischen-Stats ausgeben
--warmup-time=NVor Messung aufwärmen
--histogramLatentz-Histogramm anzeigen

CPU Benchmark

# Primes bis 20000 überprüfen über 4 Threads für 30s
sysbench cpu --cpu-max-prime=20000 --threads=4 --time=30 run
OptionBeschreibung
--cpu-max-prime=NObere Grenze für Prime-Berechnung (Arbeitsgröße)

Schlüssel-Metrik: Events pro Sekunde (höher ist besser).

Memory Benchmark

sysbench memory --memory-block-size=1K --memory-total-size=100G \
  --memory-oper=write --threads=4 run
OptionBeschreibung
--memory-block-sizeGröße jedes Memory-Vorgangs
--memory-total-sizeGesamtdaten zum Transferieren
`—memory-oper=readwrite`
`—memory-access-mode=seqrnd`

Schlüssel-Metrik: MiB/sek Transfer-Rate.

File I/O Benchmark

sysbench fileio --file-total-size=4G prepare
sysbench fileio --file-total-size=4G --file-test-mode=rndrw \
  --time=60 --threads=8 run
sysbench fileio --file-total-size=4G cleanup
OptionBeschreibung
--file-total-sizeGesamtgröße der Test-Dateien
--file-test-modeseqrd, seqwr, rndrd, rndwr, rndrw
--file-block-sizeI/O Block-Größe
--file-fsync-freqfsync Häufigkeit

Schlüssel-Metriken: IOPS, Durchsatz (MiB/s), Latenz.

Threads & Mutex

sysbench threads --threads=64 --thread-yields=1000 --time=30 run
sysbench mutex --threads=64 --mutex-num=4096 run

Database (OLTP) Benchmark

sysbench versendet Lua OLTP Scripts (oltp_read_write, oltp_read_only, oltp_point_select, etc.).

# 10 Tabellen von 1,000,000 Zeilen in einer MySQL Datenbank vorbereiten
sysbench oltp_read_write \
  --db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=bench \
  --mysql-password=secret --mysql-db=benchdb \
  --tables=10 --table-size=1000000 prepare

# Einen 5-Minuten gemischten Lese/Schreib-Test mit 16 Threads ausführen
sysbench oltp_read_write \
  --db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=bench \
  --mysql-password=secret --mysql-db=benchdb \
  --tables=10 --table-size=1000000 --threads=16 --time=300 \
  --report-interval=10 run

# Aufräumen
sysbench oltp_read_write --db-driver=mysql --mysql-db=benchdb cleanup
OptionBeschreibung
`—db-driver=mysqlpgsql`
--tables / --table-sizeDatensatz-Form
oltp_read_only / oltp_write_onlyWorkload-Mix Varianten
--db-ps-mode=disablePrepared Statements deaktivieren

Schlüssel-Metriken: Transactions/Sek (TPS), Queries/Sek (QPS), Latenz Perzentile.

Ergebnisse lesen

MetrikBedeutung
Events/SekDurchsatz des Vorgangs
Latenz (Avg/95th)Response-Zeit; beobachte das 95. Perzentil
TPS / QPSDatabase Transaktions/Abfrage-Durchsatz
Min/Max/AvgVerteilung pro-Event Timing

Häufige Workflows

# CPU vor/nach einer Governor-Änderung vergleichen
sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) --time=30 run

# Storage Sanity-Check auf einer neuen Festplatte
sysbench fileio --file-total-size=8G --file-test-mode=rndrw --time=60 run

# MySQL tunen: --threads variieren und TPS/Latenz-Skalierung beobachten

Ressourcen