Desempenho de sistemas de arquivos de loopback

10

Alguém já fez testes de desempenho / benchmarking em sistemas de arquivos de loopback do Linux? Qual tem sido sua experiência até agora. Existe alguma degradação séria no desempenho? E quanto à robustez?

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

psaccounts
fonte
Deve ser bastante simples executar o bonnie ++ em seu disco nativo e em um disco de loopback para comparar o desempenho.
ceving 05/09/11

Respostas:

11

Eu fiz alguns testes comparativos com operações de gravação em um dispositivo de loopback. Aqui está a conclusão:

  • Se você sincronizar após cada gravação, um dispositivo de loopback terá um desempenho significativamente pior (quase duas vezes mais lento).
  • Se você permitir ao cache de disco que um agendador de E / S faça seu trabalho, quase não haverá diferença entre o uso de um dispositivo de loopback e o acesso direto ao disco.

Resultados de referência

Primeiro, eu executei uma referência em um dispositivo de loopback em tmpfs de 8 GB e um dispositivo de loopback dentro desse dispositivo de loopback ( com sincronização após cada operação de gravação ):

ext4 em tmpfs:

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

ext4 em extf em tmpfs:

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

Claramente, há alguma diferença no desempenho ao usar dispositivos de loopback com sincronização na gravação.
Então eu repeti o mesmo teste no meu disco rígido.
ext4 (HDD, 1000 MB, 3 vezes):

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

ext4 em ext4 (HDD, 945MB):

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

A mesma referência no disco rígido, agora sem sincronização após cada gravação ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync)medida como <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 em ext4 (HDD, 945MB):

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

(surpreendentemente, o benchmark de loopback parece melhor que o benchmark de disco bruto, provavelmente por causa do tamanho menor do dispositivo de loopback, portanto, menos tempo é gasto na sincronização real com o disco)

Configuração de benchmark

Primeiro, criei um sistema de arquivos de loopback de 8G no meu / tmp (tmpfs):

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

Em seguida, estabeleci uma linha de base preenchendo o arquivo de loopback montado com dados:

$ 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

Depois disso, criei outro dispositivo de loopback no dispositivo de loopback anterior:

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

E executou o benchmark novamente, dez vezes:

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

desmontei o arquivo de teste e o removi:

sudo umount /tmp/mountpoint
sudo umount /mnt

(da mesma forma para o teste no disco rígido, exceto que eu também adicionei count=1000para impedir que o teste encha todo o meu disco)
(e para o teste de não gravação na sincronização, executei o tempo dde a syncoperação)

Rob W
fonte
0

Eu não tive problemas. Tudo tem sido sólido. O cache do sistema de arquivos e o planejador de E / S no Linux são sensatos o suficiente para não fazer nenhuma diferença perceptível entre solicitar um disco diretamente e solicitar uma seção de um arquivo em um disco.

SystemParadox
fonte