Compartilhar via


Desempenho de máquina virtual e disco

Aplica-se a: ✔️ VMs do Linux ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento 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 o seu disco IO 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 operações de entrada/saída por segundo (IOPS) e limites de desempenho de taxa de transferência com base no tipo e tamanho da máquina virtual. Os discos do SO e os discos de dados podem ser anexados às máquinas virtuais. Os discos têm seus próprios limites de IOPS e taxa de transferência.

Desempenho e alocação de disco

Há três caminhos que a largura de banda e as operações de E/S por segundo (IOPS) podem levar a discos anexados a uma VM no Azure. O diagrama a seguir ilustra 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 seguir.

Diagrama de um sistema de provisionamento de três níveis que mostra a largura de banda e a alocação de IOPS.

O primeiro caminho de E/S é o caminho do disco gerenciado sem cache. As operações de E/S usam esse caminho quando você está usando um disco gerenciado e define o cache do host como none. As operações de E/S que usam esse caminho são executadas com base no provisionamento em nível de disco e, em seguida, no provisionamento em nível de rede de VM para IOPS e taxa de transferência.

O segundo caminho de E/S é o caminho do disco gerenciado com cache. A E/S de disco gerenciado em cache usa um SSD que está próximo à VM. Essa SSD tem sua própria IOPS e taxa de transferência provisionadas e aparece como "provisionamento em nível de SSD" no diagrama.

Quando um disco gerenciado em cache inicia uma leitura, a solicitação verifica primeiro se os dados estão no SSD do servidor. Se os dados não estiverem presentes, ocorrerá uma falha de cache. Em seguida, a E/S é executada com base no provisionamento no nível do SSD, no provisionamento em nível de disco e no provisionamento em nível de rede da 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 é executada com base no provisionamento em nível de SSD. As gravações iniciadas por um disco gerenciado em cache sempre seguem o caminho de uma falha em cache. Eles passam pelo provisionamento de nível de rede de SSD, nível de disco e VM.

O terceiro caminho é para o disco Local/Temporário. Ele só está disponível em VMs que dão suporte a discos locais/temporários . Uma operação de E/S que usa esse caminho é executada com base no provisionamento em nível de SSD para IOPS e taxa de transferência.

O diagrama a seguir ilustra 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, esteja ele em cache ou não, devido aos limites nos níveis de SSD e de rede.

Diagrama do sistema de provisionamento de três níveis com um exemplo de alocação Standard_D2s_v3.

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 com outros problemas em segundo plano com balanceamento de carga automático. O Armazenamento do Microsoft 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 que os discos possam sustentar suas metas esperadas de IOPS e taxa de transferência. Use métricas de nível de disco e VM para acompanhar o desempenho e configurar alertas conforme necessário.

Limitação de E/S de disco

O desempenho do seu aplicativo é limitado quando ele solicita mais IOPS ou taxa de transferência do que o alocado para as máquinas virtuais ou discos conectados. Quando limitado, o aplicativo apresenta desempenho abaixo do ideal. Isso pode levar a consequências negativas, como latência aumentada. Vamos examinar alguns exemplos para esclarecer esse conceito. Para tornar esses exemplos fáceis de seguir, examinaremos apenas IOPS. Mas a mesma lógica se aplica à taxa de transferência.

Configuração:

  • Standard_D8s_v3
    • IOPS não armazenado em cache: 12.800
  • Disco do sistema operacional E30
    • IOPS: 500
  • Dois discos de dados E30 × 2
    • IOPS: 500

Diagrama mostrando a limitação de nível de disco.

O aplicativo em execução na máquina virtual faz uma solicitação que requer 10.000 IOPS para a máquina virtual. Todos eles são permitidos pela VM porque a máquina virtual Standard_D8s_v3 pode executar até 12.800 IOPS.

As 10.000 solicitações de 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.
  • 4\.500 IOPS são solicitados para cada disco de dados.

Todos os discos anexados são discos E30 e só podem lidar com 500 IOPS. Portanto, eles respondem de volta com 500 IOPS cada. O desempenho do aplicativo é limitado pelos discos anexados e ele pode processar apenas 1.500 IOPS. O aplicativo pode funcionar com desempenho máximo a 10.000 IOPS se discos de melhor desempenho forem usados, como discos SSD Premium P30.

Limitação de IO de máquina virtual

Configuração:

  • Standard_D8s_v3
    • IOPS não armazenado em cache: 12.800
  • Disco do sistema operacional P30
    • IOPS: 5.000
  • Dois discos de dados P30 × 2
    • IOPS: 5.000

Diagrama que mostra a limitação de nível da máquina virtual.

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 é provisionada apenas para lidar com 12.800 IOPS. O aplicativo é limitado pelos limites da máquina virtual e deve alocar os 12.800 IOPS alocados.

Essas 12.800 IOPS solicitadas são divididas em três solicitações diferentes para os diferentes discos:

  • 4\.267 IOPS são solicitados para o disco do sistema operacional.
  • 4\.266 IOPS são solicitados para cada disco de dados.

Todos os discos anexados são discos P30 que podem lidar com 5.000 IOPS. Então, eles respondem de volta com os valores solicitados.

Máquina virtual sem cache versus limites armazenados em cache

