Partilhar via


Latência no Armazenamento de blobs

Latência, às vezes referenciada como tempo de resposta, é a quantidade de tempo que um aplicativo deve aguardar até que uma solicitação seja concluída. A latência pode afetar diretamente o desempenho de um aplicativo. A baixa latência geralmente é importante para cenários com humanos no loop, como a realização de transações com cartão de crédito ou o carregamento de páginas da Web. Os sistemas que precisam processar eventos de entrada em altas taxas, como log de telemetria ou eventos IoT, também exigem baixa latência. Este artigo descreve como entender e medir a latência para operações em blobs de bloco e como projetar seus aplicativos para baixa latência.

O Armazenamento do Azure oferece duas opções de desempenho diferentes para blobs de bloco: premium e standard. Os blobs de bloco premium oferecem latência significativamente menor e mais consistente do que os blobs de bloco padrão por meio de discos SSD de alto desempenho. Para obter mais informações, consulte Contas de armazenamento de blob de bloco premium.

Sobre a latência do Armazenamento do Azure

A latência do Armazenamento do Azure está relacionada às taxas de solicitação para operações do Armazenamento do Azure. As taxas de solicitação também são conhecidas como operações de entrada/saída por segundo (IOPS).

Para calcular a taxa de solicitação, primeiro determine o período de tempo que cada solicitação leva para ser concluída e, em seguida, calcule quantas solicitações podem ser processadas por segundo. Por exemplo, suponha que uma solicitação leva 50 milissegundos (ms) para ser concluída. Um aplicativo usando um thread com uma excelente operação de leitura ou gravação deve atingir 20 IOPS (1 segundo ou 1000 ms / 50 ms por solicitação). Teoricamente, se a contagem de threads for dobrada para dois, o aplicativo deve ser capaz de atingir 40 IOPS. Se as operações de leitura ou gravação assíncronas pendentes para cada thread forem dobradas para duas, o aplicativo deverá ser capaz de atingir 80 IOPS.

Na prática, as taxas de solicitação nem sempre são dimensionadas de forma tão linear, devido à sobrecarga no cliente de agendamento de tarefas, troca de contexto e assim por diante. No lado do serviço, pode haver variabilidade na latência devido à pressão no sistema de Armazenamento do Azure, diferenças na mídia de armazenamento usada, ruído de outras cargas de trabalho, tarefas de manutenção e outros fatores. Por fim, a conexão de rede entre o cliente e o servidor pode afetar a latência do Armazenamento do Azure devido a congestionamento, redirecionamento ou outras interrupções.

A largura de banda do Armazenamento do Azure, também conhecida como taxa de transferência, está relacionada à taxa de solicitação e pode ser calculada multiplicando a taxa de solicitação (IOPS) pelo tamanho da solicitação. Por exemplo, supondo 160 solicitações por segundo, cada 256 KiB de dados resulta em taxa de transferência de 40.960 KiB por segundo ou 40 MiB por segundo.

Métricas de latência para blobs de bloco

O Armazenamento do Azure fornece duas métricas de latência para blobs de bloco. Estas métricas podem ser visualizadas no portal do Azure:

  • A latência de ponta a ponta (E2E) mede o intervalo desde quando o Armazenamento do Azure recebe o primeiro pacote da solicitação até o Armazenamento do Azure receber uma confirmação de cliente no último pacote da resposta.

  • A latência do servidor mede o intervalo desde quando o Armazenamento do Azure recebe o último pacote da solicitação até que o primeiro pacote da resposta seja retornado do Armazenamento do Azure.

A imagem a seguir mostra a latência média de sucesso E2E e a latência média do servidor de sucesso para uma carga de trabalho de exemplo que chama a Get Blob operação:

Captura de tela mostrando métricas de latência para a operação Get Blob

Em condições normais, há pouca lacuna entre a latência de ponta a ponta e a latência do servidor, que é o que a imagem mostra para a carga de trabalho de amostra.

Se você revisar suas métricas de latência de ponta a ponta e do servidor e descobrir que a latência de ponta a ponta é significativamente maior do que a latência do servidor, investigue e aborde a origem da latência adicional.

Se a latência de ponta a ponta e do servidor forem semelhantes, mas você precisar de latência mais baixa, considere migrar para o armazenamento de blob de bloco premium.

Fatores que influenciam a latência

O principal fator que influencia a latência é o tamanho da operação. Demora mais tempo a concluir operações maiores, devido à quantidade de dados transferidos através da rede e processados pelo Armazenamento do Azure.

O diagrama a seguir mostra o tempo total para operações de vários tamanhos. Para pequenas quantidades de dados, o intervalo de latência é predominantemente gasto lidando com a solicitação, em vez de transferir dados. O intervalo de latência aumenta apenas ligeiramente à medida que o tamanho da operação aumenta (marcado 1 no diagrama abaixo). À medida que o tamanho da operação aumenta, mais tempo é gasto na transferência de dados, de modo que o intervalo de latência total é dividido entre o tratamento de solicitações e a transferência de dados (marcado 2 no diagrama abaixo). Com tamanhos de operação maiores, o intervalo de latência é quase exclusivamente gasto na transferência de dados e o tratamento da solicitação é em grande parte insignificante (marcado 3 no diagrama abaixo).

Captura de tela mostrando o tempo total de operação por tamanho da operação

Os fatores de configuração do cliente, como simultaneidade e threading, também afetam a latência. A taxa de transferência geral depende de quantas solicitações de armazenamento estão em voo em um determinado ponto no tempo e de como seu aplicativo lida com threading. Os recursos do cliente, incluindo CPU, memória, armazenamento local e interfaces de rede, também podem afetar a latência.

O processamento de solicitações de Armazenamento do Azure requer recursos de CPU e memória do cliente. Se o cliente estiver sob pressão devido a uma máquina virtual com pouca potência ou algum processo descontrolado no sistema, há menos recursos disponíveis para processar solicitações de Armazenamento do Azure. Qualquer contenção ou falta de recursos do cliente resultará em um aumento na latência de ponta a ponta sem um aumento na latência do servidor, aumentando a lacuna entre as duas métricas.

Igualmente importante é a interface de rede e o pipe de rede entre o cliente e o Armazenamento do Azure. A distância física por si só pode ser um fator significativo, por exemplo, se uma VM cliente estiver em uma região diferente do Azure ou local. Outros fatores, como saltos de rede, roteamento do ISP e estado da Internet, podem influenciar a latência geral do armazenamento.

Para avaliar a latência, primeiro estabeleça métricas de linha de base para seu cenário. As métricas de linha de base fornecem a latência esperada de ponta a ponta e do servidor no contexto do ambiente do aplicativo, dependendo do perfil da carga de trabalho, das definições de configuração do aplicativo, dos recursos do cliente, do pipe de rede e de outros fatores. Quando você tem métricas de linha de base, você pode identificar mais facilmente condições anormais versus normais. As métricas da linha de base também permitem observar os efeitos dos parâmetros alterados, como a configuração do aplicativo ou os tamanhos da VM.

Próximos passos