Este documento fornece uma vista geral do armazenamento em cache de ficheiros FUSE do Cloud Storage e instruções sobre como configurar e usar o armazenamento em cache de ficheiros.
A colocação em cache de ficheiros FUSE do Cloud Storage é uma cache de leitura do lado do cliente que melhora o desempenho das operações de leitura ao fornecer leituras de ficheiros repetidas a partir de um armazenamento em cache mais rápido à sua escolha. Quando o armazenamento em cache de ficheiros está ativado, o FUSE do Cloud Storage armazena cópias de ficheiros acedidos com frequência localmente, o que permite que as leituras subsequentes sejam fornecidas diretamente a partir da cache, o que reduz a latência e melhora o débito.
Vantagens do armazenamento em cache de ficheiros
O armazenamento em cache de ficheiros oferece as seguintes vantagens:
Desempenho melhorado para E/S pequenas e aleatórias: o armazenamento em cache de ficheiros melhora a latência e a taxa de transferência ao publicar leituras diretamente a partir do suporte de cache. As operações de E/S pequenas e aleatórias podem ser significativamente mais rápidas quando são servidas a partir da cache.
Transferências paralelas ativadas automaticamente: as transferências paralelas são ativadas automaticamente nas versões 2.12 e posteriores do FUSE do Cloud Storage quando a cache de ficheiros está ativada. As transferências paralelas usam vários trabalhadores para transferir um ficheiro em paralelo usando o diretório da cache de ficheiros como um buffer de obtenção prévia, o que pode resultar num tempo de carregamento do modelo até nove vezes mais rápido. Recomendamos que use transferências paralelas para cenários de leitura de thread único que carregam ficheiros grandes, como a publicação de modelos e os restauros de pontos de verificação.
Utilização da capacidade existente: o armazenamento em cache de ficheiros pode usar a capacidade da máquina aprovisionada existente para o diretório da cache sem incorrer em custos de armazenamento adicional. Isto inclui SSDs locais fornecidos com tipos de máquinas de GPUs do Google Cloud, como
a2-ultragpu
,a3-highgpu
, disco persistente (que é o disco de arranque usado por cada VM) ou/tmpfs
Redução dos custos: os resultados da cache são publicados localmente e não incorrem em custos de operação ou de rede do Cloud Storage.
Custo total de propriedade melhorado para a preparação de IA e AA: o armazenamento em cache de ficheiros aumenta a utilização das GPUs e das TPUs na nuvem ao carregar dados mais rapidamente, o que reduz o tempo de preparação e oferece uma melhor relação preço/desempenho para as cargas de trabalho de preparação de inteligência artificial e aprendizagem automática (IA/AA).
Transferências paralelas
As transferências paralelas podem melhorar o desempenho de leitura através da utilização de vários trabalhadores para transferir várias partes de um ficheiro em paralelo através do diretório da cache de ficheiros como um buffer de obtenção prévia. Recomendamos a utilização de transferências paralelas para cenários de leitura que carregam ficheiros grandes, como a publicação de modelos, o restauro de pontos de verificação e a preparação em objetos grandes.
Seguem-se alguns exemplos de utilização da ativação da colocação em cache de ficheiros com transferências paralelas:
Tipo de exemplo de utilização | Descrição |
---|---|
Formação | Ative o armazenamento em cache de ficheiros se os dados aos quais quer aceder forem lidos várias vezes, quer seja o mesmo ficheiro várias vezes ou diferentes deslocamentos do mesmo ficheiro. Se o conjunto de dados for maior do que a cache de ficheiros, a cache de ficheiros deve permanecer desativada e, em alternativa, use um dos seguintes métodos: |
Publicação de ponderações do modelo e leituras de pontos de verificação | Ative a colocação em cache de ficheiros com transferências paralelas para poder usar transferências paralelas, que carregam ficheiros grandes muito mais rapidamente do que se a colocação em cache de ficheiros e as transferências paralelas não forem usadas. |
Considerações
Tempo de vida (TTL) da cache de ficheiros: se uma entrada da cache de ficheiros ainda não tiver expirado com base no respetivo TTL e o ficheiro estiver na cache, as operações de leitura desse ficheiro são fornecidas a partir da cache do cliente local sem que seja emitido qualquer pedido para o Cloud Storage.
Expiração da entrada de cache de ficheiros: se uma entrada de cache de ficheiros tiver expirado, é feita primeiro uma chamada de atributos de ficheiros para o Cloud Storage.
GET
Se o ficheiro estiver em falta ou os respetivos atributos ou conteúdos tiverem sido alterados, o novo conteúdo é obtido. Se os atributos tiverem sido apenas invalidados, mas o conteúdo permanecer válido, o que significa que a geração de objetos não foi alterada, o conteúdo é publicado a partir da cache apenas depois de a chamada de atributo confirmar a respetiva validade. Ambas as operações incorrem em latências de rede.Invalidar a cache de ficheiros: quando um cliente do FUSE do Cloud Storage modifica um ficheiro em cache ou os respetivos atributos, a entrada de cache desse cliente é imediatamente invalidada para garantir a consistência. No entanto, outros clientes que acedem ao mesmo ficheiro continuam a ler as respetivas versões em cache até que as definições de TTL individuais causem uma invalidação.
Tamanho do ficheiro e capacidade disponível: o ficheiro que está a ser lido tem de caber na capacidade disponível no diretório da cache de ficheiros, que pode ser controlada através da opção
--file-cache-max-size-mb
ou do campofile-cache:max-size-mb
.Remoção da cache: a remoção dos metadados e dos dados em cache baseia-se num algoritmo de menos usados recentemente (LRU) que começa assim que o limite de espaço configurado por limite de
--file-cache-max-size-mb
é atingido. Se a entrada expirar com base no respetivo TTL, é feita primeiro uma chamada de metadados para o Cloud Storage e está sujeita a latências de rede.GET
Uma vez que os dados e os metadados são geridos separadamente, pode ocorrer a remoção ou a invalidação de uma entidade e não da outra.Persistência da cache: as caches do FUSE do Cloud Storage não são persistentes em desmontagens e reinícios. Para a colocação em cache de ficheiros, embora as entradas de metadados necessárias para publicar ficheiros a partir da cache sejam removidas em desmontagens e reinícios, os dados na cache de ficheiros podem ainda estar presentes no diretório de ficheiros. Recomendamos que elimine os dados no diretório da cache de ficheiros após a desmontagem ou o reinício.
Gestão de leitura aleatória e parcial: quando a primeira operação de leitura de ficheiros começa a partir do início do ficheiro, no deslocamento
0
, a cache de ficheiros do Cloud Storage FUSE ingere e carrega o ficheiro completo na cache, mesmo que esteja a ler apenas um pequeno subconjunto de intervalos. Isto permite que as leituras aleatórias ou parciais subsequentes do mesmo objeto sejam publicadas diretamente a partir da cache.Por predefinição, a leitura a partir de qualquer outro deslocamento não aciona uma obtenção assíncrona do ficheiro completo. Para alterar este comportamento de modo que o Cloud Storage FUSE carregue um ficheiro para a cache após uma leitura aleatória inicial, defina a opção
--file-cache-cache-file-for-range-read
ou o campofile-cache:cache-file-for-range-read
comotrue
.Recomendamos que ative esta propriedade se forem realizadas muitas operações de leitura aleatórias ou parciais diferentes no mesmo objeto.
Segurança dos dados: quando ativa o armazenamento em cache, o Cloud Storage FUSE usa o diretório de cache especificado através da opção
--cache-dir
ou do campocache-dir
como o diretório subjacente para que a cache persista os ficheiros do seu contentor do Cloud Storage num formato encriptado. Qualquer utilizador ou processo que tenha acesso a este diretório de cache pode aceder a estes ficheiros. Recomendamos que restrinja o acesso a este diretório.Acesso direto ou múltiplo à cache de ficheiros: a utilização de um processo que não seja o Cloud Storage FUSE para aceder ou modificar um ficheiro no diretório da cache pode levar à danificação de dados. As caches do Cloud Storage FUSE são específicas de cada processo de execução do Cloud Storage FUSE, sem conhecimento dos diferentes processos do Cloud Storage FUSE em execução na mesma máquina ou em máquinas diferentes. Por conseguinte, não recomendamos a utilização do mesmo diretório de cache para diferentes processos do FUSE do armazenamento na nuvem.
Executar vários processos FUSE do Cloud Storage na mesma máquina: se for necessário executar vários processos FUSE do Cloud Storage na mesma máquina, cada processo FUSE do Cloud Storage deve ter o seu próprio diretório de cache específico ou usar um dos seguintes métodos para garantir que os seus dados não são danificados:
Montar todos os contentores com uma cache partilhada: use a montagem dinâmica para montar todos os contentores aos quais tem acesso num único processo com uma cache partilhada. Para saber mais, consulte o artigo Montagem dinâmica do FUSE do Cloud Storage.
Ativar o armazenamento em cache num contentor específico: ative o armazenamento em cache apenas num contentor especificado através da montagem estática. Para saber mais, consulte o artigo Montagem estática do FUSE do Cloud Storage.
Colocar em cache apenas uma pasta ou um diretório específico: monte e coloque em cache apenas uma pasta específica ao nível do contentor em vez de montar um contentor inteiro. Para saber mais, consulte o artigo Monte um diretório num contentor.
Antes de começar
A cache de ficheiros requer um caminho de diretório para ser usada para colocar ficheiros em cache. Pode criar um novo diretório num sistema de ficheiros existente ou criar um novo sistema de ficheiros num armazenamento aprovisionado. Se estiver a aprovisionar novo armazenamento para utilização, use as seguintes instruções para criar um novo sistema de ficheiros:
Para o Google Cloud Hyperdisk, consulte o artigo Crie um novo volume do Google Cloud Hyperdisk.
Para o Persistent Disk, consulte o artigo Crie um novo volume do Persistent Disk.
Para SSDs locais, consulte o artigo Adicione um SSD local à sua VM.
Para discos RAM na memória, consulte o artigo Criar discos RAM na memória.
Ative e configure o comportamento da colocação em cache de ficheiros
Selecione o método através do qual quer ativar e configurar o armazenamento em cache de ficheiros com um dos seguintes métodos:
Forneça-o como o valor de uma opção
gcsfuse
Especifique-o num ficheiro de configuração do FUSE do Cloud Storage
Especifique o diretório da cache que quer usar com um dos seguintes métodos. Isto permite-lhe ativar a cache de ficheiros para implementações que não sejam do Google Kubernetes Engine:
gcsfuse
opção:--cache-dir
- Campo do ficheiro de configuração:
cache-dir
Se estiver a usar uma implementação do Google Kubernetes Engine com o controlador CSI do FUSE do Cloud Storage para o Google Kubernetes Engine, especifique um dos seguintes métodos:
gcsfuse
opção:--file-cache-max-size-mb
- Campo do ficheiro de configuração:
file-cache:max-size-mb
Opcional: ative as transferências paralelas definindo um dos seguintes métodos como
true
se as transferências paralelas não tiverem sido ativadas automaticamente:gcsfuse
opção:--file-cache-enable-parallel-downloads
- Campo do ficheiro de configuração:
file-cache:enable-parallel-downloads
Limite a capacidade total que a cache do FUSE do Cloud Storage pode usar no respetivo diretório montado ajustando uma das seguintes opções, que é automaticamente definida para um valor de
-1
quando especifica um diretório de cache:gcsfuse
opção:--file-cache-max-size-mb
- Campo do ficheiro de configuração:
file-cache:max-size-mb
Também pode especificar um valor em MiB ou GiB para limitar o tamanho da cache.
Opcional: ignore a expiração do TTL das entradas em cache e publique metadados de ficheiros a partir da cache, se estiverem disponíveis, através de um dos seguintes métodos e definindo um valor de
-1
:gcsfuse
opção:--metadata-cache-ttl-secs
- Campo do ficheiro de configuração:
metadata-cache:ttl-secs
A predefinição é de 60 segundos e um valor de
-1
define-o como ilimitado. Também pode especificar um valor elevado com base nos seus requisitos. Recomendamos que defina o valor dettl-secs
o mais alto possível, de acordo com a sua carga de trabalho. Para mais informações sobre o TTL para entradas em cache, consulte as Considerações.Opcional: ative a capacidade da cache de ficheiros de carregar de forma assíncrona todo o ficheiro para a cache se a primeira operação de leitura do ficheiro começar a partir de qualquer lugar que não seja
offset 0
, para que as leituras subsequentes de diferentes deslocamentos do mesmo ficheiro também possam ser fornecidas a partir da cache. Use um dos seguintes métodos e defina a opção comotrue
:gcsfuse
opção:--file-cache-cache-file-for-range-read
- Campo do ficheiro de configuração:
file-cache:cache-file-for-range-read
Opcional: configure a colocação em cache de estatísticas e a colocação em cache de tipos. Para saber mais sobre as estatísticas e as caches de tipos, consulte o artigo Vista geral da colocação em cache de tipos ou Vista geral da colocação em cache de estatísticas.
Execute manualmente o comando
ls -R
no seu contentor montado antes de executar a sua carga de trabalho para pré-preencher os metadados e garantir que a cache de tipos é preenchida antes da primeira leitura através de um método mais rápido e em lote. Para mais informações sobre como melhorar o desempenho da primeira leitura, consulte o artigo Melhore as primeiras leituras.
Depois de ativar a colocação em cache de ficheiros, as transferências paralelas são ativadas automaticamente nas versões 2.12 e posteriores do FUSE do Cloud Storage. Se estiver a usar uma versão mais antiga do Cloud Storage FUSE, defina a opção enable-parallel-downloads
como true
para ativar as transferências em paralelo.
Configure propriedades de apoio para transferências em paralelo
Opcionalmente, pode configurar as seguintes propriedades de suporte para transferências paralelas através da CLI do FUSE do Cloud Storage ou de um ficheiro de configuração do FUSE do Cloud Storage:
Descrição da propriedade | gcsfuse opção |
Campo do ficheiro de configuração |
---|---|---|
O número máximo de trabalhadores que podem ser gerados por ficheiro para transferir o objeto do Cloud Storage para a cache de ficheiros. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
O número máximo de trabalhadores que podem ser gerados em qualquer altura em todas as tarefas de transferência de ficheiros. A predefinição está definida para o dobro do número de núcleos da CPU na sua máquina. Para não especificar nenhum limite, introduza um valor de "-1". | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
O tamanho de cada pedido de leitura em MiB que cada trabalhador faz ao Cloud Storage quando transfere o objeto para a cache de ficheiros. Tenha em atenção que uma transferência paralela só é acionada se o ficheiro que está a ser lido tiver o tamanho especificado. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
Desative as transferências em paralelo
Para desativar as transferências paralelas, defina uma das seguintes opções como false
:
gcsfuse
opção:--file-cache-enable-parallel-downloads
- Campo do ficheiro de configuração:
file-cache:enable-parallel-downloads
O que se segue?
Reveja as considerações para a colocação em cache no Cloud Storage FUSE.
Saiba como melhorar o desempenho do FUSE do Cloud Storage.