Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs Linux ✔️ VMs Windows ✔️ Conjuntos de escala flexível ✔️ Conjuntos de escala uniformes
Este artigo explica como as Máquinas Virtuais do Azure (VMs) e os limites de desempenho do disco gerido interagem. Descreve também como diagnosticar gargalos de I/O de disco e otimizar o desempenho do armazenamento.
Como a VM do Azure e os limites de desempenho do disco gerido interagem
As VMs do Azure têm operações de entrada/saída por segundo (IOPS) e limites de throughput consoante o tipo e tamanho da VM. Os discos de SO gerido e os discos de dados têm os seus próprios IOPS e limites de throughput.
Alocação e desempenho de disco
Os discos ligados a uma VM Azure usam três caminhos de E/S. O diagrama seguinte mostra como o Azure aloca largura de banda e operações de entrada/saída por segundo (IOPS) ao longo desses caminhos em tempo real.
O primeiro caminho de E/S é o caminho do disco gerenciado sem cache. As operações de E/S usam esse caminho quando você estiver usando um disco gerenciado e definir o cache do host como none. As operações de E/S que usam esse caminho são executadas com base no provisionamento no nível do disco e, em seguida, no provisionamento no nível da rede VM para IOPS e taxa de transferência.
O segundo caminho de E/S é o caminho do disco cacheado e gerido. A E/S de disco gerenciado em cache usa um SSD próximo à VM. Esta SSD tem as suas próprias IOPS e taxa de transferência provisionadas, e aparece como "provisionamento ao nível da SSD" no diagrama.
Quando um disco gerenciado em cache inicia uma leitura, a solicitação primeiro verifica se os dados estão no SSD do servidor. Se os dados não estiverem presentes, ocorre uma falha de cache. Em seguida, a E/S é executada com base no provisionamento no nível do SSD, no provisionamento no nível do disco e, em seguida, no provisionamento no nível da rede VM para IOPS e taxa de transferência.
Quando o SSD do servidor inicia leituras em E/S armazenadas em cache que estão presentes no SSD do servidor, ocorre um acerto de cache. Em seguida, a E/S é realizada com base no provisionamento ao nível do SSD. Grava que um disco gerenciado em cache inicia sempre seguir o caminho de uma falha em cache. Eles passam pelo provisionamento no nível SSD, no nível do disco e no nível da rede VM.
O terceiro caminho é para o disco temporário. Está disponível apenas em VMs que suportam discos temporários. Uma operação de E/S que usa esse caminho é executada com base no provisionamento ao nível de SSD para IOPS e taxa de transferência.
O diagrama a seguir mostra um exemplo dessas limitações. O sistema impede que uma VM Standard_D2s_v3 atinja o potencial de 5.000 IOPS de um disco P30, seja ele armazenado em cache ou não, devido aos limites nos níveis SSD e de rede.
O Azure usa um canal de rede priorizado para o tráfego de disco. O tráfego de disco tem precedência sobre o tráfego de rede de baixa prioridade. Essa priorização ajuda os discos a manter o desempenho esperado se houver contenção de rede.
Da mesma forma, o Armazenamento do Azure lida com contenções de recursos e outros problemas em segundo plano com o balanceamento automático de carga. O Armazenamento do Azure aloca os recursos necessários quando você cria um disco e aplica o balanceamento proativo e reativo de recursos para lidar com o nível de tráfego. Esse comportamento garante ainda mais que os discos possam sustentar suas IOPS esperadas e metas de taxa de transferência. Use métricas no nível da VM e no nível do disco para acompanhar o desempenho e configurar alertas conforme necessário.
Limitação de I/O de disco
O desempenho da sua aplicação fica limitado quando pede mais IOPS ou largura de banda do que o que está atribuído às máquinas virtuais ou discos anexados. Quando é imposto um limite, a aplicação tem um desempenho inferior ao ideal. Esta condição pode levar a consequências negativas, como aumento da latência. Os exemplos seguintes usam IOPS, mas a mesma lógica aplica-se ao rendimento.
Exemplo de configuração de limites ao nível do disco:
- Standard_D8s_v3
- IOPS não armazenadas em cache: 12.800
- Disco do SO E30
- IOPS: 500
- Dois discos de dados E30 × 2
- IOPS: 500
O aplicativo em execução na máquina virtual faz uma solicitação que requer 10.000 IOPS para a máquina virtual. Todos os quais são permitidos pela VM porque a máquina virtual Standard_D8s_v3 pode executar até 12.800 IOPS.
As 10.000 solicitações IOPS são divididas em três solicitações diferentes para os diferentes discos:
- 1.000 IOPS são solicitados para o disco do sistema operacional.
- São solicitadas 4.500 IOPS para cada disco de dados.
Todos os discos anexados são discos E30 e só podem lidar com 500 IOPS. Portanto, respondem de volta com 500 IOPS cada. O desempenho do aplicativo é limitado pelos discos anexados e ele só pode processar 1.500 IOPS. O aplicativo pode funcionar com desempenho máximo a 10.000 IOPS se forem usados discos com melhor desempenho, como discos P30 SSD Premium.
Limitação de I/O em máquinas virtuais
Exemplo de configuração de limites ao nível da VM:
- Standard_D8s_v3
- IOPS não armazenadas em cache: 12.800
- Disco do sistema operativo P30
- IOPS: 5.000
- Dois discos de dados P30 × 2
- IOPS: 5.000
O aplicativo em execução na máquina virtual faz uma solicitação que requer 15.000 IOPS. Infelizmente, a máquina virtual Standard_D8s_v3 só é provisionada para lidar com 12.800 IOPS. O aplicativo é limitado pelos limites da máquina virtual e deve alocar as 12.800 IOPS alocadas.
Essas 12.800 IOPS solicitadas são divididas em três solicitações diferentes para os diferentes discos:
- 4.267 IOPS são solicitadas para o disco do sistema operacional.
- São solicitadas 4.266 IOPS para cada disco de dados.
Todos os discos anexados são discos P30 que podem lidar com 5.000 IOPS. Assim, eles respondem com os montantes que solicitaram.
Limites com e sem cache da máquina virtual
As máquinas virtuais habilitadas para armazenamento premium e cache de armazenamento premium têm dois limites de largura de banda de armazenamento diferentes. Vejamos a máquina virtual Standard_D8s_v3 como exemplo. Aqui está a documentação sobre a série Dsv3 e o Standard_D8s_v3:
Os dados de disco "Não armazenados em cache" no Armazenamento Remoto são os limites máximos de armazenamento padrão que a máquina virtual pode manipular.
Os dados de disco "em Cache" na guia Armazenamento Local são limites separados quando se ativa o cache do anfitrião.
Configurar a cache do anfitrião
A cache do host funciona ao aproximar o armazenamento da VM, permitindo que seja gravado ou lido rapidamente. A quantidade de armazenamento disponível para a VM para cache de host está na documentação. Por exemplo, você pode ver o Standard_D8s_v3 vem com 200 GiB de armazenamento em cache.
Você pode habilitar o cache do host ao criar sua máquina virtual e anexar discos. Você também pode ativar e desativar o cache de host em seus discos em uma VM existente. Por padrão, os discos de dados compatíveis com cache não têm o cache habilitado. Os discos do sistema operacional com capacidade de cache têm o cache de leitura/gravação habilitado.
Você pode ajustar o cache do host para corresponder aos requisitos de carga de trabalho para cada disco. Você pode definir o cache do host como:
- Apenas leitura: para cargas de trabalho que só fazem operações de leitura
- Leitura/gravação: para cargas de trabalho que equilibram operações de leitura e gravação
Se sua carga de trabalho não seguir nenhum desses padrões, não recomendamos que você use o cache do host.
Cache de host apenas de leitura
O exemplo seguinte mostra como fluem os pedidos de E/S quando defines a cache do host para Apenas Leitura.
Exemplo de configuração de armazenamento em cache no anfitrião só de leitura:
- Standard_D8s_v3
- IOPS em cache: 16.000
- IOPS não armazenadas em cache: 12.800
- Disco de dados P30
- IOPS: 5.000
- Cache do host: somente leitura
Quando uma leitura é realizada e os dados desejados estão disponíveis no cache, o cache retorna os dados solicitados. Não há necessidade de ler a partir do disco. Esta leitura é contabilizada nos limites em cache da VM.
Quando uma leitura é executada e os dados desejados não estão disponíveis no cache, a solicitação de leitura é retransmitida para o disco. Em seguida, o disco disponibiliza-o tanto no cache como na VM. Essa leitura é contada para o limite não armazenado em cache da VM e para o limite armazenado em cache da VM.
Quando uma gravação é executada, ela deve ser gravada no cache e no disco antes de ser considerada concluída. Esta operação de gravação é contabilizada tanto para o limite não armazenado em cache da VM quanto para o limite armazenado em cache da VM.
Cache de hosts de leitura/escrita
O exemplo seguinte mostra como os pedidos de E/S fluem quando defines a cache do host para Ler/Escrever.
Configuração de exemplo de cache de hosts de leitura/escrita:
- Standard_D8s_v3
- IOPS em cache: 16.000
- IOPS não armazenadas em cache: 12.800
- Disco de dados P30
- IOPS: 5.000
- Cache do host: leitura/gravação
Com o armazenamento em cache de leitura/escrita no anfitrião, as leituras com êxito na cache contam para os limites de cache da VM. As leituras com falha de cache são contabilizadas tanto para os limites com cache como para os limites sem cache da VM. As escritas são tratadas de forma diferente: uma escrita precisa de alcançar apenas a cache do host para ser considerada completa. A escrita é então feita de forma preguiçosa no disco quando o cache é liberado periodicamente. Também pode forçar uma descarga através da emissão de um comando f/sync ou fua. Uma escrita é contabilizada como E/S em cache quando é escrita na cache e como E/S não armazenada em cache quando é escrita de forma diferida no disco.
Exemplo do limite em cache
O exemplo seguinte utiliza uma VM Standard_D8s_v3 com cache do host ativado e três discos P30 ligados. A VM tem um limite em cache de 16.000 IOPS, e cada disco P30 pode lidar com 5.000 IOPS.
Exemplo de configuração com limite em cache:
- Standard_D8s_v3
- IOPS em cache: 16.000
- IOPS não armazenadas em cache: 12.800
- Disco do sistema operativo P30
- IOPS: 5.000
- Cache do host: leitura/gravação
- Dois discos de dados P30 × 2
- IOPS: 5.000
- Cache do host: leitura/gravação
O aplicativo usa uma máquina virtual Standard_D8s_v3 com cache habilitado. Faz um pedido de 16.000 IOPS. As solicitações são concluídas assim que são lidas ou gravadas no cache. As gravações são então gravadas preguiçosamente nos discos anexados.
Limites combinados de cache e não em cache
Os limites armazenados em cache de uma máquina virtual são separados de seus limites não armazenados em cache. Esta separação significa que pode ativar a cache do host em alguns discos ligados a uma VM sem ativar a cache do host noutros discos. Esta configuração permite que as suas máquinas virtuais obtenham uma E/S total de armazenamento do limite em cache mais o limite não armazenado em cache.
O exemplo seguinte mostra como os limites com cache e sem cache funcionam em conjunto numa VM Standard_D8s_v3 com SSDs Premium anexados.
Exemplo combinado de configuração de limites em cache e sem cache:
- Standard_D8s_v3
- IOPS em cache: 16.000
- IOPS não armazenadas em cache: 12.800
- Disco do sistema operativo P30
- IOPS: 5.000
- Cache do host: leitura/gravação
- Dois discos de dados P30 × 2
- IOPS: 5.000
- Cache do host: leitura/gravação
- Dois discos de dados P30 × 2
- IOPS: 5.000
- Cache do host: desativado
Nesse caso, o aplicativo em execução em uma máquina virtual Standard_D8s_v3 faz uma solicitação para 25.000 IOPS. A solicitação é dividida em 5.000 IOPS para cada um dos discos conectados. Três discos usam cache de host e dois discos não usam cache de host.
- Como os três discos que usam cache de host estão dentro dos limites armazenados em cache de 16.000, essas solicitações são concluídas com êxito. Não ocorre limite de desempenho de armazenamento.
- Como os dois discos que não usam cache de host estão dentro dos limites de não utilização de cache de 12.800, essas solicitações também são realizadas com sucesso. Não ocorre limite máximo.