[FUG-BR] ZFS vs UFS para MySQL

Edinilson J. Santos edinilson em atinet.com.br
Qui Fev 15 14:49:30 BRST 2018


Em 15/02/2018 03:15, Paulo Henrique escreveu:
> Em 15 de fev de 2018 01:58, "Willy Romão" <willyr.goncalves em gmail.com>
> escreveu:
>
> Olá Pessoal.
>
> Gostaria da opinião de vocês quanto a performance do ZFS e do UFS para os
> seguintes cenários.
>
> Tenho dois ambientes em H.A. (CARP + HAST) rodando em homologação nos
> seguintes hardwares:
>
> 2x Dell PowerEdge R410:
> 8Gb RAM;
> 2x Xeon E5620;
> Controladora RAID PERC H330 Mini;
> 1x 300GB 15K RPM SAS 6Gbps;
>
> Configurações de Hardware/S.O. dos ambientes:
> Sistema Operacional: FreeBSD 11.1-RELEASE-p4;
> Modo de uso da controladora RAID: HBA (http://www.dell.com/support/
> manuals/us/en/19/poweredge-rc-h730/perc9ugpublication/
> switching-the-controller-to-hba-mode?guid=guid-1fcc87e1-
> d534-451a-9947-56f1175886c5&lang=en-us <http://www.dell.com/support/
> manuals/us/en/19/poweredge-rc-h730/perc9ugpublication/
> switching-the-controller-to-hba-mode?guid=guid-1fcc87e1-
> d534-451a-9947-56f1175886c5&lang=en-us>);
> Driver da controladora utilizado: mrsas (https://www.freebsd.org/
> releases/11.1R/hardware.html#disk <https://www.freebsd.org/
> releases/11.1R/hardware.html#disk>);
>
> Ambiente/Cenário 1 (ZFS):
> Opções do Filesystem: noatime, compression=lz4;
> Configurações do serviço MySQL: my.cnf default da instalação do MySQL no
> FreeBSD;
>
> *Obs. 1: A partição onde há atuação do HAST para replicação dos dados é a
> partição do MySQL;
> *Obs. 2: houveram tentativas de tuning no ZFS específico para o MySQL, mas
> que não mudaram em grandes fatores os resultados dos testes. (
> https://www.patpro.net/blog/index.php/2014/03/09/2617-mysql-on-zfs-on-freebsd/
> <https://www.patpro.net/blog/index.php/2014/03/09/2617-
> mysql-on-zfs-on-freebsd/>);
>
> Ambiente/Cenário 2 (UFS):
> Opções no Filesystem: noatime;
> Configurações do serviço MySQL: my.cnf default da instalação do MySQL no
> FreeBSD;
>
> *Obs. 1: A partição onde há atuação do HAST para replicação dos dados é a
> partição do MySQL;
>
>
> Testes de desempenho cenário 1 (ZFS):
> Tempo de execução da Query1 pela primeira vez: ~1,99 s
> Tempo de execução da Query1 pela enésima vez: ~734 ms
> Tempo de execução da Query2 pela primeira vez: ~3,73 s
> Tempo de execução da Query2 pela enésima vez: ~1,16 s
> *Obs. 1: As queries executadas nos testes, serão largamente utilizadas no
> sistema em produção;
> *Obs. 2: Foram executadas também lotes de queries
> (SELECTs/INSERTs/UPDATEs), mas não há diferença significante
> proporcionalmente se tratando dos tempos de execução.
>
>
> Testes de desempenho cenário 2 (UFS):
> Tempo de execução da Query1 pela primeira vez: ~560 ms
> Tempo de execução da Query1 pela enésima vez: ~490 ms
> Tempo de execução da Query2 pela primeira vez: ~1,16 s
> Tempo de execução da Query2 pela enésima vez: ~734 ms
> *Obs. 1: As queries executadas nos testes, serão largamente utilizadas no
> sistema em produção;
> *Obs. 2: Foram executadas também lotes de queries
> (SELECTs/INSERTs/UPDATEs), mas não há diferença significante
> proporcionalmente se tratando dos tempos de execução.
>
>
> Após muita leitura sobre comparações entre ZFS e UFS, entendo que para a
> maioria dos casos o UFS parece ser mais rápido, mas é claro, não há todas
> as features e nem a flexibilidade que há no ZFS.
> Essas features e flexibilidade são muito importantes neste ambiente, logo,
> provavelmente eu usarei ZFS em produção.
> De qualquer forma, entendo que a diferença de perfomance entre ZFS e UFS
> neste caso foi significativamente grande em comparação com os testes de
> performance que eu consegui analisar na internet.
> Por este motivo, gostaria da opinião de vocês sobre o ambiente utilizando
> cada um desses filesystems, ou até uma possível correção que poderia fazer
> com que o ZFS chegasse um pouco mais perto do desempenho do UFS.
>
> Desculpem pelo textão, mas foi a melhor forma que encontrei de passar todas
> essas informações.
>
> Grato pela atenção,
>
> Willy Romão G. França
>
> Contatos / Contacts:
> +55 (31) 3069-8109
> +55 3003-5410 - Ramal / Extension: 7090
> E-mail / Hangout: willyr.goncalves em gmail.com <mailto:willyr.goncalves@
> gmail.com>
> LinkedIn: https://www.linkedin.com/in/willyrgf/
> Twitter: @willyrgf
>
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
>
>
> O ZFS só vai ter diferença quando se tem muita memoria para manter cache de
> leitura no ARC/L2ARC e o principal fator que melhora é com relação a
> escrita pois a concorrência entre leitura e escrita do disco diminuira com
> blocos destinados a leitura sendo entregue atravéz do cache de memoria.
>
> Att.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
>
Não sou especialista em ZFS, mas pelas informações que passou as minhas 
observações seria:

Na parte do ZFS:
1o) Memoria RAM: ZFS precisa de *MUITA* memória RAM. Te digo que, com 
8gb, não irá atender nem os requisitos minimos do MySQL, quem dirá do ZFS;
2o) Dependendo do seu cenario, utilizar SSD para o cache do ZFS irá 
fazer MUITA diferença;
3o) O paragrafo que transcrevo aqui foi retirado do livro FreeBSD 
Mastery: ZFS de Michael W Lucas e Allan Jude [1]: "Certain 
high-intensity worloads on certain hardware performance better on UFS2 
than on ZFS, especially if you have hard drives with the actual 512-byte 
blocks. If you expect to beat the living snot out on your database, test 
its performance with both UFS2 and ZFS.";
4o) Tenha certeza que desligou *TUDO* relacionado a RAID da sua 
controladora. Ela deverá trabalhar como JBOD. Utilizar qualquer coisa 
que seja da controladora RAID só irá causar problemas para você e para o 
ZFS.

Na parte do MySQL:
1o) Dificilmente utilizar o default my.cnf irá atender o seu caso. 
Acredito que melhorar os caches de selects irá resultar em muita 
diferença de performance para selects repetidos.

Edinilson

[1] https://www.michaelwlucas.com/os/fmzfs



Mais detalhes sobre a lista de discussão freebsd