Prestazioni dei filesystem Loopback


10

Qualcuno ha eseguito test di prestazioni / benchmarking sui file system di loopback di Linux? Qual è stata la tua esperienza finora? C'è qualche grave degrado delle prestazioni? Che ne dici di robustezza?

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


Dovrebbe essere abbastanza semplice eseguire bonnie ++ sul tuo disco nativo e su un disco di loopback per confrontare le prestazioni.
ceving

Risposte:


11

Ho fatto un po 'di benchmarking con le operazioni di scrittura in un dispositivo di loopback. Ecco la conclusione:

  • Se esegui la sincronizzazione dopo ogni scrittura, un dispositivo di loopback ha prestazioni significativamente peggiori (quasi due volte più lente).
  • Se si consente alla cache del disco di uno scheduler IO di fare il proprio lavoro, allora non c'è praticamente alcuna differenza tra l'utilizzo di un dispositivo di loopback e l'accesso diretto al disco.

Risultati benchmark

Innanzitutto, ho eseguito un benchmark su un dispositivo di loopback in tmpfs di 8 GB e un dispositivo di loopback all'interno di quel dispositivo di loopback ( con sincronizzazione dopo ogni operazione di scrittura ):

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)

Chiaramente, c'è qualche differenza nelle prestazioni quando si utilizzano dispositivi di loopback con sincronizzazione su scrittura.
Quindi ho ripetuto lo stesso test sul mio HDD.
ext4 (HDD, 1000 MB, 3 volte):

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

ext4 in ext4 (HDD, 945 MB):

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

Stesso benchmark su HDD, ora senza sincronizzazione dopo ogni scrittura ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync), misurato come <size>/ <time in seconds>).
ext4 (HDD, 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 (HDD, 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)

(sorprendentemente, il benchmark di loopback ha un aspetto migliore rispetto al benchmark del disco crudo, presumibilmente a causa delle dimensioni più ridotte del dispositivo di loopback, quindi meno tempo viene impiegato sull'effettiva sincronizzazione su disco)

Impostazione benchmark

Innanzitutto, ho creato un filesystem di loopback di 8G in my / tmp (tmpfs):

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

Quindi ho stabilito una baseline riempiendo il file loopback montato con i dati:

$ 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

Dopo averlo fatto, ho creato un altro dispositivo di loopback nel precedente dispositivo di loopback:

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

E ha eseguito nuovamente il benchmark, dieci volte:

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

e quindi ho smontato il file di prova e rimosso:

sudo umount /tmp/mountpoint
sudo umount /mnt

(allo stesso modo per il test sull'HDD, tranne che ho anche aggiunto count=1000per impedire al test di riempire il mio intero disco)
(e per il test di non scrittura su sincronizzazione, ho eseguito il cronometraggio dde l' syncoperazione)


0

Non ho avuto problemi. È stato tutto solido come una roccia. La cache del filesystem e lo scheduler IO in Linux sono abbastanza sensibili da non fare alcuna differenza evidente tra la richiesta diretta di un disco e la richiesta di una sezione di un file su un disco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.