Sie sind auf Seite 1von 46

Tcnicas de Profiling

Equipe:
Rosangela
Melo
Diego
Liberalquino
Rosiberto

Roteiro
O que Profiling?
Como e onde utilizar?
Tcnicas de Profiling
Program Counter Sampling
Instrumentao Binria
Simulao
Comparao entre as Tcnicas
Tracing
Ferramentas de Profiler
Prtica
Referncias

O que profiling
Profiling uma tcnica de anlise
dinmica
Analisa um programa durante a sua execuo;
Considera apenas um estado de todo o espao
de estados possveis de um programa a cada
intervalo de tempo;
Realiza anlise das partes de um processo
durante a sua execuo
Tempo de CPU;
Memria e Cache;
Threads, Monitores e Mutexes.

O que profiling
O que o profiler analisa
Chamadas de mtodos;
Estruturas de Branch
Loops (while, for, etc);
Estruturas de deciso (if-else);

Chamadas ao sistema;
Acesso a memria
Pilha;
Heap.

Profiling
Uma ferramenta de PROFILE permite a
identificao de trechos que so bastante
solicitados nos cdigos (BEZERRA NETO, 2009);
Fornece um viso global do tempo de execuo
da Aplicao (MACIEL, 2011);
necessrio o conhecimento no apenas do fluxo
do programa, mas tambm dos trechos que
demandam mais tempo.

O que profiling
O profiler produz estatsticas sobre o
programa que podem ser analisadas em
tempo real.

Como e onde utilizar?


Normalmente utilizados para:
Otimizao no cdigo;
Encontrar mixes de instrues utilizadas;
Estatsticas de desvios e de uso de registradores;
Medir quanto tempo, ou frao do tempo total, o
sistema passa em um certo estado ou sub-rotina.
Comumente aceitam:
Um programa executvel como entrada;
Decodificam e analisam as instrues do executvel.

Como e onde utilizar?


Adicionam cdigo (probes) aplicao a ser
monitorada. Alguns adicionam o cdigo
(probes) durante a compilao ou obtm
amostras do contador de programa;
Identificao e Ajustes

Informaes
so
utilizadas
por
programadores para identificar qual poro
do programa consome uma grande frao do
tempo total de execuo;
Os programadores podem ajustar seus
cdigos
para
conseguir
uma
melhor

Tcnicas de Profiling

Program-counter
sampling
Instrumentao
binria
Simulao

Program-counter sampling
Sampling uma tcnica de estatstica qual um
subconjunto de elementos da populao
examinado atravs de uma seleo randmica;
Como o sampling um processo estatstico em
qual as caractersticas de uma populao so
inferidas a partir de uma seleo randmica,
ento podemos est sujeito a erros aleatrios;
As amostras da execuo dos programas so
coletadas em um fixo intervalo atravs de
peridicas interrupes. O intervalo de confiana
pode ser calculado.

Program-counter
sampling

Figura 1. Program-couter sampling funciona


(COSMOS,2009)

Program-counter sampling
Exemplo:
Suponha que usando uma ferramenta de
amostragem que interrompe a execuo do
programa a cada Tc = 10ms. Incluindo o tempo
requerido para a rotina de interrupo; o
programa executa em um total de 8s. No total
de n=800 (8000/10) amostras, apenas 12 vezes
a sub-rotinas X ocorreu no momento das
interrupes.
Qual a frao de tempo total o programa gasta
executando a sub-rotina X?

Program-counter sampling
Calcular o intervalo de confiana com o nvel
de confiana de 99%.

Podemos estimar com 99% de confiana que


em 8s da execuo do
programa, o tempo
gasto na execuo da sub-rotina X est entre
31 e 209 milissegundos.

Consideraes

Necessrio um nmero

grande

de

amostras;

Para obter mais amostras por evento:


longo perodo do tempo ou aumentar a
taxa de amostra;

Em algumas situaes pode-se deixar o


programa executando em um longo perodo,
mas em outros casos o programa tem uma
durao fixa;
Aumentar a taxa da amostra, aumenta Nr.
de
vezes
que
a
rotina
de
interrupo(assncronas)

executada,

Instrumentao binria
Recebe programa como entrada
Cdigo Fonte;
Cdigo objeto;
Informaes de linkagem.

Sada
Programa executvel instrumentado.

Instrumentao binria

Instrumentao binria
Anlise da Instrumentao
Contagem de blocos;
Grafo de chamadas.

Contagem de blocos
Usa como unidade bsica um bloco de
cdigo

