Personalizar a regravação de ficheiros no Azure HPC Cache

Os utilizadores de Cache HPC podem pedir que a cache escreva ficheiros individuais específicos para armazenamento back-end a pedido, utilizando a utilidade flush_file.py. Esta utilidade é um pacote de software descarregado separadamente que se instala e utiliza em máquinas cliente Linux.

Esta funcionalidade foi concebida para situações em que se quer que as alterações nos ficheiros em cache estejam disponíveis o mais rapidamente possível para sistemas que não montam a cache.

Por exemplo, pode usar o Azure HPC Cache para escalar os seus trabalhos de computação na cloud, mas armazenar permanentemente o seu conjunto de dados num centro de dados local. Se as tarefas de computação ocorrerem no centro de dados e dependerem de alterações criadas com o Azure HPC Cache, pode usar esta utilidade para "empurrar" a saída ou as alterações geradas por uma tarefa na cloud de volta para o armazenamento NAS local. Isto permite que os novos ficheiros sejam usados quase imediatamente por recursos de computação on-premises.

Escolha entre escrita personalizada e descarregamento

Podes forçar a escrita dos dados com a opção de "limpeza do alvo de armazenamento" incorporada no Azure HPC Cache – mas esta abordagem pode não ser adequada para todas as situações.

  • Escrever todos os ficheiros modificados de volta para o sistema de armazenamento pode demorar vários minutos ou até horas, dependendo da quantidade de dados e da velocidade da ligação de rede de volta ao sistema local. Além disso, não pode escolher apenas os ficheiros com que terminou para serem escritos; ficheiros que ainda estejam a ser modificados ativamente serão incluídos neste cálculo.

  • A cache pode bloquear o serviço de alguns pedidos desse destino de armazenamento durante o processo de limpeza. Isto pode atrasar o processamento se existirem outros clientes de computação a usar ficheiros que residem no mesmo destino de armazenamento.

  • Desencadear esta ação requer acesso do contribuente ao Azure Resource Manager, que os utilizadores finais podem não ter.

Por exemplo, podes ter múltiplos trabalhos de computação paralelos (mas não sobrepostos) que consomem dados residentes no mesmo alvo de armazenamento de cache HPC. Quando um trabalho termina, deves escrever imediatamente a saída desse trabalho do cache para o teu armazenamento de longo prazo no backend.

Tem três opções:

  • Espera que os ficheiros em cache sejam automaticamente reescritos a partir da cache – mas os ficheiros podem ficar mais de uma hora na cache antes de serem completamente reescritos. O timing depende do atraso de escrita do seu modelo de utilização de cache, juntamente com outros fatores como o desempenho da ligação de rede e o tamanho dos ficheiros. ( Leia Compreender os modelos de utilização de cache para saber mais sobre o atraso de escrita em memória.)

  • Limpar imediatamente os ficheiros em cache de todo o destino de armazenamento – mas isso iria perturbar outros trabalhos de computação que também estejam a usar os dados desse destino de armazenamento.

  • Utilize este utilitário personalizado de escrita para enviar um pedido especial NFS à cache para escrever de volta apenas os ficheiros específicos que deseja. Este cenário não interrompe o acesso para outros clientes e pode ser ativado em qualquer momento da tarefa de computação.

Sobre a ferramenta de escrita devolutiva

O utilitário de escrita possui um script que pode utilizar para especificar ficheiros individuais que serão transferidos da cache para o sistema de armazenamento de longo prazo.

O script recebe um fluxo de entrada dos ficheiros a serem escritos, mais o caminho do espaço de nomes da cache para a exportação do destino do armazenamento, e um endereço IP de montagem da cache HPC.

O script utiliza uma chamada "commit" do NFSv3 com argumentos especiais ativados. O cliente comum para Linux nfs não consegue transmitir estes argumentos de forma adequada, por isso a utilidade flush_file.py usa um emulador cliente NFS numa biblioteca Python para comunicar com o serviço HPC Cache NFS. A biblioteca inclui tudo o que é necessário, o que contorna quaisquer limitações que possam existir no cliente NFS baseado no kernel Linux do seu cliente de computação.

Para usar esta funcionalidade, precisa de fazer o seguinte:

Saiba mais sobre como instalar e usar o script flush_file.py no repositório GitHub.