Eu tenho uma pergunta relacionada sobre esse problema, mas ficou muito complicado e muito grande, então decidi que deveria dividir a questão em NFS e questões locais. Eu também tentei perguntar sobre isso na lista de discussão zfs-discuss sem muito sucesso.
Cópia lenta entre diretórios NFS / CIFS no mesmo servidor
Esboço: como estou configurado e o que estou esperando
- Eu tenho um pool do ZFS com 4 discos. 2 TB RED configurado como 2 espelhos que são distribuídos (RAID 10). No Linux, zfsonlinux. Não há dispositivos de cache ou log.
- Os dados são balanceados em espelhos (importantes para o ZFS)
- Cada disco pode ler (raw w / dd) a 147MB / seg em paralelo, fornecendo uma taxa de transferência combinada de 588MB / seg.
- Espero escrever cerca de 115 MB / s, ler 138 MB / s e reescrever 50 MB / s de dados sequenciais de cada disco, com base em benchmarks de um disco RED semelhante de 4 TB. Espero não menos que 100MB / s de leitura ou gravação, já que qualquer disco pode fazer isso nos dias de hoje.
- Pensei em ver 100% de utilização de IO em todos os 4 discos quando em carga lendo ou gravando dados sequenciais. E que os discos estariam gastando mais de 100MB / s com 100% de utilização.
- Eu pensei que o pool me daria cerca de 2x para escrever, 2x para regravar e 4x para leitura em um único disco - estou errado?
-
NOVO Achei que um zvol ext4 no mesmo pool teria aproximadamente a mesma velocidade que o ZFS
O que eu realmente obtenho
Acho que o desempenho de leitura do pool não é tão alto quanto eu esperava
bonnie ++ referência na piscina de alguns dias atrás
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
igor 63G 99 99 232132 47 118787 27 336 97 257072 22 92.7 6
bonnie ++ em uma única unidade de 4 TB VERMELHA por conta própria em um zpool
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
igor 63G 101 99 115288 30 49781 14 326 97 138250 13 111.6 8
De acordo com isso, as velocidades de leitura e reescrita são apropriadas com base nos resultados de um único drive VERMELHO de 4TB (eles são duplos). No entanto, a velocidade de leitura que eu esperava seria de cerca de 550MB / seg (4x a velocidade da unidade de 4TB) e eu esperaria pelo menos por volta de 400MB / seg. Em vez disso, estou vendo cerca de 260 MB / s
bonnie ++ na piscina a partir de agora, enquanto coletamos as informações abaixo. Não é o mesmo que antes, e nada mudou.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
igor 63G 103 99 207518 43 108810 24 342 98 302350 26 256.4 18
zpool iostat durante a gravação. Parece-me bem.
capacity operations bandwidth
pool alloc free read write read write
-------------------------------------------- ----- ----- ----- ----- ----- -----
pool2 1.23T 2.39T 0 1.89K 1.60K 238M
mirror 631G 1.20T 0 979 1.60K 120M
ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 0 1007 1.60K 124M
ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 0 975 0 120M
mirror 631G 1.20T 0 953 0 117M
ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 0 1.01K 0 128M
ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 0 953 0 117M
zpool iostat durante a reescrita. Parece ok para mim, eu acho .
capacity operations bandwidth
pool alloc free read write read write
-------------------------------------------- ----- ----- ----- ----- ----- -----
pool2 1.27T 2.35T 1015 923 125M 101M
mirror 651G 1.18T 505 465 62.2M 51.8M
ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 198 438 24.4M 51.7M
ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 306 384 37.8M 45.1M
mirror 651G 1.18T 510 457 63.2M 49.6M
ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 304 371 37.8M 43.3M
ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 206 423 25.5M 49.6M
Aqui é onde eu me pergunto o que está acontecendo
zpool iostat durante a leitura
capacity operations bandwidth
pool alloc free read write read write
-------------------------------------------- ----- ----- ----- ----- ----- -----
pool2 1.27T 2.35T 2.68K 32 339M 141K
mirror 651G 1.18T 1.34K 20 169M 90.0K
ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 748 9 92.5M 96.8K
ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 623 10 76.8M 96.8K
mirror 651G 1.18T 1.34K 11 170M 50.8K
ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 774 5 95.7M 56.0K
ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 599 6 74.0M 56.0K
iostat -x durante a mesma operação de leitura. Observe como% de IO não está em 100%.
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.60 0.00 661.30 6.00 83652.80 49.20 250.87 2.32 3.47 3.46 4.87 1.20 79.76
sdd 0.80 0.00 735.40 5.30 93273.20 49.20 251.98 2.60 3.51 3.51 4.15 1.20 89.04
sdf 0.50 0.00 656.70 3.80 83196.80 31.20 252.02 2.23 3.38 3.36 6.63 1.17 77.12
sda 0.70 0.00 738.30 3.30 93572.00 31.20 252.44 2.45 3.33 3.31 7.03 1.14 84.24
zpool e configurações de conjunto de dados de teste:
- atime is off
- compression is off
- ashift is 0 (autodetect - my understanding was that this was ok)
- zdb says disks are all ashift=12
- module - options zfs zvol_threads=32 zfs_arc_max=17179869184
- sync = standard
Editar - 30 de outubro de 2015
Eu fiz mais alguns testes
- dataset bonnie++ w/recordsize=1M = 226MB write, 392MB read much better
- dataset dd w/record size=1M = 260MB write, 392MB read much better
- zvol w/ext4 dd bs=1M = 128MB write, 107MB read why so slow?
- dataset 2 processess in parallel = 227MB write, 396MB read
- dd direct io makes no different on dataset and on zvol
Estou muito mais feliz com o desempenho com o aumento do tamanho do registro. Quase todos os arquivos da piscina têm mais de 1 MB. Então eu vou deixar assim. Os discos ainda não estão recebendo 100% de utilização, o que me faz pensar se ainda pode ser muito mais rápido. E agora estou me perguntando por que o desempenho do zvol é tão ruim, já que é algo que eu (levemente) uso.
Tenho o prazer de fornecer qualquer informação solicitada nos comentários / respostas. Há também toneladas de informações postadas na minha outra pergunta: Cópia lenta entre diretórios NFS / CIFS no mesmo servidor
Estou plenamente ciente de que posso simplesmente não entender algo e que isso pode não ser um problema. Agradecemos antecipadamente.
Para deixar claro, a pergunta é: Por que o pool do ZFS não é tão rápido quanto eu esperava? E talvez haja algo mais errado?