Um trecho do cdigo executvel com um nico ponto de


entrada e nico ponto de sada;

Recebe como entrada um executvel e


produz:
Um executvel instrumentado com uma rotina de
anlise no incio e fim de cada bloco;
Uma tabela com endereos de cada bloco;
Uma tabela com contagens para cada endereo.

Grafo de Chamadas
Permite coletar estatsticas mais detalhadas
do fluxo de um programa
Quantos desvios foram realizados de um bloco de
origem para n destinos?
Quantas chamadas de n blocos de origem foram feitas
para um bloco destino?

Constri um grafo de controle de fluxo para o


executvel instrumentado
Identifica caminhos possveis entre blocos;
Insere trechos de instrumentao para cada desvio
encontrado no cdigo binrio;

Grafo de Chamadas

Grafo de Chamadas
Dificuldades

Saltos indiretos: Excees, longjmp();


Condition codes;
Mistura de cdigo e dados;
Cdigo Independente de Posio.

Simulao
Implementa uma mquina virtual que
simula a arquitetura de um processador;
Coleta dados da instrumentao de acordo
com as instrues executadas e
registradores preenchidos.

Comparao entre as Tcnicas

PROGRAMCOUNTER
SAMPLING

INSTRUMENTA
O BINRIA

SIMULAO

Sada

Estrutura estatstica

Contagem exata

Contagem exata

Overhead

Rotina de servio de
interrupo

Instrues extra em Traduo e


cada bloco
instrumentao de
cada instruo

Perturba
o

Aleatoriamente
Distribuda

alta

Alta

Repetitibili
dade

Dentro da varincia
estatstica

perfeita

perfeita

Tracing
Como o profiler coleta dados?
Registra execuo de blocos de cdigo;
Verifica instrues de load e store executadas no bloco
executado;
Verifica segmentos de dados dentro da pilha de
execuo;
Mantm registro dos dados modificados.

Ferramentas Profiler Mdulos

Memria
Processador
Thread
Sistema

Ferramentas Profiler

VTune Intel;
CodeAnalyst
AMD;
AQtime;
ProDelphi;
YourKit Java;

Profiler;
GpProfile;
SamplingProfile
r;
Valgrind;
VisualVM;
Gprof.

VTune Intel
Ferramenta de anlise estatstica;
Recolhe amostras em intervalos regulares
de tempo, determinando qual funo
consome mais recursos da CPU (baseado
no tempo);
Determinando qual funo causa a
utilizao mais ineficiente do processador
(baseado em eventos);
Mede desempenho sem instrumentao.

VTune Intel

VTune Intel

GProf
Escrita por Jay Fenlason, permite a anlise
da performance do algoritmo e exibe
esses resultados na forma de grafo;
A anlise realizada pelo GProf permite
conhecer:
Quantidade de mtodos existentes no
cdigo;
Nmero de chamadas de cada mtodo
ou funo;
A porcentagem do tempo gasto para

GProf Passos
Compilar o programa acrescentando a flag
de compilao, atravs do comando:
gcc -pg codigo.c -o nome-exec
Aps compilar deve-se executar o
programa usando a linha de comando:
Linux ./nome-exec (args);
Windows nome-exec.
gerado um arquivo com nome default
gmon.out que interpretado pelo
programa de profile.

GProf Passos
Para visualizar a anlise gerada pelo GProf
pode-se usar o comando:
Linux gprof ./nome-exec (args);
Windows gprof pq nome-exec.
Automaticamente o GProf ir interpretar o
arquivo gmon.out juntamente com o
executvel do programa e ir imprimir na
tela os resultados.

GProf

%time percentual de tempo gasto;


Cumulative seconds tempo gasto pela funo mais tempos das funes
acima da tabela;
Self seconds tempo gasto da funo;
Calls Nr. De chamadas da funo;
Self ms/ call tempo milisec para chamar a funo;
Total ms/call tempo de chamada da funo e descendentes em milisec;
Name nome da funo.

GProf
Para obter outras estatsticas devemos
compilar o programa utilizando:
gcc arquivo.c -o arquivo.exe -fprofile-arcs
-ftest-coverage
E para exibir...

gcov arquivo.c (estatstica


1
geral)
gcov -fb arquivo.c (outras
2
estatsticas)

VisualVM
Ferramenta visual que integra
ferramentas da sute JDK. Inclui:

vrias

Monitoramento de CPU, memria e Threads;


Profiling hbrido

Simulao;
Sampling;
Block counting em tempo real;
Call graph para snapshots de execuo.

