MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

XFS vs EXT4 – Comparando o desempenho do MongoDB no AWS EC2


A AWS é uma plataforma de nuvem extremamente popular e confiável para gerenciar implantações do MongoDB, mas a questão do XFS vs EXT4 faz com que muitos desenvolvedores se perguntem qual sistema de arquivos Linux lhes dará o melhor desempenho para seus aplicativos. O guia oficial do MongoDB sobre implantação em produção recomenda o uso do sistema de arquivos XFS no Linux, especialmente ao implantar o mecanismo de armazenamento WiredTiger. A recomendação, no entanto, não nos diz por que devemos esperar um aumento de desempenho ou que tipo de ganhos de desempenho teremos. Decidimos chegar ao fundo disso investigando quantitativamente o desempenho do MongoDB no XFS para que você possa comparar se o EXT4 é a melhor opção para suas instâncias do AWS EC2.

Sistema de arquivos XFS


O XFS é um sistema de arquivos de registro em diário de 64 bits altamente escalável e de alto desempenho desenvolvido na SGI em 1993 e portado para Linux em 2002. Ele suporta E/S altamente paralela e tamanhos de sistema de arquivos de até 9 Exabytes e registra apenas os metadados do sistema de arquivos, não os dados do usuário. Alguns dos principais recursos de aprimoramento de desempenho do XFS são:
    • O acesso paralelizado por meio de grupos de alocação garante que vários threads possam executar E/S simultaneamente no mesmo volume.
    • A alocação baseada em extensão reduz a fragmentação, o tamanho dos metadados e melhora o desempenho de E/S ao permitir operações de E/S maiores e em menor número.
    • A alocação atrasada melhora a contiguidade e o desempenho dos dados. A fragmentação é reduzida combinando gravações e alocando extensões em grandes partes, e arquivos gravados aleatoriamente (como aqueles que são mapeados na memória) podem ser alocados de forma contígua

Há muitos outros recursos do XFS para explorar, e você pode saber mais no site do XFS e no Guia do usuário do XFS.

Executando testes de desempenho no MongoDB


Como você deve ter aprendido em nossas postagens anteriores, usamos o YCSB para avaliar o desempenho do MongoDB, incluindo uma comparação detalhada do desempenho do MongoDB com suporte de MMAP em vários provedores de nuvem. Decidimos usar a mesma carga de trabalho do YCSB que usamos anteriormente:Carga de trabalho A (Atualização pesada:50% de leituras + 50% de atualizações). A fase de inserção da carga de trabalho mede o desempenho de 100% das cargas de trabalho de gravação, enquanto a fase de carregamento mede o desempenho em relação à carga de trabalho real (50/50% de leitura/atualização).

Nossos testes foram executados no driver de sincronização do MongoDB e a distribuição do Linux era o Amazon Linux (4.4.44-39.55.amzn1.x86_64). Pegamos o MongoDB versão 3.2.10 rodando o WiredTiger para nossos testes, já que o WT é onde os melhores ganhos eram esperados e executamos os testes em 2 equipamentos de hardware diferentes:
  • Discos de alta velocidade :instância do AWS EC2 c3.large em que o MongoDB estava usando discos SSD na configuração RAID 0 para armazenamento (mapeia para o tamanho do cluster do ScaleGrid HighPerfLarge).
  • Discos de velocidade média :instância m3.medium do AWS EC2 em que o MongoDB estava usando o disco provisionado de IOPS do EBS (Elastic Block Store) definido em 300 IOPS (mapa para o tamanho de cluster do ScaleGrid Médio).

Observação:qualquer tipo de teste de desempenho em ambientes virtualizados deve ser feito com cautela. Nosso objetivo aqui não é comparar os números de desempenho nesses ambientes, mas fornecer algumas medidas quantitativas das diferenças de desempenho entre EXT4 e XFS no mesmo ambiente virtualizado.


Disco SSD de alta velocidade


Executamos o seguinte teste em nosso equipamento de alto desempenho:
  1. Inseriu 6 milhões registros em várias cargas de servidor (variando o número de threads de cliente YCSB).
  2. Correu a carga de trabalho na contagem de operações de 10 milhões registros em várias cargas de servidor.

Resultados de desempenho do disco SSD


Características de taxa de transferência/latência para inserção de registro de 6 milhões na configuração de alto desempenho:



Características de taxa de transferência/latência para 10 milhões de operações de gravação/atualização na configuração de alto desempenho:


Observações do disco SSD

  • O XFS é espetacularmente rápido durante a fase de inserção e a execução da carga de trabalho. Em contagens de threads mais baixas, é até 50% mais rápido que o EXT4. À medida que a carga aumentava, ambos os sistemas de arquivos eram limitados pela taxa de transferência do hardware subjacente, mas o XFS ainda mantinha sua liderança.
  • A latência para XFS e EXT4 foi comparável em ambas as execuções. Observe que todos os números estão em microssegundos.

Disco IOPS provisionado EBS mais lento (300 IOPS)


O seguinte teste foi executado em nossa plataforma de desempenho de médio porte:
  1. 3 milhões inseridos registros em várias cargas de servidor (variando o número de threads de cliente YCSB).
  2. Correu a carga de trabalho na contagem de operações de 5 milhões registros em várias cargas de servidor.

Dada a nossa experiência na configuração de ponta, esperávamos que o XFS tivesse uma liderança decente também neste equipamento.

Resultados de desempenho do disco IOPS


Características de taxa de transferência/latência para inserção de registro 3M na configuração média:



Características de taxa de transferência/latência para operações de gravação/atualização de 5 milhões na configuração média:


Observações do disco IOPS

  • XFS é comparável, embora um pouco atrás do EXT4 na configuração de tamanho médio. Parece que neste nível de recursos do sistema, as otimizações de desempenho do XFS não estão realmente fazendo diferença. Essa é uma observação importante se você estiver pensando em implantar o XFS em instâncias menores na esperança de melhorar o desempenho.

XFS vs EXT4 no AWS EC2


Em termos de desempenho, o XFS é de fato um multiplicador de força quando combinado com discos de alta velocidade dos quais pode tirar vantagem real. Para sistemas de baixo a médio porte, não parece ser capaz de fazer muito para melhorar seu desempenho.