Práticas recomendadas de E/S direta do Linux para o Azure NetApp Files

Este artigo ajuda você a entender as práticas recomendadas de E/S direta para o Azure NetApp Files.

E/S Direta

O parâmetro mais comum usado na comparação de desempenho do armazenamento é a E/S direta. Ela é compatível com o FIO e o Vdbench. O DISKSPD oferece suporte para o constructo semelhante de E/S mapeada na memória. Com a E/S direta, o cache do sistema de arquivos é ignorado, as operações de cópia de acesso direto à memória são evitadas e os testes de armazenamento são feitos de maneira rápida e simples.

O uso do parâmetro de E/S direta facilita o teste de armazenamento. Não é lido nenhum do cache do sistema de arquivos no cliente. Assim, o teste está na verdade pressionando o protocolo de armazenamento e o próprio serviço, em vez da velocidade de acesso à memória. Além disso, sem as cópias de memória do DMA, as operações de leitura e gravação são eficientes da perspectiva do processamento.

Veja o comando do Linux dd como uma carga de trabalho de exemplo. Sem o sinalizador odirect opcional, toda a E/S gerada por dd são recebidas do cache de buffer do Linux. As leituras com os blocos que já estão na memória não são recuperadas do armazenamento. As leituras que resultam em perda no cache de buffer acabam sendo lidas do armazenamento usando a leitura antecipada do NFS com resultados variados, dependendo de fatores como rsize da montagem e ajustes de leitura antecipada do cliente. Quando as gravações são enviadas por meio do cache de buffer, elas usam um mecanismo de write-behind, que não tem ajuste e usa uma quantidade significativa de paralelismo para enviar os dados ao dispositivo de armazenamento. Você pode tentar executar dois fluxos independentes de E/S, um dd para leituras e outro dd para gravações. Mas, na verdade, o sistema operacional sem ajuste favorece as gravações em vez das leituras e usa mais paralelismo.

Além do banco de dados, poucos aplicativos usam a E/S direta. Geralmente, eles optam por aproveitar as vantagens de um cache de memória grande para leituras repetidas e um cache com write-behind para gravações assíncronas. Em resumo, o uso de E/S direta transformará o teste em um microparâmetro de comparação se o aplicativo que está sendo sintetizado usar o cache do sistema de arquivos.

Veja a seguir alguns bancos de dados que dão suporte à E/S direta:

  • Oracle
  • SAP HANA
  • MySQL (mecanismo de armazenamento InnoDB)
  • RocksDB
  • PostgreSQL
  • Teradata

Práticas recomendadas

O teste com directio é uma excelente maneira de entender os limites do serviço de armazenamento e do cliente. Para entender melhor como o aplicativo em si se comportará (se ele não usar directio), execute também alguns testes por meio do cache do sistema de arquivos.

Próximas etapas