Visão geral do armazenamento em cache no Cloud Storage FUSE

O Cloud Storage FUSE oferece três tipos de armazenamento em cache opcional para ajudar a aumentar o desempenho da recuperação de dados:

Visão geral do armazenamento em cache de arquivos

O cache de arquivos do Cloud Storage FUSE é um cache de leitura baseado em cliente que permite que leituras repetidas de arquivos sejam veiculadas em um armazenamento de cache mais rápido de sua escolha. O cache de arquivos é desativado por padrão.

Benefícios do armazenamento em cache de arquivos

  • Melhor desempenho: o armazenamento em cache de arquivos melhora a latência e a capacidade veiculando leituras diretamente da mídia de cache. Operações de E/S pequenas e aleatórias podem ser significativamente mais rápidas quando exibidas do cache.

  • Usar a capacidade atual: o armazenamento em cache de arquivos pode usar a capacidade da máquina provisionada atual do seu diretório de cache sem gerar cobranças de armazenamento adicional. Isso inclui SSDs locais que vêm com tipos de máquina das GPUs do Cloud, como a2-ultragpu e a3-highgpu (disco permanente), que é o disco de inicialização usado por cada máquina virtual (VM) ou /tmpfs na memória.

  • Cobranças reduzidas: as ocorrências em cache são veiculadas localmente e não geram cobranças de operações do Cloud Storage nem de rede.

  • Melhoria no custo total de propriedade para treinamento de IA e ML: o armazenamento em cache de arquivos aumenta a utilização das GPUs do Cloud e da Cloud TPU ao carregar dados mais rapidamente, o que reduz o tempo de treinamento e oferece uma relação melhor custo-benefício para cargas de trabalho de treinamento de IA e ML.

Como ativar e configurar o cache de arquivos

Ao ativar o recurso de armazenamento em cache de arquivos, você define campos em um arquivo de configuração do Cloud Storage FUSE. A lista a seguir descreve os campos que você pode usar para controlar o armazenamento em cache de arquivos:

  • Defina o max-size-mb para controlar a capacidade máxima que os dados armazenados em cache podem ocupar no diretório de cache especificado.

    Por padrão, o campo max-size-mb é definido como um valor -1, o que permite que os dados armazenados em cache cresçam até que ocupem toda a capacidade disponível no diretório especificado como um valor para cache-dir.

  • Especifique um diretório para armazenar dados de cache de arquivos usando o campo cache-dir. A especificação de um diretório de cache é um pré-requisito para ativar o cache de arquivos.

  • É possível controlar o horário em que os dados armazenados em cache se tornam invalidados usando o campo ttl-secs. Por padrão, o campo ttl-secs é definido como 60, que especifica 60 segundos. Recomendamos aumentar o valor.

    Para saber mais sobre como controlar a invalidação de dados em cache, consulte Como configurar a invalidação de dados em cache. Para mais informações sobre a remoção de dados armazenados em cache, consulte Remoção.

Leituras aleatórias e parciais

Se a primeira operação de leitura de arquivo começar no início do arquivo ou deslocar 0, o cache de arquivos do Cloud Storage FUSE vai ingerir e carregar todo o arquivo no cache, mesmo que você esteja apenas lendo de um subconjunto pequeno. Isso permite que leituras aleatórias ou parciais subsequentes do mesmo objeto sejam veiculadas diretamente no cache.

Se a primeira operação de leitura de um arquivo começar de qualquer lugar diferente do deslocamento 0, o Cloud Storage FUSE, por padrão, não acionará uma busca assíncrona de arquivo completo. Para alterar esse comportamento para que o Cloud Storage FUSE ingira um arquivo no cache após uma leitura aleatória inicial, defina a sinalização cache-file-for-range-read como true. Recomendamos que você ative a sinalização cache-file-for-range-read se muitas operações de leitura aleatória ou parcial diferentes forem executadas no mesmo objeto.

Remoção

A remoção de metadados e dados armazenados em cache é baseada em um algoritmo usado menos recentemente (LRU, na sigla em inglês) que começa quando o limite de espaço configurado por limite de max-size-mb é atingido. Se a entrada expirar com base no TTL, uma chamada de metadados "Get" será feita primeiro para o Cloud Storage e estará sujeita a latências de rede. Como os dados e metadados são gerenciados separadamente, é possível que uma entidade seja removida ou invalidada e não a outra.

