Utilização de métricas da CPU

Esta página descreve as métricas de uso da CPU fornecidas pelo Cloud Spanner. Você pode ver essas métricas no Console do Google Cloud e no Console do Cloud Monitoring.

Uso da CPU e prioridade da tarefa

Quando o Cloud Spanner mede o uso da CPU, ele organiza as tarefas nas categorias a seguir:

Tarefas do usuário Tarefas do sistema
Alta prioridade Tarefas de alta prioridade do usuário Tarefas de alta prioridade do sistema

Tarefas que o aplicativo inicia e que o Cloud Spanner processa como alta prioridade.

Inclui a maioria das solicitações de leitura e confirmação. Também inclui partes do trabalho de gravações em lote, mas não de leituras em lote.

Tarefas que o Cloud Spanner inicia e processa como alta prioridade.

Inclui o preenchimento de um índice e a divisão de dados.

Baixa prioridade Tarefas de baixa prioridade do usuário Tarefas de baixa prioridade do sistema

Tarefas que o aplicativo inicia e que não precisam ser concluídas tão rápido quanto as tarefas de alta prioridade.

Inclui leituras e gravações emitidas a partir de jobs de fluxo de dados (incluindo Importar / Exportar).

Tarefas que o Cloud Spanner inicia e que não precisam ser concluídas tão rápido quanto as tarefas de alta prioridade.

Inclui compactação de banco de dados, validação de alteração de esquema e criação de backup.

Tarefas de alta prioridade forçam a interrupção imediata de tarefas de baixa prioridade. Se necessário, o Cloud Spanner interrompe todas as tarefas de baixa prioridade e permite que as de alta prioridade utilizem até 100% dos recursos disponíveis da CPU. É possível atrasar tarefas de sistema de baixa prioridade a curto prazo, mas, para um desempenho ideal, elas precisam ser executadas em algum momento. Portanto, é preciso provisionar a instância com nós suficientes para processar tarefas de alta e baixa prioridade.

Se não houver tarefas de alta prioridade, o Cloud Spanner usará até 100% dos recursos de CPU disponíveis para concluir as tarefas de baixa prioridade mais rapidamente. Os picos no uso em segundo plano não são um sinal de problema. Tarefas de baixa prioridade podem gerar tarefas de alta prioridade quase instantaneamente, inclusive tarefas do usuário.

Métricas disponíveis

O Cloud Spanner fornece as seguintes métricas de uso da CPU:

  • Média contínua de 24 horas: uma média contínua de uso total da CPU, como uma porcentagem dos recursos da CPU da instância, para cada banco de dados. Cada ponto de dados é uma média das últimas 24 horas.
  • Alta prioridade: o uso da CPU como uma porcentagem dos recursos da CPU da instância para tarefas de alta prioridade.
  • Total: o uso total da CPU como uma porcentagem dos recursos da CPU da instância.

    Para instâncias, é possível ver o uso total da CPU por banco de dados ou por prioridade de tarefa.

    Para bancos de dados, é possível ver o uso total da CPU por prioridade de tarefa.

É possível visualizar os gráficos dessas métricas no Console do Cloud ou no Console do Cloud Monitoring. Também é possível usar o console do Cloud Monitoring para criar alertas para alta utilização da CPU, conforme descrito abaixo.

A tabela a seguir especifica as nossas recomendações para o uso máximo da CPU para instâncias de região única e de várias regiões. Esses números garantem que sua instância tenha capacidade computacional suficiente para continuar a veicular o tráfego em caso de perda de uma zona inteira (para instâncias de região única) ou de uma região inteira (para instâncias de várias regiões).

Métrica Máximo para instâncias de região única Máximo por região para instâncias de várias regiões
Total de alta prioridade 65% 45%
Agregado suavizado de 24 horas 90% 90%

Para ajudar você a ficar abaixo dos valores máximos recomendados, crie alertas no Cloud Monitoring que rastreiem a utilização de CPU de alta prioridade e a utilização média da CPU por 24 horas.

O uso da CPU pode afetar as latências de solicitações. A sobrecarga de um servidor de back-end individual é um gatilho para latências de solicitação mais altas. Os aplicativos precisam executar comparações e monitoramento ativo para verificar se o Cloud Spanner atende aos requisitos de desempenho.

Assim, para aplicativos sensíveis ao desempenho, talvez seja necessário reduzir ainda mais o uso da CPU com as técnicas descritas na próxima seção.

Redução do uso da CPU

Esta seção explica como reduzir o uso da CPU de uma instância.

Em geral, recomendamos a adição de nós à instância como ponto de partida. Depois de adicionar nós, é possível investigar e lidar com as principais causas do alto uso da CPU.

Como adicionar nós

Se você ultrapassar os limites máximos recomendados de uso da CPU, adicione nós à instância para que ela possa continuar operando de maneira eficaz. Se quiser automatizar esse processo, crie um aplicativo que monitore o uso da CPU. Depois, adicione e remova os nós conforme necessário usando o método UpdateInstance.

Para determinar quantos nós são necessários, considere o pico de uso da CPU de alta prioridade, bem como a média ajustada de 24 horas. Sempre reserve nós suficientes para manter o uso da CPU abaixo do nível máximo recomendado. Como descrito anteriormente, talvez seja necessário alocar nós adicionais para aplicativos sensíveis ao desempenho (por exemplo, para acomodar picos de carga de trabalho).

Se não tiver nós suficientes, o Cloud Spanner organizará as tarefas por nível de prioridade. Tarefas de sistema de baixa prioridade, como compactação de banco de dados e validação de alteração de esquema, podem ser adiadas, dando lugar a tarefas do usuário. No entanto, essas tarefas são essenciais para a integridade da instância, e o Cloud Spanner não pode adiá-las indefinidamente. Se o Cloud Spanner não conseguir concluir as tarefas de baixa prioridade do sistema em uma determinada janela de tempo, entre várias horas a um dia, devido a recursos de computação insuficientes, ele poderá aumentar a prioridade dessas tarefas. Essa alteração afeta o desempenho das tarefas do usuário.

Como otimizar o desempenho da consulta

Em alguns casos, a instância pode ter alto uso da CPU devido a consultas SQL que não são tão eficientes quanto poderiam ser. Use as estatísticas de consulta do banco de dados para identificar consultas que resultam em alto uso da CPU. Depois, com base nos planos de consulta, é possível otimizar as consultas para reduzir o uso da CPU.

A seguir