Avaliar o desempenho do app

Este documento mostra como configurar e usar o Cloud Profiler. Você usa o Cloud Shell para fazer o download de um programa Go de amostra, executá-lo com a criação de perfil ativada e, em seguida, usar a interface do Profiler para analisar os dados coletados.

Se você planeja criar perfis de aplicativos em execução fora do Google Cloud, será necessário realizar algumas etapas de configuração que não são discutidas neste documento. Para saber mais sobre essas etapas, consulte Como criar perfis de aplicativos em execução fora do Google Cloud.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Enable the required API.

    Enable the API

  5. Para abrir o Cloud Shell, na barra de ferramentas do Console do Google Cloud, clique em Ativar o Cloud Shell:

    Ative o Cloud Shell.

    Após alguns instantes, uma sessão do Cloud Shell é aberta no Console do Google Cloud:

    Sessão do Cloud Shell.

Crie o perfil de um programa

O programa de amostra, main.go, está no repositório golang-samples no GitHub. Para fazer isso, no Cloud Shell, execute o seguinte comando para extrair o pacote de amostras Go:

git clone https://github.com/GoogleCloudPlatform/golang-samples.git

A recuperação do pacote leva algum tempo para ser concluída.

Crie o perfil do código

No Cloud Shell, acesse o diretório do código de amostra do Profiler no pacote recuperado:

cd golang-samples/profiler/profiler_quickstart

O programa main.go cria uma carga de trabalho com uso intensivo da CPU para fornecer dados ao criador de perfil. No Cloud Shell, execute o seguinte comando para iniciar o programa e deixá-lo em execução:

 go run main.go

Esse programa foi projetado para carregar a CPU enquanto ele é executado. Ele é configurado para usar o Profiler, que coleta dados de criação de perfil do programa durante a execução dele e os salva periodicamente.

Alguns segundos após iniciar o programa, você verá a mensagem profiler has started. Depois de quase um minuto, mais duas mensagens serão exibidas:

 successfully created profile CPU
 start uploading profile

Elas indicam que um perfil foi criado e enviado ao projeto do Cloud Storage. O programa continuará exibindo as últimas duas mensagens a cada minuto enquanto estiver sendo executado.

Se você receber uma mensagem de erro de permissão negada depois de iniciar o serviço, consulte Erros com a configuração do seu projeto do Google Cloud.

Interface do Profiler

Alguns instantes depois de iniciar o aplicativo, o Profiler exibe os dados iniciais do perfil. A interface tem vários controles e um gráfico de chama para você explorar os dados de criação de perfil:

Interface do Profiler com o exemplo de código.

Além dos controles de tempo, há opções que permitem escolher o conjunto de dados de perfil a serem usados. Ao criar um perfil de vários aplicativos, use o Serviço para selecionar a origem dos dados do perfil. Com o Tipo de perfil, é possível escolher o tipo de dados de perfil que será exibido. As opções Nome da zona e Versão permitem restringir a exibição aos dados das zonas do Compute Engine ou às versões do aplicativo. O Peso permite que você selecione perfis capturados durante os períodos de pico de consumo de recursos.

Para refinar como o gráfico em degradê exibe os perfis que você selecionou para analisar, adicione filtros. Na captura de tela anterior, a barra de filtro mostra um filtro. Essa opção de filtro é Metric, e o valor do filtro é CPU time.

Como explorar os dados

O gráfico de chama exibe as pilhas de chamadas do programa. Ele representa cada função com um quadro. A largura do quadro representa a proporção de consumo de recursos por essa função. O primeiro quadro representa o programa inteiro. Ele sempre mostra todo o consumo de recursos. Esse frame também lista quantos perfis têm a média calculada no gráfico.

O programa de amostra não tem um conjunto complexo de pilhas de chamadas. Na imagem acima, você vê cinco frames:

  • O frame cinza representa tudo que é executável, responsável por todos os recursos consumidos.
  • O frame main verde é o runtime.main do Go.
  • O frame main laranja é a rotina main do programa de amostra.
  • O frame busyloop laranja é uma rotina chamada a partir do main da amostra.
  • O frame main.load laranja é uma rotina chamada a partir do main da amostra.

Com o seletor, você filtra funções que correspondem a algum nome e realiza outras tarefas. Por exemplo, se houver uma biblioteca padrão de funções de utilitário, será possível removê-las do gráfico. Remova também pilhas de chamadas originadas de um determinado método ou simplifique o gráfico de outras maneiras. O aplicativo main.go é simples, então não há muito o que filtrar.

Mesmo para um aplicativo simples, os filtros permitem ocultar quadros menos importantes, para que você possa visualizar melhor os quadros que mais lhe interessam. Por exemplo, na captura de tela da criação de perfil do código de amostra, o frame cinza é um pouco maior que o primeiro frame main abaixo dele. Por quê? Será que está acontecendo algo que não é aparente de imediato porque a pilha de chamadas main consome uma porcentagem muito grande de recursos? Para ver o que está acontecendo fora da rotina main do aplicativo, adicione um filtro que oculte a pilha de chamadas da rotina main. Somente 0,227% do consumo de recursos ocorre fora de main:

Como ocultar pilhas no programa de exemplo.

Para mais informações sobre os filtros e outras maneiras de explorar os dados de criação de perfil, consulte Selecionar os perfis para analisar.

A seguir

Para informações gerais sobre a criação de perfil, consulte os seguintes documentos:

Saiba mais sobre como executar o agente do Cloud Profiler em: