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:
Melhora o desempenho para E/S pequenas e aleatórias: o armazenamento em cache de ficheiros melhora a latência e o débito 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.
Tira partido das transferências paralelas: as transferências paralelas são ativadas automaticamente nas versões 2.12 e posteriores do FUSE de armazenamento na nuvem 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 o serviço de modelos e as restaurações de pontos de verificação.
Use a 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 o serviç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 de modelos 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
As secções seguintes apresentam considerações importantes para a utilização da colocação em cache de ficheiros.
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 campo file-cache:max-size-mb
.
Gestão de leitura aleatória e parcial
Se a primeira operação de leitura de ficheiros começar a partir do início do ficheiro, no deslocamento 0
, a cache de ficheiros do FUSE do Cloud Storage carrega e ingere o ficheiro inteiro na cache, mesmo que esteja a ler apenas a partir de um pequeno subconjunto de intervalos. Isto permite que as leituras aleatórias ou parciais subsequentes do mesmo objeto sejam servidas diretamente a partir da cache.
Se a primeira operação de leitura de um ficheiro começar a partir de qualquer ponto que não seja o deslocamento 0
, por predefinição, o Cloud Storage FUSE 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, use um dos seguintes métodos para definir o comportamento como true
:
Recomendamos que ative esta propriedade se forem realizadas muitas operações de leitura aleatórias ou parciais diferentes no mesmo objeto.
Remoção da cache
A remoção dos metadados e dos dados em cache baseia-se num algoritmo de utilização menos recente (LRU) que começa quando é atingido o limite de --file-cache-max-size-mb
configurado por espaço. Se a entrada expirar com base no respetivo TTL, é feita primeiro uma chamada de metadados GET
para o Cloud Storage e está sujeita a latências de rede. 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 FUSE do Cloud Storage não são mantidas 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 desmontagens ou reinícios.
Segurança dos dados
Quando ativa a colocação em cache, o Cloud Storage FUSE usa o diretório de cache que especificou através de um dos seguintes métodos como o diretório subjacente para a cache para persistir 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 à corrupçã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.
Se forem necessários vários processos do FUSE do Cloud Storage na mesma máquina, cada processo do 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 no 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
Ative e configure o armazenamento em cache de ficheiros através de um dos seguintes métodos:
gcsfuse
opções- Ficheiro de configuração do FUSE do Cloud Storage
- Também pode usar configurações de exemplo. Consulte o artigo Configuração de exemplo para ativar o armazenamento em cache de ficheiros e as transferências paralelas.
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 do Google Kubernetes Engine que não sejam da Google:
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:
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: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: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
: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 a definição de um TTL para entradas em cache, consulte o artigo Tempo de vida.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
: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 | Opção gcsfuse |
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
:
- Opção
--file-cache-enable-parallel-downloads
file-cache:enable-parallel-downloads
campo
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.