Por que a performance do meu sistema de arquivos EFS está lenta?

Data da última atualização: 08/06/2022

A performance do meu Amazon Elastic File System (Amazon EFS) está muito lenta. Quais são alguns dos motivos comuns para a performance lenta e como solucionar esses problemas?

Breve descrição

A arquitetura distribuída de várias Zonas de Disponibilidade do Amazon EFS resulta em uma pequena sobrecarga de latência para cada operação de arquivo. O throughput geral normalmente aumenta à medida que o tamanho de E/S cresce, pois a sobrecarga é amortizada diante de uma quantidade de dados maior.

A performance do Amazon EFS depende de vários fatores, incluindo os seguintes:

  • Classe de armazenamento do EFS.
  • Modos de performance e throughput.
  • Tipo de operações executadas no EFS (como uso intensivo de metadados e assim por diante).
  • Propriedades dos dados armazenados no EFS (como tamanho e número de arquivos).
  • Opções de montagem.
  • Limitações do lado do cliente.

Resolução

Classe de armazenamento do EFS

Para obter mais informações, consulte Resumo de performance.

Modos de performance e throughput

Modos de performance

O Amazon EFS oferece dois modos de performance: Uso geral e E/S máxima. Os aplicativos podem dimensionar suas IOPS elasticamente até o limite associado ao modo de performance. Para determinar qual modo de performance usar, consulte Quais são as diferenças entre os modos de performance de Uso geral e E/S máxima no Amazon EFS?

Modos de throughput

As workloads baseadas em arquivos geralmente apresentam picos, gerando altos níveis de throughput para curtos períodos, mas gerando níveis mais baixos de throughput para períodos mais longos. O Amazon EFS foi projetado para atingir altos níveis de throughput por períodos de tempo.

O throughput e o IOPS configurados afetam a performance do Amazon EFS. É uma prática recomendada fazer um teste comparativo de seus requisitos de workload para ajudá-lo a selecionar os modos apropriados de throughput e performance. Ao selecionar throughput provisionado, selecione os valores que acomodam seus requisitos de workload adequadamente. No caso do modo de throughput intermitente, você pode aumentar o tamanho do Amazon EFS usando arquivos fictícios para aumentar o throughput da linha de base. Para analisar o throughput e as IOPS consumidas pelo sistema de arquivos, consulte Como usar matemática métrica com o Amazon EFS.

O Amazon EFS também pode aumentar a escala verticalmente até petabytes de volume de armazenamento e tem dois modos de throughput: intermitente e provisionado. No modo de intermitência, quanto maior o tamanho do sistema de arquivos EFS, maior a escalabilidade do throughput. Para o modo provisionado, um throughput para o seu sistema de arquivos é definido em MBs, independentemente da quantidade de dados. Para obter mais informações sobre os modos de throughput, consulte Como funcionam os créditos de intermitência do Amazon EFS?

Tipos de operações realizadas na instância EC2

Operações de E/S de metadados

A performance do EFS é prejudicada nas seguintes situações:

  • Quando os tamanhos dos arquivos são pequenos porque é um sistema distribuído. Essa arquitetura distribuída resulta em uma sobrecarga de baixa latência para cada operação de arquivo. Por causa dessa latência por operação, o throughput geral normalmente aumenta à medida que o tamanho de E/S cresce porque a sobrecarga é amortizada diante de uma quantidade de dados maior.
  • A performance em sistemas de arquivos compartilhados é prejudicada caso uma workload ou operação gere muitos arquivos pequenos em série. Isso faz com que a sobrecarga de cada operação aumente.
  • A E/S de metadados ocorre se o aplicativo executa operações com uso intensivo de metadados, como “ls”, “rm”, “mkdir”, “rmdir”, “lookup”, “getattr” ou “setattr” e assim por diante. Qualquer operação que exije que o sistema busque o endereço de um bloco específico é considerada uma workload com uso intenso de metadados. Para mais informações, consulte os links a seguir:
    Medição: como o Amazon EFS relata o tamanho do sistema de arquivos e dos objetos.
    Otimizando a performance de arquivos pequenos.