As máquinas virtuais que estão habilitadas tanto para armazenamento premium quanto para cache de armazenamento premium possuem dois limites de largura de banda de armazenamento diferentes. Vamos examinar a máquina virtual Standard_D8s_v3 como exemplo. Aqui está a documentação sobre a Dsv3-series e a Standard_D8s_v3:

  • Os dados do disco "Sem cache" no Armazenamento Remoto são os limites máximos de armazenamento padrão que a máquina virtual pode manipular. Gráfico mostrando as especificações do controle remoto Dsv3.

  • Os dados do disco "Em cache" na guia Armazenamento local são limites separados quando você habilita o cache do host. Gráfico mostrando as especificações locais do Dsv3.

O cache de host funciona ao trazer o armazenamento mais próximo da VM, permitindo que ele 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 que Standard_D8s_v3 vem com 200 GiB de armazenamento em cache.

Você pode habilitar o cache de 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.

Captura de tela mostrando o cache de host.

Você pode ajustar o cache do host para corresponder aos seus requisitos de carga de trabalho para cada disco. Você pode definir o cache do host como:

  • Somente leitura: para cargas de trabalho que realizam apenas operações de leitura
  • Leitura/gravação: para cargas de trabalho que fazem um equilíbrio entre 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 de host.

Vamos executar alguns exemplos de diferentes configurações de cache de host para ver como ele afeta o fluxo de dados e o desempenho. Nesse 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 armazenado em cache: 12.800
  • Disco de dados P30
    • IOPS: 5.000
    • Cache de host: Somente leitura

Quando uma leitura é executada e os dados desejados estão disponíveis no cache, o cache retorna os dados solicitados. Não há necessidade de ler o disco. Essa leitura é contada em relação aos limites em cache da VM.

Diagrama mostrando uma ocorrência de leitura de cache de host de leitura.

Quando uma leitura é realizada 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 envia tanto para o cache quanto para a VM. Essa leitura é contada em relação ao limite não armazenado em cache da VM e ao limite em cache da VM.

Diagrama mostrando uma falha de leitura de cache de host de leitura.

Quando uma gravação é realizada, ela precisa ser gravada no cache e no disco antes de ser considerada concluída. Essa gravação é contada em relação ao limite não armazenado em cache da VM e ao limite em cache da VM.

Diagrama mostrando uma ocorrência de gravação de cache de host de leitura.

Em seguida, vamos examinar 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 armazenado em cache: 12.800
  • Disco de dados P30
    • IOPS: 5.000
    • Cache de host: Leitura/gravação

Uma leitura é tratada da mesma maneira que uma somente leitura. As gravações são a única coisa diferente em relação ao 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. Em seguida, a gravação é gravada lentamente no disco quando o cache é liberado periodicamente. Os clientes também podem forçar uma descarga emitindo um comando f/sync ou fua. Isso significa que uma gravação é contada para E/S em cache quando é gravada no cache. Quando é gravado preguiçosamente no disco, ele é contabilizado no IO sem cache.

Diagrama mostrando gravação de cache de host de leitura/gravação.

Vamos continuar com nossa máquina virtual Standard_D8s_v3. Só que dessa vez habilitamos o cache do host nos discos. Isso torna o limite de IOPS da VM de 16.000 IOPS. Anexados à VM estão três discos P30 subjacentes que podem lidar com 5.000 IOPS.

Configuração:

  • Standard_D8s_v3
    • IOPS em cache: 16.000
    • IOPS não armazenado em cache: 12.800
  • Disco do sistema operacional P30
    • IOPS: 5.000
    • Cache de host: Leitura/gravação
  • Dois discos de dados P30 × 2
    • IOPS: 5.000
    • Cache de host: Leitura/gravação

Diagrama mostrando um exemplo de cache de host.

O aplicativo usa uma máquina virtual Standard_D8s_v3 com armazenamento em cache habilitado. Ele faz uma solicitação de 16.000 IOPS. As solicitações são concluídas assim que são lidas ou gravadas no cache. Em seguida, as gravações são gravadas lentamente nos Discos anexados.

Limites combinados armazenados e não armazenados em cache

Os limites em cache de uma máquina virtual são separados dos limites não armazenados em cache. Isso significa que você pode habilitar o cache de host em discos anexados a uma VM e não habilitá-lo em outros discos. Essa configuração permite que suas máquinas virtuais obtenham uma E/S de armazenamento total do limite em cache além do limite não armazenado em cache.

Vamos executar um exemplo para ajudar você a entender como esses limites funcionam juntos. Continuamos com a configuração da máquina virtual Standard_D8s_v3 e dos discos premium anexados.

Configuração:

  • Standard_D8s_v3
    • IOPS em cache: 16.000
    • IOPS não armazenado em cache: 12.800
  • Disco do sistema operacional P30
    • IOPS: 5.000
    • Cache de host: Leitura/gravação
  • Dois discos de dados P30 × 2
    • IOPS: 5.000
    • Cache de host: Leitura/gravação
  • Dois discos de dados P30 × 2
    • IOPS: 5.000
    • Cache de host: Desabilitado

Diagrama mostrando um exemplo de cache de host com armazenamento remoto.

Nesse caso, o aplicativo em execução em uma máquina virtual Standard_D8s_v3 faz uma solicitação de 25.000 IOPS. A solicitação é dividida em 5.000 IOPS para cada um dos discos anexados. Três discos usam o cache de host e dois discos não usam o cache de host.

  • Como os três discos que usam o cache de host estão dentro dos limites em cache de 16.000, essas solicitações são concluídas com êxito. Nenhuma limitação de desempenho de armazenamento ocorre.
  • Como os dois discos que não usam o cache de host estão dentro dos limites não armazenados em cache de 12.800, essas solicitações também são concluídas com êxito. Não ocorre nenhuma limitação.