Compreender as características de desempenho do disco

Concluído

O desempenho do aplicativo geralmente depende da rapidez com que o aplicativo pode ler e gravar dados. Para melhorar o desempenho do aplicativo, você deve primeiro entender como o desempenho é medido. Em seguida, entenda as configurações e escolhas 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 altas para gerenciar todas as pequenas e aleatórias solicitações de entrada/saída (E/S) que devem ser processadas rapidamente para manter o site responsivo. Os discos com desempenho mais elevado têm valores de IOPS mais altos.
  • Taxa de transferência: a taxa de transferência é a quantidade de dados que seu aplicativo envia para os 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 a aplicação estiver a efetuar E/S com grandes blocos de dados, exige um débito elevado. Os discos com desempenho mais elevado têm maior débito.
  • Latência: a latência expressa o tempo que seu aplicativo leva para enviar uma solicitação ao disco e receber uma resposta. A latência coloca um limite para IOPS efetivas. Por exemplo, se o disco puder lidar com 5.000 IOPS, mas cada operação levar 10 ms para ser processada, seu aplicativo será limitado a 100 operações por segundo devido ao tempo de processamento. A latência é melhorada significativamente se você habilitar o cache de host ReadOnly.

IOPS vs. débito

Taxa de transferência e IOPS têm uma relação direta. Mudar um afeta diretamente o outro. Para obter um limite teórico de taxa de transferência, você pode usar a seguinte fórmula: IOPS × tamanho de E/S = taxa de transferência. É importante considerar esses dois valores ao planejar sua aplicação.

Para discos Ultra e discos gerenciados SSD Premium v2, ele funciona um pouco diferente, pois você pode ajustar independentemente o tamanho do disco, IOPS e taxa de transferência. Os ajustes de IOPS ou taxa de transferência para discos Ultra e discos gerenciados SSD Premium v2 podem ser feitos em tempo de execução, sem desanexar o disco da máquina virtual (VM).

IOPS de disco ultra

Os discos Ultra suportam limites de IOPS de 300 IOPS/GiB, até um máximo de 160.000 IOPS por disco. Para atingir as IOPS de destino para o disco, verifique se as IOPS de disco selecionadas são menores do que o limite de IOPS da VM.

O limite máximo atual de IOPS para uma única VM em tamanhos geralmente disponíveis é de 160.000. Ultra discos com maior IOPS podem ser usados como discos compartilhados para suportar várias VMs.

As IOPS mínimas garantidas por disco são 1 IOPS/GiB, com um mínimo geral de linha de base de 100 IOPS. Por exemplo, se você provisionou um disco ultra de 4 GiB, o IOPS mínimo para esse disco é 100, em vez de quatro.

Taxa de transferência de disco ultra

O limite de taxa de transferência de um único disco ultra é de 256 KiB/s para cada IOPS provisionada, até um máximo de 4000 MB/s por disco (onde MB/s = 10^6 Bytes por segundo). A taxa de transferência mínima garantida por disco é de 4 KiB/s para cada IOPS provisionada, com um mínimo geral de linha de base de 1 MB/s.

Premium SSD v2 IOPS

Todos os discos SSD Premium v2 têm um IOPS de base de 3000 que é gratuito. Após 6 GiB, o IOPS máximo de um disco pode ter aumentos a uma taxa de 500 por GiB, até 80.000 IOPS. Assim, 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 suas IOPS além de 3.000 aumenta o preço do seu disco.

Taxa de transferência SSD Premium v2

Todos os discos SSD Premium v2 têm uma taxa de transferência de linha de base de 125 MB/s que é gratuita. Após 6 GiB, a taxa de transferência máxima que pode ser definida aumenta em 0,25 MB/s por IOPS definida. Se um disco tiver 3.000 IOPS, a taxa de transferência máxima que ele pode definir é de 750 MB/s. Para aumentar a taxa de transferência desse disco além de 750 MB/s, seu 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 é 1.000. 1.200 MB/s é a taxa de transferência máxima suportada para discos com 5.000 IOPS ou mais. Aumentar a taxa de transferência para além de 125 MB/s aumenta o preço do disco.

Limite de E/S da máquina virtual

Agora que você sabe quais discos estão disponíveis no Azure, 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 as IOPS de disco.

Se você não dimensionar a VM corretamente para o desempenho de armazenamento que um aplicativo exige, a própria VM se tornará um afunilamento.

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 este exemplo.

Diagrama que representa o limite de saída de entrada da máquina virtual.

