Depois de provisionar os volumes do Google Cloud Hyperdisk, o aplicativo e o sistema operacional podem exigir ajuste de desempenho para atender às necessidades de desempenho.
Nas seções a seguir, descrevemos alguns elementos principais que podem ser ajustados para melhor desempenho e como aplicar alguns deles a tipos específicos de cargas de trabalho.
Para uma visão geral de como funciona o desempenho do Google Cloud Hyperdisk, consulte Sobre o desempenho do Hyperdisk.
Use uma profundidade de fila de E/S alta
Os volumes de hiperdisco têm latência maior do que os discos conectados localmente, como SSDs locais, porque são dispositivos conectados à rede. Eles podem fornecer IOPS e capacidade muito altas, mas você precisa garantir que solicitações de E/S suficientes sejam realizadas em paralelo. O número de solicitações de E/S feitas em paralelo é chamado de profundidade da fila de E/S.
As tabelas a seguir mostram a profundidade de fila de E/S recomendada para garantir que você atinja um determinado nível de desempenho. As tabelas usam uma pequena superestimação da latência típica para mostrar recomendações conservadoras. O exemplo pressupõe que você esteja usando um tamanho de E/S de 16 KB.
| IOPS desejadas | Profundidade da fila |
|---|---|
| 500 | 1 |
| 1.000 | 2 |
| 2.000 | 4 |
| 4.000 | 8 |
| 8.000 | 16 |
| 16.000 | 32 |
| 32.000 | 64 |
| 64.000 | 128 |
| 100.000 | 200 |
| 200.000 | 400 |
| 320.000 | 640 |
| Capacidade desejada (MB/s) | Profundidade da fila |
|---|---|
| 8 | 1 |
| 16 | 2 |
| 32 | 4 |
| 64 | 8 |
| 128 | 16 |
| 256 | 32 |
| 512 | 64 |
| 1.000 | 128 |
| 1.200 | 153 |
Verifique se você tem CPUs livres
A leitura e a gravação de volumes em hiperdiscos exigem ciclos de CPU da VM. Se a instância de VM tiver pouca CPU, o aplicativo não conseguirá gerenciar as IOPS descritas acima. Para atingir níveis de IOPS muito altos e consistentes, as CPUs precisam estar livres para processar E/S.
Desativar a proteção contra gravação incompleta no nível do banco de dados para otimizar as gravações
Como o Hyperdisk do Google Cloud oferece proteção integrada contra gravações corrompidas, é possível desativar os recursos de proteção no nível do banco de dados para reduzir a sobrecarga de E/S e aumentar a capacidade de gravação do banco de dados em até 25%. Para saber mais sobre esse recurso, consulte Proteção contra gravação incompleta na página de visão geral do Hyperdisk.
Requisitos de configuração do ambiente
Para que a proteção contra gravação incompleta do Hyperdisk seja eficaz, as gravações do banco de dados não podem ser fragmentadas antes de chegar à camada de armazenamento. Dependendo do seu banco de dados, é possível fazer isso usando uma das seguintes opções de configuração:
Opção 1: alinhar camadas a limites de blocos de 16 KiB (recomendado para MySQL e PostgreSQL)
Configure o sistema operacional, o sistema de arquivos e as camadas intermediárias de software para preservar o limite de 16 KiB. Ao usar essa opção, você precisa manter esta configuração específica:
Sistema de arquivos: use um sistema de arquivos
ext4. Crie o sistema de arquivos com a opçãobigalloce configure o tamanho do cluster do sistema de arquivos como 16 KiB (16.384 bytes) ou um múltiplo maior de potência de dois de 16 KiB:mkfs.ext4 -O bigalloc -C 16384 /dev/<var>DEVICE_NAME</var>Substitua
DEVICE_NAMEpelo nome do dispositivo de armazenamento.Configurações incompatíveis: evite configurações que possam introduzir gravações incompletas acima da camada de armazenamento em blocos, como as seguintes:
- Executar bancos de dados conteinerizados no Google Kubernetes Engine ou no Kubernetes autohospedado.
- Armazenar arquivos de banco de dados em um sistema de arquivos
xfs, que normalmente não oferece suporte a tamanhos de bloco suficientes na maioria das distribuições do Linux. - Usar configurações de matrizes redundantes de discos independentes (RAID) ou gerenciadores de volumes lógicos (LVM) que eliminam a E/S.
- Usar o Hyperdisk com caches de SSD local, incluindo
lvmcache,dm-cacheoubcache. - Usando a virtualização aninhada para a VM do banco de dados.
Opção 2: usar E/S atômica de bloco do Linux (recomendado para MariaDB)
Se seu banco de dados ou aplicativo oferecer suporte a E/S atômica de bloco do Linux e acessar arquivos usando E/S direta (O_DIRECT), você poderá ignorar as regras de configuração listadas na opção 1, desde que atenda às seguintes condições:
- Flag RWF_ATOMIC: o aplicativo precisa usar a chamada de sistema
pwritev2()com a flagRWF_ATOMIC. Ao usar essa flag, o kernel do Linux garante que uma operação de gravação seja processada como um único bloco contíguo pelo dispositivo Hyperdisk subjacente. Se o kernel não puder garantir a atomicidade, a chamada de gravação vai falhar imediatamente para evitar a corrupção de dados. - Sistema operacional: precisa ser a versão 6.11 ou mais recente do kernel do Linux.
- Sistema de arquivos: precisa ser
ext4ouxfsna versão 6.13 ou mais recente do kernel do Linux. - Acesso a arquivos: o aplicativo precisa abrir arquivos de banco de dados usando E/S direta (
O_DIRECT). - Bancos de dados compatíveis: recomendamos essa opção apenas para o MariaDB versão 11.x ou mais recente (para compatibilidade genérica com RWF_ATOMIC do Linux). O MySQL e o PostgreSQL não oferecem suporte a esse recurso.
Para instruções detalhadas de otimização específicas do banco de dados, consulte Configurar o MySQL no Compute Engine.
Analisar as métricas de desempenho do hiperdisco
Faça isso no Cloud Monitoring, a solução de monitoramento integrada doCloud de Confiance. É possível usar essas métricas para observar o desempenho dos discos e de outros recursos de VM em diferentes cargas de trabalho de aplicativos.
Para saber mais, consulte Como analisar métricas de desempenho de disco.
Também é possível usar a página Observabilidade no console para ver as métricas de desempenho do disco.
A seguir
- Saiba mais sobre os preços do hiperdisco.
- Analise as IOPS provisionadas para volumes de hiperdiscos.