Velocidade lenta de leitura e gravação no FreeBSD ZFS

3

meu servidor de armazenamento doméstico, que atualmente consiste em unidades Seagate de 6 x 3 TB, 12 GB de RAM DDR3 e um Core i3 540, tem um desempenho muito ruim ao ler ou gravar no RAIDZ2 que eu configurei.

Usando /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10 :

10240 bytes transferred in 0.000221 secs (46331902 bytes/sec)

e o contrário:

10240 bytes transferred in 0.000107 secs (95656287 bytes/sec)

que se traduz em 46 MB / s de gravação e 95 MB / s em velocidade de leitura. Isso parece meio lento. Ou isso é perfeitamente normal?

Obrigado

Tobias Timpe

    
por Tobias Timpe 17.02.2017 / 22:44

1 resposta

4

Com o comando mostrado acima, você não está testando o desempenho de gravação em disco. Você está testando uma variedade de fatores, mas principalmente a latência do controlador e do disco. Para testar o desempenho de leitura do disco, você precisa percorrer aros para excluir o cache de disco de seus testes, o que não é trivial com o ZFS, pois significa desabilitar o cache do ARC. É muito mais fácil testar o desempenho de gravação: grave arquivos muito maiores, de preferência tamanhos que excedam a memória RAM do sistema.

Eu executei este comando no meu servidor de arquivos ZFS doméstico (Core i3-4130T com WDC WD80 espelhado):

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10000000
10240000000 bytes transferred in 55 secs (186900359 bytes/sec)

Não é ótimo, mas é um teste muito melhor do desempenho real de gravação. Um resultado interessante é que alcancei 187MB / seo desempenho avaliado de meus discos é de 178MB / s. Isso é um pouco estranho b / c benchmarks típicos são uma alta fração do desempenho nominal. Exceder isso pode ser explicado pela compactação de disco do ZFS.

Meus discos estão em um espelho ZFS (o desempenho de leitura 2x é mais útil para mim do que a eficiência de armazenamento), mas supondo que seus discos também sejam 5400 RPM, você deve esperar desempenho de gravação comparável.

Para saber por que uma contagem muito maior usando dd não é um ótimo teste, confira:

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1M count=1000000
1048576000000 bytes transferred in 223.56 secs (4690377542 bytes/sec)

Simplesmente aumentando o tamanho do bloco para 1M, meu desempenho de disco agora está fora das paradas. Até você perceber que a leitura de / dev / zero significa que a fonte de dados não possui entropia e é altamente compressível. dd não é a melhor ferramenta para testar o desempenho do disco.

Existem outras ferramentas na árvore de ports do FreeBSD (usei o bonnie & iozone no passado), que pode lhe fornecer mais informações sobre o desempenho de seus discos. Se você é realmente curioso, olhe para eles. Caso contrário, um teste de desempenho MUITO melhor para um servidor de arquivos em casa é copiar o conteúdo de um DVD ou Blu-ray entre dois discos e o tempo de cópia.

    
por 24.04.2017 / 08:10