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 que estão sendo executados 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the required API.
- Para abrir o Cloud Shell, na barra de ferramentas do Console do Google Cloud, clique
em Ativar o Cloud Shell:
Após alguns instantes, uma sessão do Cloud Shell é aberta no Console do Google Cloud:
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:
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 filter_list 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 é oruntime.main
do Go. - O frame
main
laranja é a rotinamain
do programa de amostra. - O frame
busyloop
laranja é uma rotina chamada a partir domain
da amostra. - O frame
main.load
laranja é uma rotina chamada a partir domain
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
:
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:
- Visão geral do Cloud Profiler
- Conceitos da criação de perfil
- Leia nossos recursos sobre o DevOps e conheça o programa de pesquisa DORA.
- Como criar perfis de aplicativos Go
- Como criar perfis de aplicativos Java
- Como criar perfis de aplicativos Node.js
- Como criar perfis de aplicativos Python
- Como criar perfis de aplicativos em execução fora do Google Cloud