Interpretar os resultados de desempenho no AlloyDB Omni em uma VM

Selecione uma versão da documentação:

Neste documento, descrevemos como interpretar os resultados de desempenho no AlloyDB Omni em uma VM. Neste documento, presumimos que você já conhece o PostgreSQL.

Ao representar o throughput ao longo do tempo conforme outra variável é modificada, normalmente você vê o throughput aumentar até atingir um ponto de esgotamento de recursos.

A figura a seguir mostra um gráfico típico de escalonamento de capacidade de processamento. À medida que o número de clientes aumenta, a carga de trabalho e a capacidade de processamento aumentam até que todos os recursos sejam esgotados.

Gráfico de escalonamento de capacidade mostrando a capacidade para o número de clientes. À medida que o número de clientes aumenta, a taxa de transferência aumenta até que todos os recursos sejam esgotados.
Figura 1:um gráfico típico de escalonamento de taxa de transferência. À medida que o número de clientes aumenta, a carga de trabalho e a capacidade aumentam até que todos os recursos sejam esgotados.

O ideal é que, ao dobrar a carga no sistema, a capacidade também dobre. Na prática, haverá disputa por recursos, o que vai gerar aumentos menores na capacidade. Em algum momento, o esgotamento ou a contenção de recursos fará com que a taxa de transferência se estabilize ou até diminua. Se você estiver otimizando para capacidade, esse é um ponto importante a ser identificado, já que direciona seus esforços para onde ajustar o aplicativo ou o sistema de banco de dados para melhorar a capacidade.

Confira alguns motivos típicos para a estabilização ou queda da taxa de transferência:

  • Esgotamento de recursos de CPU no servidor de banco de dados
  • Esgotamento dos recursos da CPU no cliente para que o servidor de banco de dados não receba mais trabalho
  • Disputa de bloqueio de banco de dados
  • Tempo de espera de E/S quando os dados excedem o tamanho do pool de buffers do Postgres
  • Tempo de espera de E/S devido à utilização do mecanismo de armazenamento
  • Gargalos na largura de banda da rede ao retornar dados para o cliente

A latência e a capacidade de processamento são inversamente proporcionais. À medida que a latência aumenta, a capacidade diminui. Intuitivamente, isso faz sentido. À medida que um gargalo começa a se materializar, as operações levam mais tempo, e o sistema realiza menos operações por segundo.

Gráfico de escalonamento de latência mostrando que a latência permanece constante até que ocorra fricção devido à disputa de recursos.
Figura 2:um gráfico típico de escalonamento de latência. A latência permanece constante até que ocorra fricção devido à disputa de recursos.

O gráfico de escalonamento de latência mostra como a latência muda à medida que a carga em um sistema aumenta. A latência permanece relativamente constante até que ocorra fricção devido à disputa de recursos. O ponto de inflexão dessa curva geralmente corresponde ao achatamento da curva de taxa de transferência no gráfico de escalonamento da taxa de transferência.

Outra maneira útil de avaliar a latência é como um histograma. Nessa representação, agrupamos as latências em intervalos e contamos quantas solicitações se enquadram em cada intervalo.

Gráfico de escalonamento de latência mostrando que a latência permanece constante até que ocorra fricção devido à disputa de recursos.
Figura 3:um histograma de latência típico. A latência permanece constante até que ocorra fricção devido à disputa de recursos.*

Esse histograma de latência mostra que a maioria das solicitações tem menos de 100 milissegundos, e as latências são maiores que 100 milissegundos. Entender a causa das solicitações com latências de cauda mais longas pode ajudar a explicar as variações de performance do aplicativo. As causas do longo período de latências aumentadas correspondem às latências aumentadas vistas no gráfico típico de escalonamento de latência e ao achatamento do gráfico de capacidade de processamento.

O histograma de latência é mais útil quando há várias modalidades em um aplicativo. Uma modalidade é um conjunto normal de condições operacionais. Por exemplo, na maioria das vezes, o aplicativo acessa páginas que estão no cache de buffer. Na maioria das vezes, o aplicativo atualiza linhas existentes, mas pode haver vários modos. Às vezes, o aplicativo está recuperando páginas do armazenamento, inserindo novas linhas ou enfrentando disputa de bloqueio.

Quando um aplicativo encontra esses diferentes modos de operação ao longo do tempo, o histograma de latência mostra essas várias modalidades.

Gráfico de escalonamento de latência mostrando que a latência permanece constante até que ocorra fricção devido à disputa de recursos.
Figura 4:um histograma típico de latência bimodal. A latência permanece constante até que ocorra fricção devido à disputa de recursos.

Esta figura mostra um histograma bimodal típico em que a maioria das solicitações é atendida em menos de 100 milissegundos, mas há outro cluster de solicitações que levam de 401 a 500 milissegundos. Entender a causa dessa segunda modalidade pode ajudar a melhorar a performance do seu aplicativo. Também pode haver mais de duas modalidades.

A segunda modalidade pode ser devido a operações normais de banco de dados, infraestrutura e topologia heterogêneas ou comportamento do aplicativo. Confira alguns exemplos:

  • A maioria dos acessos a dados é do pool de buffers do PostgreSQL, mas alguns vêm do armazenamento.
  • Diferenças nas latências de rede para alguns clientes no servidor de banco de dados
  • Lógica de aplicativo que realiza operações diferentes dependendo da entrada ou do horário do dia
  • Contenção de bloqueio esporádica
  • Picos na atividade do cliente