Partilhar via


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

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

E/S diretas

O parâmetro mais comum usado no benchmarking de desempenho de armazenamento é a E/S direta. É apoiado pela FIO e Vdbench. DISKSPD oferece suporte para a construção semelhante de E/S mapeada em memória. Com a E/S direta, o cache do sistema de arquivos é ignorado, as operações para cópia de acesso direto à memória são evitadas e os testes de armazenamento são feitos de forma rápida e simples.

O uso do parâmetro de E/S direta facilita os testes de armazenamento. Nenhum dado é lido do cache do sistema de arquivos no cliente. Como tal, o teste está realmente enfatizando o protocolo de armazenamento e o serviço em si, em vez de velocidades de acesso à memória. Sem as cópias de memória DMA, as operações de leitura e gravação são eficientes do ponto de vista do processamento.

Tome o comando Linux dd como um exemplo de carga de trabalho. Sem o sinalizador opcional odirect , todas as E/S geradas por dd são servidas a partir do cache do buffer do Linux. As leituras com os blocos já na memória não são recuperadas do armazenamento. As leituras que resultam em uma falha de cache de buffer acabam sendo lidas do armazenamento usando NFS read-ahead com resultados variáveis, dependendo de fatores como montagem rsize e read-ahead ajustáveis pelo cliente. Quando as gravações são enviadas através do cache de buffer, elas usam um mecanismo write-behind, que é desajustado e usa uma quantidade significativa de paralelismo para enviar os dados para o 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, desafinado, favorece as gravações em detrimento das leituras e usa mais paralelismo delas.

Além do banco de dados, poucos aplicativos usam E/S direta. Em vez disso, eles aproveitam as vantagens de um cache de memória grande para leituras repetidas e um cache de gravação por trás para gravações assíncronas. Em resumo, o uso de E/S direta transforma o teste em um micro benchmark se o aplicativo que está sendo sintetizado usar o cache do sistema de arquivos.

A seguir estão alguns bancos de dados que suportam E/S direta:

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

Melhores práticas

Testar com directio é uma excelente maneira de entender os limites do serviço de armazenamento e do cliente. Para entender melhor como o aplicativo se comporta (se o aplicativo não usar directio), você também deve executar testes através do cache do sistema de arquivos.

Próximos passos