Entender as características de desempenho do disco
O desempenho do aplicativo geralmente depende da rapidez com que o aplicativo pode ler e gravar dados. Para melhorar o desempenho do aplicativo, primeiro você deve entender como o desempenho é medido. Em seguida, entender as configurações e as opções que o afetam.
Características de desempenho do disco
Para escolher o tipo de disco certo, é importante que você entenda os indicadores de desempenho. Os seguintes indicadores expressam o desempenho:
- IOPS (operações de entrada/saída por segundo): O número de solicitações que seu aplicativo envia para os discos em um segundo afeta diretamente o desempenho do aplicativo. Alguns aplicativos, como sites de varejo, precisam de IOPS alta para gerenciar todas as solicitações pequenas e aleatórias de E/S (entrada/saída) que precisam ser processadas rapidamente para manter o site dinâmico. Discos de alto desempenho têm valores mais altos de IOPS.
- Taxa de transferência: é o volume de dados que o aplicativo envia aos discos em um intervalo especificado. A taxa de transferência também é chamada de taxa de transferência de dados e é medida em MB/s. Se o aplicativo estiver executando E/S com blocos grandes de dados, ele exigirá alta taxa de transferência. Discos de melhor desempenho têm uma taxa de transferência maior.
- Latência: expressa o tempo que o aplicativo leva para enviar uma solicitação para o disco e receber uma resposta. A latência impõe um limite à IOPS efetiva. Por exemplo, se o disco puder lidar com 5.000 IOPS, mas cada operação levar 10 ms para processar, seu aplicativo será limitado a 100 operações por segundo devido ao tempo de processamento. A latência será significativamente aprimorada se você habilitar o cache de host ReadOnly.
IOPS vs. taxa de transferência
A taxa de transferência e o IOPS têm uma relação direta. A alteração de um afeta diretamente o outro. Para obter um limite teórico da taxa de transferência, você pode usar a fórmula a seguir: IOPS × tamanho de E/S = taxa de transferência. É importante considerar esses dois valores ao planejar seu aplicativo.
Para discos Ultra e discos gerenciados SSD Premium v2, ele funciona um pouco diferente, pois você pode fazer o ajuste independentemente o tamanho do disco, a IOPS e a taxa de transferência. Ajustes na IOPS ou na taxa de transferência para discos Ultra e discos gerenciados SSD Premium v2 podem ser feitos em runtime, sem desanexar o disco da máquina virtual (VM).
O IOPS de Discos Ultra
Os Discos Ultra são compatíveis com limites de IOPS de 300 IOPS/GiB, até um máximo de 160,000 mil IOPS por disco. Para alcançar o IOPS de destino para o disco, certifique-se de que a IOPS do disco selecionado seja menor que o limite de IOPS da VM.
O limite máximo atual de IOPS para uma única VM em tamanhos normalmente disponíveis é 160.000. Discos Ultra com IOPS maiores podem ser usados como discos compartilhados para dar suporte a várias VMs.
O mínimo de IOPS garantido por disco são de 1 IOPS/GiB, com uma linha de base total mínima de 100 IOPS. Por exemplo, se você provisionou um disco ultra de 4 GiB, a IOPS mínima para esse disco será de 100, em vez de quatro.
Taxa de transferência do Discos Ultra
O limite da taxa de transferência de um só disco ultra é de 256 KiB/s para cada IOPS provisionado, até um máximo de 4.000 MB/s por disco (em que MB/s = 10^6 Bytes por segundo). A taxa de transferência mínima garantida por disco é de 4KiB/s para cada IOPS provisionado, com uma linha de base total mínima de 1 Mb/s.
SSD Premium v2 IOPS
Todos os discos SSD Premium v2 têm uma IOPS de linha de base de 3000 gratuitamente. Após 6 GiB, o IOPS máximo de um disco pode ter aumentos a uma taxa de 500 por GiB e até 80.000 IOPS. Portanto, um disco de 8 GiB pode ter até 4.000 IOPS e um disco de 10 GiB pode ter até 5.000 IOPS. Para poder definir 80.000 IOPS em um disco, esse disco deve ter pelo menos 160 GiBs. Aumentar seu IOPS para mais de 3.000 aumenta o preço do seu disco.
Taxa de transferência do SSD Premium v2
Todos os discos SSD Premium v2 têm uma taxa de transferência básica de 125 MB/s gratuita. Após 6 GiB, a taxa de transferência máxima que pode ser definida aumenta em 0,25 MB/s por IOPS definido. Se um disco tiver 3.000 IOPS, a taxa de transferência máxima que ele pode definir será 750 MB/s. Para aumentar a taxa de transferência para esse disco além de 750 MB/s, o IOPS deve ser aumentado. Por exemplo, se você aumentou o IOPS para 4.000, a taxa de transferência máxima que pode ser definida será 1.000. 1.200 MB/s é a taxa de transferência máxima com suporte para discos que têm 5.000 IOPS ou mais. Aumentar a taxa de transferência para mais de 125 MB/s aumenta o preço do disco.
Limitação de E/S de máquina virtual
Agora que você sabe quais discos estão disponíveis no Azure, você precisa corresponder cada uma de suas VMs com o tipo de disco correto. As VMs têm seus próprios limites de IOPS de armazenamento, o que pode afetar o desempenho geral do aplicativo quando combinado com o IOPS de disco.
Se você não dimensionar a VM corretamente para o desempenho de armazenamento que um aplicativo requer, a própria VM se tornará um gargalo.
Por exemplo, suponha que seu aplicativo faça uma solicitação que exija 15.000 IOPS. Você provisionou uma VM Standard_D8s_v3, com um disco do sistema operacional P30 e dois discos de dados SSD Premium com SKU P40. Cada disco de dados pode lidar com 7.500 IOPS e, eventualmente, pode atender à demanda dos aplicativos. No entanto, a VM em si tem um limite máximo de 12.800 IOPS, que é o IOPS real que o aplicativo obtém. A figura a seguir ilustra esse exemplo.
O cenário ilustrado no exemplo anterior é conhecido como limitação de E/S de VM. Nesse cenário, o aplicativo está solicitando uma quantidade de taxa de transferência e IOPS que o disco pode gerenciar, mas a VM não pode acomodar esses requisitos.
Você pode diagnosticar os problemas de desempenho causados pela limitação de E/S de VM usando as seguintes métricas:
- Percentual consumido de IOPS armazenada em cache da VM
- Percentual consumido de largura de banda armazenada em cache da VM
- Percentual consumido de IOPS não armazenada em cache da VM
- Percentual consumido de largura de banda não armazenada em cache da VM
Limitação de E/S do disco
Você pode encontrar outras situações em que a solução de armazenamento não atende às demandas do aplicativo. No entanto, o gargalo pode ser causado se você selecionar o nível de desempenho incorreto para os discos.
Considere o mesmo exemplo em que o aplicativo requer 15.000 IOPS da VM e você escolhe a seguinte configuração:
- Standard D16s_v4 com 25.600 IOPS
- Disco do sistema operacional P20 com 2.300 IOPS
- Dois discos de dados P30, cada um com suporte de 5.000 IOPS
Nesse cenário, a demanda do aplicativo será dividida em três solicitações diferentes:
- 2.300 IOPS são solicitados do disco do sistema operacional
- 5.000 IOPS são solicitados de cada disco de dados
O IOPS total que a VM retornará ao aplicativo será de 12.300 como uma soma de cada IOPS fornecido pelo sistema operacional e pelos discos de dados.
Esse cenário é conhecido como limitação de E/S de disco, quando o próprio disco não pode atender às demandas do aplicativo.
Para diagnosticar a limitação de E/S de disco, use as seguintes métricas:
- Percentual consumido de IOPS do disco de dados
- Percentual consumido de largura de banda do disco de dados
- Percentual consumido de IOPS do disco do SO
- Percentual consumido de largura de banda do disco do OS
Cache de disco
Um cache é um componente especializado que armazena dados, normalmente na memória, para que o aplicativo possa acessá-los mais rapidamente. Os dados em um cache geralmente são dados que foram lidos anteriormente ou dados resultantes de um cálculo anterior. O objetivo é que os aplicativos acessem dados mais rapidamente do cache do que do disco. O cache de disco não está disponível em Discos Ultra e SSD Premium v2.
O cache usa um armazenamento temporário especializado e, às vezes, caro, que apresenta um desempenho de leitura e gravação mais rápido em comparação com o armazenamento permanente. Devido a esse armazenamento em cache geralmente ser limitado, você pode precisar decidir quais operações de dados serão mais beneficiadas pelo cache. Mas mesmo quando o cache pode ser amplamente disponibilizado, como no Azure, ainda é importante saber os padrões de carga de trabalho de cada disco antes de decidir qual tipo de cache usar.
O cache de leitura tenta acelerar a recuperação de dados. Em vez de ler do armazenamento permanente, o aplicativo lê os dados do cache mais rápido.
É importante observar que o cache de leitura ajuda quando há alguma previsibilidade para a fila que você está lendo, como um conjunto de leituras sequenciais. Para E/S aleatória, em que os dados acessados estão distribuídos em todo o armazenamento, o cache trará pouco ou nenhum benefício e ainda poderá reduzir o desempenho do disco.
O cache de gravação tenta acelerar a gravação dados no armazenamento persistente. Usando um cache de gravação, o aplicativo pode considerar os dados que devem ser salvos.
Na realidade, quando o cache de gravação é usado, os dados são colocados em fila em um cache, aguardando para serem gravados em um disco. Como você pode imaginar, esse mecanismo pode ser um possível ponto de falha, por exemplo, quando um sistema é desligado antes que os dados armazenados em cache sejam lidos. Alguns sistemas, como o SQL Server, gerenciam por conta própria a tarefa de gravação de dados armazenados em cache no armazenamento em disco persistente.
Limites armazenados e não armazenados em cache de VMs
Agora que você entende como o cache pode melhorar o desempenho para leitura ou gravação de dados no disco, vamos examinar como o cache afeta o desempenho da VM.
O desempenho da VM depende dos limites de IOPS e da taxa de transferência que são impostos com base no tamanho da VM. Todas as VMs na camada de Premium têm limites diferentes para IOPS e taxa de transferência com base em configurações armazenadas e não armazenadas em cache. Você pode melhorar o desempenho da VM para atender à maior demanda de IOPS e taxa de transferência habilitando o cache de host da VM.
A tabela a seguir lista exemplos que ilustram a diferença no desempenho da taxa de transferência e largura de banda de disco armazenado e não armazenados em cache.
Nome do tamanho da VM | Taxa de transferência máxima de armazenamento temporário e em cache: IOPS/MB/s (tamanho do cache em GiB) | Taxa de transferência de disco sem cache máxima em IOPS/MB/s |
---|---|---|
Standard_D2s_v3 | 4.000/32 (50) | 3.200/48 |
Standard_D4s_v3 | 8.000/64 (100) | 6.400/96 |
Standard_D8s_v3 | 16.000/128 (200) | 12.800/192 |
Standard_D64s_v3 | 128.000/1.024 (1.600) | 80.000/1.200 |
O cache de host pode ajudá-lo a evitar cenários de gargalo de VM.
No exemplo anterior de limitação de E/S de VM, o aplicativo exigia 15.000 IOPS. Ambos os discos de dados podem processar essa demanda, mas a VM Standard_D8s_v3 pode oferecer apenas 12.800 IOPS no estado não armazenado em cache.
Se você configurar o cache de host na VM Standard_D8s_v3, você poderá obter 16.000 IOPS em cache, que é mais do que o aplicativo exige.