Benchmark: ext4 vs. btrfs (Disk-IO und MySQL-Performance)

Benchmark: ext4 vs. btrfs (Disk-IO und MySQL-Performance)

Wir haben das Linux-Standard-Dateisystem ext4 und das noch als experimentell gekennzeichnete btrfs, das viele interessante Features wie Live-Snapshots, Online-Resizing, RAID etc. mitbringt, in einem Benchmark mit dem Tool sysbench antreten lassen, um sowohl die Disk-IO-Performance als auch die MySQL-Performance zumessen.

Versuchsaufbau: Wir haben jeweils ein identisches Ubuntu 12.10 x86_64-Server-System mit 1GB RAM herangezogen (genauer gesagt, eine VirtualBox-VM, die immer auf demselben Host-System ausgeführt wurde), das nur eine einzige große /-Partition benutzt, einmal mit ext4, einmal mit btrfs und einmal mit btrfs + LZO-Kompression (mount-Parameter: compress=lzo). Auf diesem System waren jeweils nur MySQL (Pakete: mysql-server und mysql-client in Version 5.5.28-0ubuntu0.12.10.1) sowie sysbench installiert.

Zur Messung der Disk-IO-Performance haben wir 15GB Testdaten mit folgendem Befehl erzeugt:

sysbench --test=fileio --file-total-size=15G prepare

Die Disk-IO-Performance wurde dann mit folgendem Befehl gemessen:

sysbench --test=fileio --file-total-size=15G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

Zur Messung der MySQL-Performance haben wir 1.000.000 Testdatensätze angelegt...

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare

... und die Performance dann mit diesem Befehl gemessen (wobei wir erst den dritten Testlauf gemessen haben, damit sich MySQL aufwärmen konnte - Caches, etc.; allerdings haben sich zwischen den Testläufen keine signifikanten Unterschiede ergeben):

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

Ergebnisse Disk-IO-Performance:

Hier hinkt btrfs leider deutlich hinterher...

ext4 btrfs btrfs + compress=lzo
Operationen 1.413.085 376.639 374.762
Transferrate 32.281Mb/sec 8.6032Mb/sec 8.5613Mb/sec

Ergebnisse MySQL-Performance:

Bei der MySQL-Performance gibt es keine großen Unterschiede; btrfs ist sogar leicht schneller als ext4.

ext4 btrfs btrfs + compress=lzo
Transaktionen 715.56 per sec. 724.95 per sec. 718.90 per sec.

Nach oben