Leistung von Loopback-Dateisystemen

10

Hat jemand Leistungs- / Benchmarking-Tests auf Linux-Loopback-Dateisystemen durchgeführt? Welche Erfahrungen haben Sie bisher gemacht? Gibt es ernsthafte Leistungseinbußen? Wie wäre es mit Robustheit?

http://freshmeat.net/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file

psaccounts
quelle
Es sollte recht einfach sein, bonnie ++ auf Ihrer nativen Festplatte und auf einer Loopback-Festplatte auszuführen, um die Leistung zu vergleichen.
Ceving

Antworten:

11

Ich habe ein bisschen Benchmarking mit Schreibvorgängen in einem Loopback-Gerät durchgeführt. Hier ist die Schlussfolgerung:

  • Wenn Sie nach jedem Schreibvorgang synchronisieren, ist die Leistung eines Loopback-Geräts erheblich schlechter (fast doppelt so langsam).
  • Wenn Sie dem Festplatten-Cache erlauben, dass ein E / A-Scheduler seine Arbeit erledigt, gibt es kaum einen Unterschied zwischen der Verwendung eines Loopback-Geräts und dem direkten Festplattenzugriff.

Benchmark-Ergebnisse

Zuerst habe ich einen Benchmark auf einem Loopback-Gerät in tmpfs von 8 GB und einem Loopback-Gerät in diesem Loopback-Gerät ( mit Synchronisierung nach jedem Schreibvorgang ) ausgeführt:

ext4 in tmpfs:

Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s  (min 554  max 560)

ext4 in extf in tmpfs:

Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s  (min 294  max 299)

Es ist klar, dass es einige Leistungsunterschiede gibt, wenn Loopback-Geräte mit Sync-on-Write verwendet werden.
Dann wiederholte ich den gleichen Test auf meiner Festplatte.
ext4 (Festplatte, 1000 MB, 3-mal):

Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s  (min 23.0  max 24.1)

ext4 in ext4 (Festplatte, 945 MB):

Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s  (min 12.7  max 13.0)

Gleicher Benchmark auf der Festplatte, jetzt ohne Synchronisierung nach jedem Schreibvorgang ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync)gemessen als <size>/ <time in seconds>).
ext4 (Festplatte, 1000 MB):

Measured speed: 84.3, 86.1, 83.9, 86.1, 87.7
Average speed : 85.6 MB/s  (min 84.3  max 87.7)

ext4 in ext4 (Festplatte, 945 MB):

Measured speed: 89.9, 97.2, 82.9, 84.0, 82.7
Average speed : 87.3 MB/s  (min 82.7  max 97.2)

(Überraschenderweise sieht der Loopback-Benchmark besser aus als der Raw-Disk-Benchmark, vermutlich aufgrund der geringeren Größe des Loopback-Geräts, sodass weniger Zeit für die eigentliche Synchronisierung mit der Festplatte aufgewendet wird.)

Benchmark-Setup

Zuerst habe ich in meinem / tmp (tmpfs) ein Loopback-Dateisystem von 8G erstellt:

truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/

Dann habe ich eine Basislinie erstellt, indem ich die gemountete Loopback-Datei mit Daten gefüllt habe:

$ dd if=/dev/zero bs=1M of=/mnt/bigfile oflag=sync
dd: error writing '/mnt/bigfile': No space left on device
7492+0 records in
7491+0 records out
7855763456 bytes (7.9 GB) copied, 14.0959 s, 557 MB/s

Danach habe ich im vorherigen Loopback-Gerät ein weiteres Loopback-Gerät erstellt:

mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint

Und lief den Benchmark zehn Mal erneut:

$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s

und dann habe ich die Testdatei abgemeldet und entfernt:

sudo umount /tmp/mountpoint
sudo umount /mnt

(Ähnlich für den Test auf der Festplatte, außer dass ich auch hinzugefügt habe count=1000, um zu verhindern, dass der Test meine gesamte Festplatte füllt)
(und für den Test, bei dem keine Synchronisierung durchgeführt wurde, habe ich den ddund den syncVorgang zeitgesteuert ausgeführt ).

Rob W.
quelle
0

Ich hatte keine Probleme. Es war alles absolut solide. Der Dateisystem-Cache und der E / A-Scheduler unter Linux sind so sinnvoll, dass es keinen merklichen Unterschied zwischen der direkten Anforderung einer Festplatte und der Anforderung eines Abschnitts einer Datei auf einer Festplatte machen sollte.

SystemParadox
quelle