O cenário ilustrado no exemplo anterior é conhecido como limitação de E/S VM. Nesse cenário, o aplicativo está solicitando uma quantidade de taxas 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 pelo limite de E/S da VM usando as seguintes métricas:

  • Porcentagem de IOPS consumidas em cache da VM
  • Porcentagem de largura de banda armazenada em cache da VM consumida
  • Porcentagem de IOPS não armazenadas em cache da VM consumida
  • Porcentagem de largura de banda não armazenada em cache da VM consumida

Limite de E/S de disco

Você pode se deparar com outras situações em que a solução de armazenamento não atende às demandas do aplicativo. No entanto, o afunilamento pode ser causado se você selecionar a camada de desempenho incorreta para os discos.

Considere o mesmo exemplo em que o aplicativo requer 15.000 IOPS da VM e escolha a seguinte configuração:

  • D16s_v4 padrão com 25.600 IOPS
  • Disco do SO 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 é dividida em três solicitações diferentes:

  • 2.300 IOPS são solicitados a partir do disco do SO
  • 5.000 IOPS são solicitados de cada disco de dados

O total de IOPS que a VM retorna ao aplicativo é de 12.300 como uma soma de cada IOPS fornecida pelo sistema operacional e discos de dados.

Esse cenário é conhecido como limite de E/S de disco, quando o próprio disco não consegue atender às demandas do aplicativo.

Diagrama que mostra o limite de saída de entrada de disco.

Para diagnosticar o limite de E/S de disco, use as seguintes métricas:

  • Percentagem de IOPS do disco de dados consumida
  • Percentagem de largura de banda do disco de dados consumida
  • Percentagem de IOPS de disco do SO consumida
  • Percentagem de largura de banda de disco do SO consumida

Colocação em cache do disco

Um cache é um componente especializado que armazena dados, normalmente na memória, para que o aplicativo possa acessar os dados mais rapidamente. Os dados em um cache geralmente são dados que foram lidos anteriormente ou dados que resultaram 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 Ultra Disks e SSD Premium v2.

O cache usa armazenamento temporário especializado e, às vezes, caro, que tem um desempenho de leitura e gravação mais rápido em comparação com o armazenamento permanente. Como o armazenamento em cache geralmente é limitado, talvez seja necessário decidir quais operações de dados se beneficiam mais do cache. Mas mesmo quando o cache pode ser amplamente disponível, como no Azure, ainda é importante conhecer os padrões de carga de trabalho de cada disco antes de decidir qual tipo de cache usar.

A cache de leitura tenta acelerar a obtenção de dados. Em vez de ler a partir 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órias em que os dados que você está acessando estão espalhados pelo armazenamento, o cache é de pouco ou nenhum benefício e pode até reduzir o desempenho do disco.

A cache de escrita tenta acelerar a escrita de dados no armazenamento persistente. Quando você usa um cache de gravação, o aplicativo pode considerar os dados que devem ser salvos.

Na realidade, quando você usa o cache de gravação, os dados são enfileirados em um cache, esperando para serem gravados em um disco. Como pode imaginar, este mecanismo pode ser um possível ponto de falha, por exemplo, quando o sistema encerra antes de os dados em cache serem escritos. Alguns sistemas, como o SQL Server, gerenciam a tarefa de gravar dados armazenados em cache no próprio armazenamento em disco persistente.

Limites de VMs armazenados em cache e não armazenados em cache

Aprendemos como o cache pode melhorar o desempenho para ler ou gravar dados no disco, agora vamos ver como o cache afeta o desempenho da VM.

O desempenho da VM depende dos limites de IOPS e taxa de transferência impostos com base no tamanho da VM. Todas as VMs na camada 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 por IOPS e taxa de transferência habilitando o cache do host da VM.

A tabela a seguir lista exemplos que ilustram a diferença no desempenho da taxa de transferência e da largura de banda do disco armazenado e não armazenado em cache.

Nome do tamanho da VM Taxa de transferência máxima de armazenamento em cache e temporário: IOPS/MB/s (tamanho do cache em GiB) Taxa de transferência máxima de disco sem cache 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 do host pode ajudá-lo a evitar cenários de afunilamento 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 lidar com essa demanda, mas a Standard_D8s_v3 VM pode oferecer apenas 12.800 IOPS no estado sem cache.

Se você configurar o cache de host na VM Standard_D8s_v3, poderá obter 16.000 IOPS em cache, o que é mais do que o aplicativo exige.