VisualVM

VisualVM

Profiling X Avaliao de
Desempenho
Os profilers auxiliam na avaliao de
desempenho trazendo a identificao de
pontos a serem melhorado nos programas
bem como a sugesto de otimizao dos
programas. Deixando-os com a execuo
mais rpida e em alguns casos com
menor tamanho (COSMOS, 2009).

Profiling Medio
possvel utilizar um profiler para medir:
A quantidade de vezes que determinado
mtodo chamado;
Quantas vezes um mtodo A chama um
mtodo B;
Qual o tempo gasto com a chamada de
cada mtodo;
Qual a memria alocada por um
processo/thread.

Prtica VisualVM
Utilizar o VisualVM para analisar o
comportamento de algoritmos de ordenao
implementados em Java.
Utilizar abordagens:
Instrumentao binria;
Program Counter Sampling.

Exerccio Problema 1
No grande templo de Brahma em Benares, numa bandeja de
metal sob a cpula que marca o centro do mundo, trs
agulhas de diamante servem de pilar a sessenta e quatro
discos de ouro puro.
Incansavelmente, os sacerdotes transferem os discos, um de
cada vez, de agulha para agulha, obedecendo sempre lei
imutvel de Brahma:
Nenhum disco se poder sobrepor a um menor
No incio do mundo todos os sessenta e quatro discos de ouro,
foram dispostos na primeira das trs agulhas, constituindo a
Torre de Brahma. No momento em que o menor dos discos for
colocado de tal modo que se forme uma vez mais a Torre de
Brahma numa agulha diferente da inicial, tanto a torre como o
templo sero transformados em p e o ribombar de um trovo
assinalar o fim do mundo.

Exerccio Problema 1
Observao:
Uma soluo j esta implementada, mas foi identificado que
tem um baixo desempenho.

Pede-se:
Reescrever o programa que calcula o movimento de n=27
discos de acordo com as regras estabelecidas. Em seguida,
analisar as duas solues com a ferramenta de profile
VisualVM e discorrer sobre os ganhos percebidos.

Exerccio Problema 2
Um homem tem um par de coelhos em um ambiente
inteiramente fechado. Desejamos saber quantos pares de
coelhos podem ser gerados deste par em 52 meses (4 anos),
se de um modo natural a cada ms ocorre a produo de um
par e um par comea a produzir coelhos quando completa
dois meses de vida.
Especificaes:
1. No primeiro ms nasce somente um casal;
2. Casais amadurecem sexualmente aps o segundo ms de
vida;
3. No h problemas genticos no cruzamento consanguneo;
4. Todos os meses, cada casal d luz a um novo casal;
5. Os coelhos nunca morrem;
Observao: Uma soluo j esta implementada, mas foi

Exerccio Problema 2
Pede-se:
Reescrever o programa que calcula a quantidade de pares de
coelho que podem ser gerados em 52 meses (4 anos) de
acordo com as regras estabelecidas. Em seguida, analisar as
duas solues com a ferramenta de profile VisualVM e
discorrer sobre os ganhos percebidos.

Referncias
CHAVES, L. Dicas para facilitar a depurao de programas. instituto de computao,
Universidade estadual de campinas, 2010.
DURES, Gilvan M. SOARES, Andr C. B. GIOZZA, William F. Otimizando o Desempenho do
SimRWA 2.0 usandoa Tcnica de Profiler para Identificao de Gargalos. 2008.
GNU Gprof. Implementation of Profiling. Disponvel em: <
http://sourceware.org/binutils/docs/gprof/Sampling-Error.html>. Acesso em: 05 out. 2012.
Intel VTune Amplifier XE 2011. Disponvel em: <
http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/>. Acesso em: 17 out. 2012.
JAIN, Raj. Art of Computer Systems Performance analysis Techniques For Experimental
Design Measurements Simulation And Modeling. John Wiley & Sons, Inc. ISBN:
0471503363,1991.
MACIEL, P. R. Material da disciplina avaliao de Desempenho, 2011.
NETO, Heleno Pontes Bezerra. USO DA FERRAMENTA DE PROFILE GPROF. 2009.
PORKOLAB, Zoltan. MIHALICZA, Jozsef. PATAKI, Norbert. SIPOS, Adam. Analysis of Proling
Techniques for C++ Template Metaprograms. 2010. Disponvel em: <
http://aszt.inf.elte.hu/~gsd/s/cikkek/profiling/profile.pdf>. Acesso em: 16. out. 2012.

Das könnte Ihnen auch gefallen