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 ajuda a esclarecer o desempenho do disco e como ele funciona quando você combina Máquinas Virtuais do Azure e discos do Azure. Ele também descreve como você pode diagnosticar gargalos para a E/S do disco e as alterações que você pode fazer para otimizar o desempenho.
Como funciona o desempenho do disco?
As máquinas virtuais (VMs) do Azure têm limites de operações de entrada/saída por segundo (IOPS) e de desempenho de débito com base no tipo e no tamanho da VM. Discos de sistema operacional e discos de dados podem ser ligados a máquinas virtuais. Os discos têm os seus próprios limites de débito e de IOPS.
Alocação e desempenho de disco
Há três caminhos que a largura de banda e as operações de E/S por segundo (IOPS) podem levar para discos conectados a uma VM no Azure. O diagrama a seguir mostra a alocação em tempo real desses caminhos.
O diagrama a seguir mostra a alocação em tempo real de largura de banda e operações de E/S por segundo (IOPS) para discos, com três caminhos que a E/S pode tomar.
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 Local/Temp . Só está disponível em VMs que suportam discos Local/Temp . 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.
Limite de E/S do 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. Tal pode levar a consequências negativas, como o aumento da latência. Vejamos alguns exemplos para clarificar este conceito. Para que estes exemplos sejam fáceis de seguir, apenas analisaremos o IOPS. Mas a mesma lógica aplica-se ao rendimento.
Configuração:
- 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 E/S da máquina virtual
Configuração:
- 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.
Máquina virtual sem cache vs limites armazenados em cache
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.
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.
Vamos examinar alguns exemplos de diferentes configurações de cache do host para ver como isso afeta o fluxo de dados e o desempenho. Neste primeiro exemplo, vemos o que acontece com as solicitações de E/S quando a configuração de cache do host é definida como Somente leitura.
Configuração:
- 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.
Em seguida, vamos ver o que acontece com as solicitações de E/S quando a configuração de cache do host é definida como Leitura/gravação.
Configuração:
- 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
Uma leitura é tratada da mesma forma que uma leitura de apenas leitura. As gravações são a única coisa diferente com o cache de leitura/gravação. Quando a gravação com cache de host é definida como Leitura/gravação, a gravação só precisa ser gravada no cache do host para ser considerada concluída. A escrita é então feita de forma preguiçosa no disco quando o cache é liberado periodicamente. Além disso, os clientes podem forçar uma descarga emitindo um comando f/sync
ou fua
. Isso significa que uma gravação é contabilizada como E/S armazenada em cache quando é gravada no cache. Quando é gravado de forma lenta no disco, isto conta para a E/S não armazenada em cache.
Vamos continuar com nossa máquina virtual Standard_D8s_v3. Exceto desta vez, habilitamos o cache de host nos discos. Isso faz com que o limite de IOPS da VM seja de 16.000 IOPS. Anexados à VM estão três discos P30 subjacentes que podem lidar cada um com 5.000 IOPS.
Configuração:
- 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. Isso significa que pode ativar o cache de host em discos ligados a uma VM enquanto não ativa o cache de host em outros discos. Essa configuração permite que suas máquinas virtuais obtenham uma E/S total de armazenamento do limite armazenado em cache mais o limite não armazenado em cache.
Vamos dar um exemplo para ajudá-lo a entender como esses limites funcionam juntos. Continuamos com a configuração da máquina virtual Standard_D8s_v3 com discos premium anexados.
Configuração:
- 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.