Considerações sobre o desempenho do sistema de arquivos
Se você já executou cargas de trabalho de HPC, provavelmente já viu os termos operações, tamanho de bloco, IOPS, taxa de transferência e latência. Provavelmente, você considerou esses fatores ao escolher o armazenamento.
Ao final desta seção, você deve ter um entendimento prático desses cinco fatores de desempenho e de como eles afetam as cargas de trabalho de HPC.
Operations
O termo Operações se refere a qualquer atividade entre o host/computador e o sistema de arquivos ou disco.
Por exemplo, você provavelmente está familiarizado com estas operações que envolvem um sistema operacional e seu disco local:
- Criar (um arquivo)
- Excluir
- Aberto
- Fechar
- Ler
- Gravar
- Acrescentar
- Obter atributo
- Definir atributo
- Renomear
O NFS representa a interação entre um cliente e um servidor de arquivo no nível da rede. Observe que algumas dessas operações são semelhantes às operações locais. Entretanto, como o NFS é uma API de rede, as operações de rede podem envolver várias operações locais.
create
(arquivo ou link)mkdir
readdir
oureaddirplus
getattr
setattr
lookup
(pesquisar por um filehandle em um diretório)link
/symlink
/readlink
read
rename
remove
rmdir
write
Como as operações afetam o armazenamento de HPC?
É útil compreender como as operações afetam o sistema de armazenamento. Por exemplo, suponha que sua carga de trabalho de HPC crie um grande número de arquivos pequenos em estruturas de diretório aninhadas. Nesse cenário, a carga de trabalho exigiria um número maior de operações do que uma carga de trabalho que lê alguns arquivos sequenciais grandes.
Abordaremos esses padrões de acesso na próxima unidade. Um create
envolve várias operações, de modo que quanto mais arquivos a carga de trabalho criar, maior será o impacto sobre o desempenho.
Tamanho do bloco
O tamanho do bloco é o menor tamanho de dados (em bytes) que um sistema de arquivos pode ler ou gravar como uma operação.
Para nossos fins, o tamanho do bloco também se refere ao tamanho do conteúdo de uma parte dos dados do NFS (leitura/gravação) que pode ser transmitida entre clientes e servidores NFS.
Os clientes e os servidores NFS negociam o tamanho do bloco e aceitam o maior tamanho possível a que ambos dão suporte. As configurações padrão podem varias 4 KB a 64 KB. O valor configurável máximo atual é de 1 MB. Pacotes de dados individuais não podem ter conteúdos maiores do que o valor definido.
Você pode configurar explicitamente o tamanho do bloco nos clientes. Verifique a instrução mount
completa nos computadores de seu cluster de HPC para determinar o valor. Os tamanhos padrão são definidos. Você não configura explicitamente os valores na instrução mount
.
Os dois argumentos usados para configurar o tamanho do bloco de NFS são rsize
(tamanho de leitura) e wsize
(tamanho de gravação).
Se você configurar um tamanho de bloco pequeno. Ou sua escolha de sistemas de arquivos tiver um tamanho de bloco máximo pequeno e sua carga de trabalho for composta por arquivos grandes. O desempenho sofre devido ao agrupamento extra dos arquivos grandes.
IOPS
O termo IOPS significa operações de entrada/saída por segundo. O número de IOPS no ambiente de armazenamento depende destes atributos:
- O tipo de mídia de armazenamento. Por exemplo, HD (unidade de disco rígido) ou SSD (unidade de estado sólido).
- Latência, introduzida pela conectividade de rede.
- O tamanho do bloco usado pelo sistema de arquivos.
- A quantidade de acesso simultâneo disponível para o sistema de arquivos.
Uma solução de armazenamento tem um só número de IOPS. Por exemplo, se você está usando um disco gerenciado do Azure que dá suporte a 5.000 IOPS, você pode ter até 5.000 operações por segundo. Mas o número IOPS é uma medida do máximo total de todas as operações de leitura ou gravação no disco, incluindo leituras e gravações de sobrecarga do sistema.
O valor da IOPS é um guia para o número máximo possível de operações a que seu disco ou ambiente de NAS pode dar suporte.
As medidas normalmente são divididas entre operações de leitura e gravação aleatórias e sequenciais.
- Uma operação aleatória é a leitura ou gravação de dados em diferentes pontos aleatórios de um disco ou arquivo. Por exemplo, editar um intervalo específico de bytes em algum lugar em um arquivo.
- Uma operação sequencial reflete o acesso contíguo ao arquivo, lendo-o desde o início.
Produtividade
Taxa de transferência é a taxa de transferência total possível com que o sistema de arquivos pode lidar, medida em bytes por segundo.
Para fazer um cálculo básico da taxa de transferência, multiplique o tamanho do bloco pela IOPS do sistema.
Por exemplo, se você tem um disco com suporte para 3.000 IOPS e o tamanho do bloco é de 4K, a taxa de transferência possível total é de 12 Mbps.
Esse cálculo fornece uma compreensão básica das possibilidades de desempenho geral do sistema de arquivos. No entanto, a taxa de transferência real pode ser diferente. Outros fatores afetam a taxa de transferência, incluindo fatores como a sobrecarga de rede se você está criando ou excluindo um grande número de arquivos pequenos.
Latency
Latência é o tempo necessário para concluir uma operação. Quanto maior a latência, maior a probabilidade de execuções mais lentas da carga de trabalho.
Pode haver várias fontes de latência em uma mesma arquitetura, com cada uma delas contribuindo para um efeito de latência geral.
A latência do sistema de arquivos pode ocorrer nestas condições:
- Conexão de rede lenta entre o cliente e o servidor.
- Congestionamento na rede ou no servidor de arquivos causado por um grande número de solicitações simultâneas.
- Latência natural devido à distância entre clientes e servidores (por exemplo, em uma WAN).
- Acesso lento ao subsistema de disco no servidor de arquivos.
A latência nem sempre é documentada de maneira clara e consistente. Você precisa executar testes para determinar a latência entre os computadores de seu cluster de HPC e o ponto de extremidade de armazenamento.
A latência também é um problema cumulativo. O desempenho da rede pode ser um fator, mas pode haver outros, por exemplo, um computador com sistema operacional configurado incorretamente ou ineficiências no próprio código da carga de trabalho. Cada um desses fatores afeta a latência geral.
A latência é o fator mais importante ao avaliar o desempenho real do sistema de arquivos. Latências mais altas se traduzem em menos IOPS. Um número menor de IOPS pode se traduzir em uma taxa de transferência mais baixa.
Testar e calcular os valores de linha de base
Quando você escolhe a configuração de desempenho exata para cargas de trabalho de HPC, a própria carga de trabalho tem uma influência significativa.
As ofertas de sistema de arquivos do Azure apresentam os valores esperados de IOPS e taxa de transferência. Se optar por criar sua solução de NAS, você usará as métricas documentadas para cada máquina virtual e SKU de disco gerenciado.
Você pode usar uma configuração de HPC do datacenter local como um ponto de partida com relação às expectativas de desempenho. Tenha em mente que soluções de nuvem permitem que você crie vários ambientes que executam cargas de trabalho. Assim, você pode ter mais flexibilidade por carga de trabalho no Azure. O ambiente local, em contraste, foi criado com base em uma capacidade específica que não é expandida facilmente (dinamicamente).
Você pode usar ferramentas básicas como ping
, fio
, iozone
e iometer
para determinar os números de linha de base de seu sistema de arquivos do Azure.
Criação de perfil do aplicativo
Você pode ter uma carga de trabalho com uso intensivo de E/S que exige níveis significativos de IOPS e taxa de transferência para ser executada com eficiência. Ou a carga de trabalho pode ser iniciada, ler bibliotecas e dados de origem na memória e continuar com E/S de armazenamento mínima. Talvez a primeira carga de trabalho na lista anterior grave dados intermediários que precisam ser lidos por outros computadores de HPC. Cada uma dessas dinâmicas contribui para a maneira como você aborda sua solução de armazenamento. Para garantir que os computadores possam ler esses dados o mais rapidamente possível, concentre-se na redução da latência de leitura. No entanto, se a carga de trabalho estiver gravando informações intermediárias (ou transitórias) nos discos, convém garantir que cada computador de HPC possa acessar rapidamente os discos locais ou uma solução de NAS compartilhada rápida para tais gravações. Dependendo de quais computadores talvez precisem ler essas gravações intermediárias.
Talvez seja interessante investir na criação de perfil de seus aplicativos com relação ao uso da E/S de armazenamento deles. A importância da criação de perfil aumenta à medida que o cluster de HPC cresce em termos de tamanho e do número de cargas de trabalho.
A criação de perfil envolve o uso de ferramentas em execução em seus computadores de HPC e seu ambiente de desenvolvimento. Essas ferramentas relatam o valor, o tipo e o tamanho das operações executadas em seu ambiente de armazenamento.
A criação de perfil de uma carga de trabalho pode ser difícil devido à quantidade de dados que podem ser gerados. Ferramentas como iostat
e sar
podem criar saída significativa ao longo do tempo. Talvez seja necessário analisar os resultados, e talvez seja analisá-los ainda mais, gerando histogramas.
Se você está usando uma solução de NAS, é necessário reunir estatísticas da interface do fornecedor durante as execuções de criação de perfil. Depois, correlacione essas informações com os dados do computador de HPC para verificar os padrões de E/S.
Ferramentas de criação de perfil de terceiros estão disponíveis para ajudar com a análise de E/S, algumas oferecidas por fornecedores de aplicativos de HPC.