ext4 vs desempenho do btrfs no array SSD

1

Estou observando algo que não posso explicar. Eu estou tentando chegar a uma boa configuração do sistema de arquivos usando o controlador HP P420i e SSDs. Por curiosidade, tentei o BTRFS (ainda instável, então não posso esperar usá-lo) e notei que a velocidade de leitura é de cerca de 150% do ext4 - enquanto a velocidade de gravação é comparável.

Para ser claro, estou usando o RAID0 com dois SSDs com tamanho de faixa de 256Kb. Eu tenho 6 discos, então criei 3 discos lógicos, 2 SSDs cada - apenas para testes. E então eu os tenho formatado com ext4, XFS e BTRFS.

Quando eu escrevo (algo como dd se = / dev / zero de = test2 bs = contagem de 512k = 20000 conv = fdatasync, fsync) e observe o sistema usando iostats, vejo que tanto o BTRFS quanto o EXT4 estão escrevendo aproximadamente mesma taxa com um número semelhante de solicitações de gravação:

(ext4  - writing)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb               0.00     0.00    0.00 1791.00     0.00   895.00  1023.43   141.73   78.97   0.56 100.00
(btrfs - writing)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.00     0.00    0.00 1786.00     0.00   893.00  1024.00   137.87   77.21   0.56 100.10

Quando leio, observo uma imagem diferente:

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
(ext4 - reading)
sdb               0.00     0.00 4782.00    0.00   597.75     0.00   256.00     1.57    0.33   0.18  84.10
(btrfs - reading)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc             207.00     0.00 1794.00    0.00   886.40     0.00  1011.90    10.59    5.90   0.56 100.00
(xfs - reading)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sdd               0.00     0.00 4623.00    0.00   577.88     0.00   256.00     1.71    0.37   0.21  97.00

E isso é o que eu vejo se eu tentar ler o dispositivo de bloco com o dd:

(reading block device)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb           132055.00     0.00 4259.00    0.00   532.38     0.00   256.00     1.61    0.38   0.23  99.80
sdc           131750.00     0.00 4250.00    0.00   531.25     0.00   256.00     1.58    0.37   0.24 100.00
sdc           142476.00     0.00 4596.00    0.00   574.50     0.00   256.00     1.61    0.35   0.20  92.40

Todas as configurações parecem ser idênticas (agendador de E / S, leitura antecipada ...) para todos os 3 volumes lógicos.

Então, como todo o resto é igual, vejo claramente que o btrfs faz muito menos leituras por segundo e lê claramente mais bytes por segundo. E esse número de rrqm / s - esse é o número de solicitações mescladas. Eu só posso vê-lo no dispositivo que está formatado com o btrfs.

Kernel: 3.8.13-35.3.5.el6uek.x86_64 # 2 SMP sex 8 de agosto 21:58:11 PDT 2014 x86_64 x86_64 x86_64 GNU / Linux

intrigado. O que é tão especial que btrfs pode fazer (e ext4 e xfs não fazem) para fazer uma diferença?

P.S. Não, a compactação está desativada com a opção de montagem compress = no

    
por Nikolai Grigoriev 27.08.2014 / 01:17

1 resposta

1

O BTRFS usa extensivamente o cache de memória, que provavelmente é o que está causando esse comportamento. Eu observei velocidades de leitura de até 8GB / s no meu sistema Xeon E3-1220, o que é esperado com a minha configuração de memória atual. Observe que o hardware real é de 2 discos de 1,5 TB e 2 discos de 1 TB, com o arquivo de paginação em um SSD (isso também faz diferença).

[root@Helium ~]# dd if=/storage/btrfs-raid10/isos/ubcd533.iso.1 of=/dev/null bs=1M
592+1 records in
592+1 records out
621176832 bytes (621 MB) copied, 0.0770955 s, 8.1 GB/s
    
por 15.02.2015 / 22:41