Opções de montagem

  • Se você montar o sistema de arquivos usando o amazon-efs-utils, as opções de montagem recomendadas serão aplicadas por padrão.
  • O uso de opções de montagem não padrão pode prejudicar a performance. Por exemplo, usando rsize e wsize mais baixos, diminuindo ou desativando o armazenamento em cache de atributos. Você pode verificar a saída do comando mount (montar) para ver as opções de montagem em vigor atualmente:

Para obter mais informações, consulte Montar o sistema de arquivos na instância EC2 e testar.

Exemplo de comando

>> mount

Exemplo de saída

fs-EXAMPLE3f75f.efs.us-east-1.amazonaws.com:/ on /home/ec2-user/efs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=<EXAMPLEIP>,local_lock=none,addr=<EXAMPLEIP>)

Versão do cliente NFS

O protocolo Network File System (NFS) versão 4.1 (NFSv4) fornece melhor performance para operações paralelas de leitura de arquivos pequenos (mais de 10 mil arquivos por segundo) em comparação com o NFSv4.0 (menos de mil arquivos por segundo).

Para obter mais informações, consulte Configurações de montagem do cliente NFS.

Limitações do lado do cliente

Gargalo na instância EC2

Se o aplicativo que usa o sistema de arquivos não estiver impulsionando a performance esperada do EFS, otimize o aplicativo. Além disso, faça o teste comparativo do host ou serviço no qual seu aplicativo está hospedado, como Amazon EC2, AWS Lambda e assim por diante. Uma crise de recursos na instância EC2 pode afetar a capacidade do seu aplicativo de usar o EFS de forma eficaz.

Para verificar se o EC2 está subprovisionado para os requisitos do seu aplicativo, monitore as métricas do Amazon EC2 CloudWatch, como CPU, Amazon Elastic Block Store (Amazon EBS) e assim por diante. A análise de várias métricas na arquitetura do seu aplicativo e nos requisitos de recursos ajuda a determinar se você deve reconfigurar seu aplicativo ou instância de acordo com seus requisitos.

Usando a versão 4.0+ do kernel Linux

Para uma performance ideal e para evitar uma variedade de bugs conhecidos do cliente NFS, é uma prática recomendada usar uma AMI que tenha um kernel Linux versão 4.0 ou mais recente.

Uma exceção a essa regra é o RHEL e o CentOS 7.3 e versões mais recentes. O kernel desses sistemas operacionais recebeu versões retroportadas das correções e aprimoramentos aplicados ao NFS v4.1. Para obter mais informações, consulte Suporte ao NFS.

Copiando arquivos

Ao copiar arquivos usando o comando cp, você pode enfrentar lentidão. Isso ocorre porque o comando copy é uma operação serial, o que significa que ele copia um arquivo de cada vez. Se o tamanho de cada arquivo for pequeno, o throughput para enviar esse arquivo será pequeno.

Você também pode notar latência ao enviar arquivos. A natureza distribuída do EFS significa que ele deve ser replicado em todos os pontos de montagem, para que haja sobrecarga por operação de arquivo. Portanto, a latência no envio de arquivos é um comportamento esperado.

Recomendações

É uma prática recomendada executar operações de E/S paralelas, como usar rsync. Se você estiver usando rsync, esteja ciente de que cp e rsync funcionam em operações seriais (de thread único) em vez de operações paralelas. Isso torna a cópia mais lenta. Use ferramentas como fpart ou NU Parallel. O Fpart é uma ferramenta que ajuda você a classificar árvores de arquivos e incluí-las em “partições”. O Fpart vem com um script de shell chamado fpsync que envolve o fpart e o rsync para iniciar vários rsync em paralelo. O Fpsync fornece seu próprio programador incorporado. Ao fazer isso, você pode concluir essas tarefas mais rapidamente do que usando o método serial mais comum.

Para obter mais informações, consulte dicas de performance do Amazon EFS.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?