Desempenho

O armazenamento em cache do Cloud Storage FUSE funciona com qualquer diretório especificado pelo usuário que seja apoiado pela sua escolha de armazenamento, comoSSD local .Persistent Disk , na memóriatmpfs ouFilestore , O desempenho do cache do Cloud Storage FUSE corresponde ao armazenamento subjacente usado pelo cache com sobrecarga mínima. Para saber mais sobre o desempenho de armazenamento em cache, consulte Desempenho e práticas recomendadas do armazenamento em cache do Cloud Storage FUSE.

Persistência

Os caches do Cloud Storage FUSE não são mantidos após a desmontagem e são reiniciados quando todas as entradas de metadados são removidas. No entanto, os dados no cache de arquivos não são removidos e precisam ser excluídos pelo usuário ou podem ser reutilizados em operações de montagem posteriores assim que os metadados forem preenchidos novamente.

Segurança

Quando você ativa o armazenamento em cache, o Cloud Storage FUSE usa o cache-dir especificado definido como o diretório subjacente para o cache manter os arquivos do bucket do Cloud Storage em um formato não criptografado. Qualquer usuário ou processo com acesso a esse diretório de cache pode acessar esses arquivos. Recomendamos que você restrinja o acesso a esse diretório.

Acesso direto ou múltiplo ao cache de arquivos

O uso de um processo diferente do Cloud Storage FUSE para acessar ou modificar um arquivo no diretório de cache pode corromper os dados. Os caches do Cloud Storage FUSE são específicos para cada processo em execução do Cloud Storage FUSE, sem reconhecimento entre diferentes processos do Cloud Storage FUSE em execução na mesma máquina ou em máquinas diferentes. Posteriormente, o mesmo diretório de cache não deve ser usado por diferentes processos do Cloud Storage FUSE.

Se vários processos do Cloud Storage FUSE precisarem ser executados na mesma máquina, cada processo do Cloud Storage FUSE precisará ter o próprio diretório de cache específico ou usar um dos métodos a seguir para garantir que os dados não sejam corrompidos:

  • Monte todos os buckets com um cache compartilhado: use a montagem dinâmica para ativar todos os buckets a que você tem acesso em um único processo com um cache compartilhado. Para saber mais, consulte Ativação dinâmica do Cloud Storage FUSE.

  • Ativar o armazenamento em cache em um bucket específico: é possível ativar o armazenamento em cache somente em um bucket especificado usando a montagem estática. Para saber mais, consulte Ativação estática do Cloud Storage FUSE.

  • Armazenar em cache somente uma pasta ou um diretório específico: em vez de ativar um bucket inteiro, use a opção –only-dir para ativar e armazenar em cache somente uma pasta específica no nível do bucket. Para saber mais, consulte Ativar um diretório em um bucket.

Visão geral do armazenamento em cache de estatísticas

O cache de estatísticas do Cloud Storage FUSE é um cache de metadados de objetos que melhora o desempenho de operações específicas de atributos de arquivos, como tamanho, tempo de modificação ou permissões. O uso do cache de estatísticas melhora a latência usando dados armazenados em cache para executar operações em vez de enviar uma solicitação de objeto de estatística para o Cloud Storage. Por padrão, o cache de estatísticas é ativado com um valor stat-cache-max-size-mb de 32 MB e um valor ttl-secs definido como 60 segundos. Recomendamos aumentar os dois valores. Para saber mais sobre o armazenamento em cache de estatísticas, consulte a documentação semântica no GitHub.

Visão geral do armazenamento em cache de tipos

O cache do tipo FUSE do Cloud Storage é um cache de metadados que acelera o desempenho de operações de metadados específicas da existência de arquivos ou diretórios. O uso do cache de tipos melhora a latência ao reduzir o número de solicitações feitas ao Cloud Storage para verificar se um arquivo ou diretório existe armazenando essas informações localmente. Por padrão, o cache de tipos é ativado com um valor type-cache-max-size-mb de 4 MB e um valor ttl-secs de 60 segundos. Recomendamos aumentar os dois valores. Para saber mais sobre armazenamento em cache de tipos, consulte a documentação semântica no GitHub.

