Os discos permanentes poderão proporcionar o desempenho descrito no gráfico do tipo de disco se a instância do Compute Engine impulsionar um uso suficiente para atingir os limites de desempenho. Depois de dimensionar os volumes de Persistent Disk para atender às suas necessidades de desempenho, a carga de trabalho e o sistema operacional podem precisar de alguns ajustes.
As seções a seguir descrevem as características da instância de computação e da carga de trabalho que afetam o desempenho do disco e discutem alguns elementos-chave que podem ser ajustados para um melhor desempenho. Algumas sugestões e como aplicar algumas delas a tipos específicos de cargas de trabalho.
Fatores que afetam o desempenho do disco
Nas seções a seguir, descrevemos os fatores que afetam o desempenho do disco de uma instância de computação.
- Limite de saída de rede na capacidade de gravação
- Leituras e gravações simultâneas
- Tamanho do volume lógico
- Vários discos anexados a uma única instância de computação
Limite de saída de rede na capacidade de gravação
Sua instância de computação tem um limite de saída de rede que depende do tipo de máquina da instância.
O Compute Engine armazena dados em discos permanentes com várias gravações paralelas para garantir a redundância integrada. Além disso, cada solicitação de gravação tem uma sobrecarga que usa largura de banda de gravação adicional.
O tráfego de gravação máximo que uma instância de computação pode emitir é o limite de saída da rede dividido por um multiplicador de largura de banda que considera a replicação e sobrecarga.
Os limites de saída de rede estão listados na coluna Largura de banda de saída padrão (Gbps) nas tabelas de tipo de máquina para as famílias de máquinas de uso geral, otimização para computação, otimização para armazenamento, otimização de memória e otimização para aceleradores.
O multiplicador de largura de banda é de aproximadamente 1,16x no uso total da rede, o que significa que 16% dos bytes gravados são sobrecargas. No Persistent Disk regional, o multiplicador de largura de banda é aproximadamente 2,32x para compensar a sobrecarga de replicação adicional.
Em uma situação em que as operações de leitura e gravação do Persistent Disk competem com a largura de banda de saída da rede, 60% da largura de banda máxima de saída da rede, definida pelo tipo de máquina, é alocado para as gravações do Persistent Disk. Os 40% restantes estão disponíveis para todos os outros tráfegos de saída de rede. Consulte a largura de banda de saída Para mais detalhes sobre outros tráfegos de saída da rede.
O exemplo a seguir mostra como calcular a largura de banda máxima de gravação de um Persistent Disk em uma instância de computação N1. A alocação de largura de banda é a parte da largura de banda de saída de rede alocada para o disco permanente. A largura de banda máxima de gravação é a largura de banda máxima de gravação do disco permanente ajustada para sobrecarga.
| Contagem de vCPUs | Limite de saída de rede (MB/s) | Alocação de largura de banda (MB/s) | Largura de banda máxima de gravação (MB/s) | Largura de banda máxima de gravação na utilização total da rede (MB/s) |
|---|---|---|---|---|
| 1 | 250 | 150 | 216 | 129 |
| 2-7 | 1.250 | 750 | 1.078 | 647 |
| 8-15 | 2.000 | 1.200 | 1.724 | 1.034 |
| 16+ | 4.000 | 2.400 | 3.448 | 2.069 |
Para calcular a largura de banda máxima do disco permanente, use as seguintes fórmulas:
Instância N1 com 1 vCPU
O limite de saída da rede é:
2 Gbps / 8 bits = 0,25 GB por segundo = 250 MB por segundo
A alocação de largura de banda do disco permanente na utilização total da rede é:
250 MB por segundo * 0,6 = 150 MB por segundo.
A largura de banda máxima de gravação do disco permanente sem contenção de rede é:
- Discos zonais: 250 MB por segundo / 1,16= 216 MB por segundo
- Discos regionais: 250 MB por segundo / 2,32= 108 MB por segundo
A largura de banda máxima de gravação do disco permanente na utilização total da rede é:
- Discos zonais: 150 MB por segundo / 1,16 ~= 129 MB por segundo
- Discos regionais: 150 MB por segundo / 2,32= 65 MB por segundo
Os limites de saída de rede fornecem um limite superior para o desempenho. Outros fatores podem limitar o desempenho abaixo desse nível. Consulte as seções a seguir para informações sobre outras restrições.
Leituras e gravações simultâneas
Nos discos permanentes padrão, leituras e gravações simultâneas compartilham os mesmos limites de desempenho. Quando a instância de computação está usando mais capacidade de leitura ou IOPS, ela consegue executar menos gravações. Por outro lado, instâncias que usam mais capacidade de gravação ou IOPS podem executar menos leituras.
Os volumes de discos permanentes não podem atingir simultaneamente a capacidade máxima e os limites de IOPS para leituras e gravações.
O cálculo da capacidade de processamento é IOPS * I/O size. Para aproveitar os limites máximos
de capacidade para leituras e gravações simultâneas em discos permanentes SSD,
use um tamanho de E/S suficiente para que as IOPS de leitura e gravação combinadas não excedam o limite de
IOPS.
A tabela a seguir lista os limites de IOPS por instância de computação para leituras e gravações simultâneas.
| Disco permanente padrão | Disco permanente SSD (8 vCPUs) | Disco permanente SSD (mais de 32 vCPUs) | Disco permanente SSD (mais de 64 vCPUs) | ||||
|---|---|---|---|---|---|---|---|
| Ler | Gravação | Leitura | Gravação | Leitura | Gravação | Leitura | Gravação |
| 7.500 | 0 | 15.000 | 0 | 60.000 | 0 | 100.000 | 0 |
| 5.625 | 3.750 | 11.250 | 3.750 | 45.000 | 15.000 | 75.000 | 25.000 |
| 3.750 | 7.500 | 7.500 | 7.500 | 30.000 | 30.000 | 50.000 | 50.000 |
| 1875 | 11.250 | 3.750 | 11.250 | 15.000 | 45.000 | 25.000 | 75.000 |
| 0 | 15.000 | 0 | 15.000 | 0 | 60.000 | 0 | 100.000 |
Os números de IOPS nesta tabela são baseados em uma E/S de 8 KB. Outros tamanhos de E/S, como 16 KB, podem ter números diferentes de IOPS, mas a mesma distribuição de leitura e gravação.
A tabela a seguir lista os limites de capacidade de processamento (MiB por segundo) por instância para leituras e gravações simultâneas.
| Disco permanente padrão | Disco permanente SSD (6 a 14 vCPUs) | Disco permanente SSD (mais de 16 vCPUs) | |||
|---|---|---|---|---|---|
| Ler | Gravação | Leitura | Gravação | Leitura | Gravação |
| 1.200 | 0 | 800* | 800* | 1,200* | 1,200* |
| 900 | 100 | ||||
| 600 | 200 | ||||
| 300 | 300 | ||||
| 0 | 400 | ||||
Tamanho do volume lógico
O Persistent Disk pode ter até 64 TiB, e é possível criar volumes lógicos de até 257 TiB usando o gerenciamento de volumes lógicos na instância de computação. Um tamanho de volume maior afeta o desempenho destas maneiras:
- Nem todos os sistemas de arquivos locais têm bom funcionamento nessa escala. Operações comuns, como a ativação e a verificação do sistema de arquivos, podem demorar mais do que o esperado.
- O disco permanente atinge desempenho máximo quando tem tamanhos menores. Quando há muito armazenamento em uma instância de computação, os discos levam mais tempo para fazer leituras e gravações completas. Se o aplicativo for compatível, use várias instâncias de computação para aumentar a capacidade total do sistema.
- Criar snapshots de grandes quantidades de discos permanentes pode demorar mais do que o esperado e fornecer uma visualização inconsistente do volume lógico, sem uma coordenação cuidadosa com o app.
Vários discos anexados a uma única instância de computação
Os limites de desempenho dos discos quando há vários discos anexados a uma instância de computação dependem se os discos são do mesmo tipo ou de tipos diferentes.
Vários discos do mesmo tipo
Se você tiver vários discos do mesmo tipo anexados a uma instância de computação no mesmo modo (por exemplo, leitura/gravação), os limites de desempenho serão os mesmos de um único disco que tem o tamanho desses discos. Se você usar todos os discos a 100%, o limite de desempenho agregado será dividido igualmente entre os discos, seja qual for o tamanho relativo deles.
Por exemplo, suponha que você tenha um espaço de 200 GBpd-standard e um espaço de
1.000 GB pd-standard disco. Se você não usar o disco de 1.000 GB,
o de 200 GB poderá atingir o limite de desempenho de um disco padrão
de 1.200 GB. Se você
usar 100% dos dois discos, cada um terá o limite de desempenho de um disco permanente
padrão de 600 GB pd-standard (1.200 GB / 2 discos = disco de
600 GB).
Vários discos de diferentes tipos
Se você anexar diferentes tipos de discos a uma instância de computação, o desempenho máximo possível será o limite de desempenho do disco mais rápido compatível com a instância. O desempenho cumulativo dos discos anexados não vai exceder os limites de desempenho do disco mais rápido compatível com a instância de computação.
Otimize seus discos para IOPS ou cargas de trabalho orientadas à capacidade
As recomendações de desempenho dependem de você quer maximizar IOPS ou capacidade de processamento.
Cargas de trabalho orientadas a IOPS
Bancos de dados SQL ou NoSQL têm padrões de uso de acesso aleatório aos dados. O Google recomenda os seguintes valores para cargas de trabalho orientadas a IOPS:
Valores de profundidade da fila de E/S de 1 para cada 400 a 800 de IOPS, até o limite de 64 em grandes volumes
uma CPU livre para cada 2.000 IOPS de leitura aleatória e para cada 2.500 IOPS de gravação aleatória.
Se o tipo de máquina da instância de computação for compatível, use os discos Hyperdisk Extreme ou Hyperdisk Balanced, que permitem mudar as IOPS provisionadas.
Os valores mais baixos de readahead geralmente são sugeridos em documentos de práticas recomendadas do MongoDB, do Apache Cassandra (ambos em inglês) e de outros aplicativos de banco de dados.
Cargas de trabalho orientadas à capacidade
Leituras sequenciais rápidas são excelentes para operações de streaming, como um job do Hadoop, e tamanhos de E/S maiores podem aumentar o desempenho do streaming.
Use um tamanho de E/S de 256 KB ou mais.
Se o tipo de máquina da instância de computação for compatível, use discos Hyperdisk Throughput ou Hyperdisk Balanced, que permitem mudar a capacidade de processamento provisionada.
Para o disco permanente padrão, use oito ou mais streams de E/S sequenciais paralelos, quando possível. Os discos permanentes padrão são projetados para otimizar o desempenho de E/S para acesso sequencial ao disco, semelhante a um disco rígido do HDD físico.
Verifique se o aplicativo está otimizado para uma localidade razoável de dados em discos grandes.
Se o aplicativo acessar dados distribuídos em diferentes partes de um disco em um curto período (centenas de GB por vCPU), você não vai alcançar IOPS ideais. Para ter o melhor desempenho, otimize a localidade dos dados, ponderando fatores como a fragmentação do disco e a aleatoriedade das partes acessadas.
Para um disco permanente SSD, verifique se o programador de E/S no sistema operacional está configurado para atender às suas necessidades específicas.
Em sistemas baseados em Linux, verifique se o programador de E/S está definido como
none. Esse programador de E/S não reorganiza as solicitações e é ideal para dispositivos de E/S rápidos e aleatórios.Na linha de comando, verifique a programação de E/S usada pela máquina Linux:
cat /sys/block/sda/queue/scheduler
O resultado será assim:
[mq-deadline] none
O programador de E/S ativo no momento é exibido entre colchetes (
[]).Se o programador de E/S não estiver definido como
none, execute uma das seguintes etapas:- Para alterar o programador de E/S padrão para
none, definaelevator=nonena entradaGRUB_CMDLINE_LINUXdo arquivo de configuração do GRUB. Normalmente, esse arquivo está localizado em/etc/default/grub, mas em algumas distribuições anteriores, ele pode estar em um diretório diferente.
GRUB_CMDLINE_LINUX="elevator=none vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16
Depois de atualizar o arquivo de configuração do GRUB, configure o carregador de inicialização no sistema para que ele seja inicializado no Compute Engine.
- Como alternativa, é possível alterar o programador de E/S no ambiente de execução:
echo 'none' | sudo tee /sys/block/sda/queue/scheduler
Se você usar esse método, o sistema alternará de volta para o programador padrão de E/S na reinicialização. Execute o comando
catnovamente para verificar o programador de E/S.- Para alterar o programador de E/S padrão para
Mudanças na carga de trabalho que podem melhorar o desempenho do disco
Certos comportamentos de carga de trabalho podem melhorar o desempenho das operações de E/S nos discos anexados.
Use uma profundidade de fila de E/S alta
Discos permanentes têm uma latência maior do que os discos conectados localmente, como SSDs locais, porque eles são dispositivos conectados à rede. Eles podem oferecer IOPS e capacidade de processamento muito altas, mas é preciso garantir que solicitações de E/S suficientes sejam feitas 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 listam 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.
Gere E/S suficiente usando um tamanho grande de E/S
Use o tamanho grande de E/S
Para garantir que os limites de IOPS e a latência não afetem o desempenho do aplicativo, use um tamanho mínimo de E/S de 256 KB ou um valor maior.
Use tamanhos de faixa grandes para aplicativos distribuídos do sistema de arquivos. Uma carga de trabalho de E/S aleatória que usa tamanhos de listras grandes (4 MB ou mais) atinge um ótimo desempenho em discos permanentes padrão porque a carga de trabalho imita o acesso a vários discos sequenciais de stream com eficiência.
Verifique se o aplicativo está gerando E/S suficiente
Verifique se o aplicativo está gerando E/S suficiente para utilizar totalmente os limites de IOPS e a capacidade de processamento do disco. Para entender melhor o padrão de E/S de carga de trabalho, analise o uso de disco e as métricas de desempenho no Cloud Monitoring.
Verifique se há processamento disponível suficiente na instância que está gerando a E/S
Se a instância de computação tiver pouca CPU, o app não conseguirá gerenciar as IOPS descritas acima. Recomendamos que você tenha uma CPU disponível para cada 2.000–2.500 IOPS de tráfego esperado.
Limitar cargas pesadas de E/S a um período máximo
Um período refere-se a um intervalo contíguo de endereços de blocos lógicos em um único disco. As cargas pesadas de E/S atingem o desempenho máximo quando limitadas a um determinado período máximo, o que depende do tipo de máquina da instância de computação a que o disco está anexado, conforme listado na tabela a seguir.
| Tipo de máquina | Período máximo recomendado |
|---|---|
|
25 TB |
| Todos os outros tipos de máquinas | 50 TB |
Os períodos em discos permanentes separados que somam até 50 TB podem ser considerados iguais a um período de 50 TB para fins de desempenho.
Mudanças no sistema operacional para melhorar o desempenho do disco
Em alguns casos, é possível ativar ou desativar recursos no nível do sistema operacional ou configurar os discos anexados de maneiras específicas para melhorar o desempenho do disco.
Evitar o uso de sistemas de arquivos ext3 no Linux
O uso do sistema de arquivos ext3 em uma instância de computação do Linux pode resultar em um desempenho muito ruim em cargas de gravação pesadas. Use ext4 quando possível. O driver do sistema de arquivos ext4 é compatível com versões anteriores de ext3 e ext2 e é compatível com a montagem de sistemas de arquivos ext3. O sistema de arquivos ext4 é o padrão na maioria dos sistemas operacionais Linux.
Se não for possível migrar para ext4, como alternativa, monte sistemas de arquivos ext3
com a opção de montagem data=journal. Isso melhora as IOPS de gravação ao custo da capacidade de processamento de gravação. A migração para ext4 pode resultar em uma melhoria de até sete vezes em alguns comparativos de mercado.
Desativar a inicialização lenta e ativar comandos DISCARD
Os discos permanentes aceitam operações de descarte ou comandos TRIM, que permitem aos sistemas operacionais informar os discos quando os blocos deixam de ser usados. O suporte a DISCARD permite ao sistema operacional marcar blocos do disco como não sendo mais necessários sem incorrer no custo de zerar os blocos.
Na maioria dos sistemas operacionais Linux, você ativa operações de descarte quando monta um Persistent Disk na instância de computação. As instâncias de computação do Windows Server 2012 R2 ativam operações de descarte por padrão quando você monta um Persistent Disk.
Ativar descartar pode melhorar o desempenho geral do ambiente de execução, além de acelerar o desempenho do disco quando ele é montado pela primeira vez. A formatação de um volume de disco inteiro pode ser demorada, portanto, a formatação lenta é uma prática comum. A desvantagem da formatação lenta é que o custo é frequentemente pago na primeira vez em que o volume é ativado. Ao desativar a inicialização lenta e permitir operações de descarte, é possível conseguir formatação rápida e montar operações.
Desative a inicialização lenta e ative as operações de descarte ao formatar um disco passando os seguintes parâmetros para mkfs.ext4:
-E lazy_itable_init=0,lazy_journal_init=0,discardO parâmetro
lazy_journal_init=0não funciona em instâncias com imagens do CentOS 6 ou do RHEL 6. Para instâncias de computação que usam esses sistemas operacionais, formate o Persistent Disk sem esse parâmetro.-E lazy_itable_init=0,discardPara permitir operações de descarte ao ativar um disco, transmita a seguinte sinalização para o comando
mount:-o discard
O Persistent Disk funciona bem com operações de descarte ativadas. No entanto, também é possível executar fstrim periodicamente além de ou em vez de usar as operações de descarte. Se você não usa operações de descarte, execute
fstrim antes de criar um snapshot do disco de inicialização. O corte do sistema de arquivos permite criar imagens de snapshot menores, o que reduz o custo do armazenamento delas.
Ajuste o valor de readahead
Para melhorar o desempenho de E/S, os sistemas operacionais usam técnicas como readahead (em inglês), também chamada de "leitura à frente", em que é lido mais do que o solicitado de um arquivo nessa memória, supondo que leituras posteriores provavelmente precisarão desses dados. Um readahead maior aumenta a capacidade às custas da memória e IOPS. Já o readahead menor aumenta as IOPS às custas da capacidade.
Em sistemas Linux, é possível receber e definir o valor de readahead com o comando blockdev:
$ sudo blockdev --getra /dev/DEVICE_ID
$ sudo blockdev --setra VALUE /dev/DEVICE_ID
O valor de readahead é <desired_readahead_bytes> / 512 bytes.
Por exemplo, no caso de um readahead de 8 MB, esse valor equivale a 8.388.608 bytes (8 * 1024 * 1024).
8388608 bytes / 512 bytes = 16384
Defina blockdev como 16384:
$ sudo blockdev --setra 16384 /dev/DEVICE_ID
Use um tamanho de setor de 4 KB para xfs
Ao formatar um disco com xfs, o tamanho padrão do setor é de 512 bytes. Para evitar a sobrecarga de leitura-modificação-gravação e melhorar o desempenho, formate o disco com um tamanho de setor de 4 KB:
$ sudo mkfs.xfs -s size=4096 /dev/DEVICE_NAME
Substitua DEVICE_NAME pelo nome do dispositivo do
disco que você está formatando. Por exemplo, sdb.
Modificar ou criar uma instância de computação
Há limites associados a cada tipo de máquina que podem afetar o desempenho dos discos anexados. Os limites incluem:
- O desempenho do disco permanente aumenta à medida que aumenta o número de vCPUs disponíveis.
- Todos os tipos de máquina não oferecem suporte a hiperdisco.
- As taxas de saída de rede aumentam à medida que o número de vCPUs disponíveis aumenta.
Verifique se você tem CPUs sem custo financeiro
A leitura e a gravação de volumes do Persistent Disk exigem ciclos de CPU da instância de computação. Para atingir níveis de IOPS muito altos e consistentes, as CPUs precisam estar livres para processar E/S.
Para aumentar o número de vCPUs disponíveis com sua instância de computação, crie uma nova instância ou edite o tipo de máquina de uma instância de computação.
Considere usar o Google Cloud Hyperdisk
Para aumentar as IOPS e a capacidade de processamento, considere usar volumes do Hyperdisk em vez do Persistent Disk se a série de máquinas for compatível com o Hyperdisk.
Para determinar se a série de máquinas é compatível com o Hyperdisk, consulte Suporte a séries de máquinas para o Hyperdisk.
Se a série de máquinas da sua instância for compatível com o Hyperdisk, siga estas etapas para usar volumes do Hyperdisk:
Escolha um tipo de hiperdisco que atenda às necessidades da sua carga de trabalho.
Para mudar para o tipo de Hyperdisk escolhido, consulte as instruções em Alterar o tipo de disco.
Mude a série de máquinas da instância para melhorar o desempenho
As séries de máquinas de gerações mais recentes normalmente são executadas em CPUs mais novas, o que pode oferecer um desempenho melhor do que as anteriores. Além disso, as CPUs mais recentes podem oferecer suporte a outras funcionalidades para melhorar o desempenho das cargas de trabalho, como Advanced Matrix Extensions (AMX) ou Intel Advanced Vector Extensions (AVX-512) de dois minutos.
A seguir
- Monitore o desempenho do disco analisando as métricas de desempenho do disco e monitorando a integridade do disco.
- Compare os volumes de disco permanente anexados a:
- Saiba mais sobre preços de discos permanentes
- Saiba como monitorar o desempenho do disco analisando as métricas de desempenho do disco.