Como configurar a invalidação de cache

O campo ttl-secs especifica por quanto tempo os metadados permanecem válidos no cache de arquivos. O campo representa o time to live (TTL) de dados armazenados em cache, em que eles são invalidados quando o TTL expira. Quando uma entrada de metadados se torna inválida, as leituras subsequentes são consultadas no Cloud Storage.

É possível configurar o ttl-secs em um arquivo de configuração do Cloud Storage FUSE.

Quando você especifica um valor maior que 0 para ttl-secs, os metadados do cache de arquivos permanecem válidos apenas pelo período especificado. Um valor padrão de 60 é definido para todos os tipos de cache. Para armazenamento em cache de arquivos, recomendamos que você aumente o valor de ttl-secs com base no tempo esperado entre leituras repetidas enquanto equilibra as necessidades de consistência. Com base na importância e frequência da alteração dos dados, recomendamos definir o valor ttl-secs o mais alto possível na carga de trabalho.

Além de especificar um valor que representa o número de segundos, a flag ttl-secs também é compatível com os valores de 0 e -1.

  • Valor ttl-secs de 0: quando você insere um valor 0, a sinalização ttl-secs garante que o arquivo mais atualizado seja lido pelo emissor emitindo uma chamada de recebimento de metadados para o Cloud Storage que verifica o arquivo em que ele está sendo veiculado para garantir que o cache seja consistente. Se o arquivo estiver atualizado, ele será exibido diretamente no cache. O desempenho é menos eficaz do que quando você especifica um valor ttl-secs diferente de 0 porque sempre é necessário fazer uma chamada ao Cloud Storage para verificar os metadados primeiro. Se o arquivo estiver no cache e não tiver sido alterado, ele será disponibilizado no cache com consistência após a chamada de metadados "Get".

  • ttl-secsde-1: quando você insere um valor de-1, o arquivo é sempre lido no cache, se disponível, sem verificar a consistência. A disponibilização de arquivos sem verificação de consistência pode exibir dados inconsistentes e só deve ser usada temporariamente para cargas de trabalho executadas em jobs com dados não alterados. Por exemplo, usar o valor -1 é útil para treinamento de machine learning, em que os mesmos dados são lidos em várias épocas sem alterações.

Caminho de leitura para dados em cache

O cache do Cloud Storage FUSE acelera leituras repetidas após a ingestão no cache. Tanto as leituras iniciais quanto as ausências no cache vão diretamente para o Cloud Storage e estão sujeitas às latências de rede normais do Cloud Storage.

Considerações

  • O uso do Cloud Storage FUSE com armazenamento em cache de arquivos, de estatísticas ou de tipos ativado pode aumentar o desempenho, mas reduzir a consistência. Para saber mais, consulte a documentação semântica no GitHub.

  • Se uma entrada de cache de arquivos ainda não tiver expirado com base no TTL e o arquivo estiver no cache, toda a operação será disponibilizada a partir do cache do cliente local sem que nenhuma solicitação seja emitida para o Cloud Storage.

  • Se uma entrada de cache de arquivos tiver expirado com base no TTL, uma chamada "Receber metadados" será feita primeiro para o Cloud Storage e, se o arquivo não estiver no cache, ele será recuperado do Cloud Storage. Ambas as operações estão sujeitas a latências de rede. Se a entrada de metadados tiver sido invalidada, mas o arquivo estiver no cache e a geração de objeto não tiver sido alterada, o arquivo será exibido a partir do cache somente depois que a chamada de receber metadados for feita para verificar se{101 } os dados são válidos.

  • Consistência: se um cliente do Cloud Storage FUSE modificar um arquivo armazenado em cache ou os metadados dele, o arquivo será imediatamente invalidado e a consistência será garantida na leitura a seguir pelo mesmo cliente. No entanto, se diferentes clientes acessarem o mesmo arquivo ou os metadados dele e as entradas forem armazenadas em cache, a versão armazenada em cache do arquivo ou dos metadados será lida, e não a versão atualizada, até que o arquivo seja invalidado pela a configuração de TTL desse cliente específico.

A seguir