2. 2
Metodologia de Análise de Desempenho
Uma proposta de abordagem para Otimização
Config. Sistema, BIOS,
Sistema Operacional,
I/O de Rede,
I/O de Disco,
Otimização do BD,
etc.
Projeto da Aplicação,
Otimização de Algoritmo,
Ajuste de Drivers,
Paralelismo
Cache,
Memória
Instruções SIMD,
Outros
Sistema
Aplicação
ProcessadorVTune™ Amplifier
XE pode ajudar
aqui!
A abordagem utilizada é
Top-Down
É necessário entender as
características da
aplicação e do sistema
¤ Utilização de ferramentas
adequadas em cada nível
3. Intel® VTune™ Amplifier XE
Performance Profiler
3
Gastando Tempo? Desperdiçando Tempo? Esperando demais?
Otimização de funções que
rodam mais tempo
Análise de call stacks
Análise de tempo no código-
fonte
Identificar cache misses,
branch mis-predictions e
outras ineficiências
Otimizar banda de memória
Analisar locks pelo
tempo de espera
Sinalização Vermelho/Verde
para uso de CPU
durante a espera
Windows & Linux
Baixo overhead
Sem necessidade de recompilação especial Claire Cates
Principal Developer, SAS Institute Inc.
“We improved the performance of the latest run 3
fold. We wouldn't have found the problem without
something like Intel® VTune™ Amplifier XE.”
Profiling Avançado para Desempenho Multicore com Escalabilidade
Onde minha aplicação está…
4. Perfis de Desempenho
Rápidos e Precisos
¤ Hotspots (Statistical call tree)
¤ Call counts (Estatístico)
¤ Coleta de Eventos de HW
Thread Profiling
¤ Visualização de interações
entre threads na timeline
¤ Balanceamento de cargas
Configuração Rápida
¤ Perfis de desempenho pré-definidos
¤ Uso de build normal de produção
4
Intel® VTune™ Amplifier XE
Otimizando Aplicações para Desempenho Multicore com Escalabilidade
5. Respostas com Agilidade
¤ Filtro de dados irrelevantes
¤ Visualização de resultados
no código fonte/assembly
Compatibilidade
¤ Microsoft, GCC,
compiladores Intel
¤ C/C++, Fortran, Assembly,
.NET, Java
¤ Últimos processadores Intel®
e compatíveis1
Windows or Linux
¤ Integraçãop com Visual Studio (Windows)
¤ GUI Standalone e linha de comando
¤ 32 e 64-bits
5
Intel® VTune™ Amplifier XE
Otimizando Aplicações para Desempenho Multicore com Escalabilidade
1 IA32 and Intel® 64 architectures.
Many features work with compatible processors.
Event based sampling requires a genuine Intel® Processor.
16. Duas formas de Coletar Dados
Intel® VTune™ Amplifier XE
16
Software Collector
Hotspots, Concurrency, Locks & Waits
Hardware Collector
Lightweight Hotspots, Advanced Analysis
Utiliza interrupções do SO Utiliza a Performance Monitoring Unit
(PMU) do processador
Coleta de uma única process tree Coleta de todo Sistema ou de uma única
process tree
~10ms de resolução (default) ~1ms de resolução (default)
(granularidade menor coleta funções menores)
Coleta dados utilizando processadores
Intel® e compatíveis
Requer processador Intel® para a coleta
Call stacks mostram sequências de
chamadas
Novo: Coleta call stacks (opcional)
Funciona em ambientes virtuais Funciona em ambientes virtuais
suportados pela VM (ex: vSphere* 5.1)
Não requer driver específico Requer driver
Sem necessidade de recompilação especial - C, C++, C#, Fortran, Java, Assembly
17. 17
Um extenso conjunto de dados sobre Desempenho
Intel® VTune™ Amplifier XE
Software Collector
Qualquer processador IA, virtual, sem driver
Hardware Collector
Maior resolução, menor overhead, todo sistema
Hotspots
Quais funções rodam por mais tempo?
Lightweight Hotspots
Quais funções rodam por mais tempo?
Onde usar inline? – Contagem estatística de
chamadas
Concurrency
Otimização do paralelismo
Cores sinalizam o número de núcleos em uso
General Exploration
Onde esta a maior oportunidade?
Cache misses? Branch mispredictions?
Locks and Waits
Otimização da principal causa de baixo
desempenho de threads – espera com
núcleos ociosos.
Advanced Analysis
Análise profunda para otimizar banda, cache
misses, contenções
de acesso, etc.
18. Perfis pré-definidos e fáceis de usar
Intel® VTune™ Amplifier XE
Selecione facilmente um Tipo de Análise
Clique em New Analysis
Selecione um Tipo de Análise
Hotspots
Quais funções rodam mais tempo?
Clique [+] para ver a call stack
Duplo-Clique para ver o código-fonte
Concurrency
As cores mostram o número de núcleos usados.
Adicione paralelismo aos hotspots com baixa
concorrência
Locks and Waits
Esperar por longos intervalos num lock é ruim
se os núcleos estão sendo sub-utilizados
durante a espera
18
1
2
19. 19
Duplo-clique para
ver o código-fonte
Encontre Respostas com Agilidade
Intel® VTune™ Amplifier XE
Ajuste dos Grupos de Dados
… (Lista Parcial)
Filtro por Processo
& Outros Controles
Filtro por
Seleção da Timeline
(ou por Seleção do Grid)
Clique [+] para Call Stack
Oportunidades de Otimização
mostradas em rosa (com dicas)
20. 20
Visualização de Dados do Perfil no Fonte / Assembly
Duplo-clique para Grid ou Timeline
Ver Fonte / Asm ou ambos
Rolagem rápida para hotspots. “Heat Map” da
barra de rolagem é resumo dos hotspots
Clique no jump para
rolagem do Asm
Navegação Rápida no Asm:
Selecione o fonte p/ destacar o Asm
Clique (dir.) para manual de refer. da instruçãoTempo CPU
21. 21
A Timeline visualiza o comportamento das Threads
Intel® VTune™ Amplifier XE
Opcional: Uso da API para marcar frames e tarefas do usuário
Opcional: Adição de “marca” durante a coleta
CPU Time
Hovers:
Transitions
Hotspots Lightweight HotspotsLocks & Waits
22. 22
Visualização de Problemas de Desempenho Paralelo
Busca de Padrões Comuns
Locks de Alta
Granularidade
(Coarse Grain)
Alta Contenção
gerada por Locks
Desbalanceamento
de Cargas
Baixa
Concorrência
http://software.intel.com/en-us/intel-vtune-amplifier-xe#pid-3659-760
23. Otimização de Software Paralelo
Porque é importante conhecer o Hardware
23
FRONT-END
BACK-END
24. Otimização de Software Paralelo
Porque é importante conhecer o Hardware
24
Situação Ideal:
Front-End consegue preencher todos os slots em cada ciclo de clock
Back-End consegue retirar µ-ops de cada slot em cada ciclo de clock
25. Otimização de Software Paralelo
Porque é importante conhecer o Hardware
25
Nem sempre acontece a situação ideal…
O VTune ajuda a entender o que está acontecendo
Cada núcleo (core) tem uma PMU que fornece informações
26. 26
Interface de Linha de Comando
Automação de Análises
amplxe-cl é o comando CLI:
Windows: C:Program Files (x86)IntelVTune Amplifier XE
bin[32|64]amplxe-cl.exe
Linux: /opt/intel/vtune_amplifier_xe/bin[32|64]/amplxe-cl
Help:
amplxe-cl –help
É possível gerar a linha de
comando a partir da GUI
Excelente para análise de regressão – permite enviar o
arquivo de resultados para o Desenvolvedor
Resultados obtidos pela linha de commando podem ser analisados pela GUI
27. 27
Coleta de Dados Remota
Analise de forma conveniente os dados coletados em sistemas remotos
1. Configure a coleta usando a GUI
localmente
2. Copie as instruções da linha de
commando para o Clipboard
3. Abra um shell remote para o
sistema de destino
4. Cole a linha de commando (Paste) e
execute a coleta
5. Copie os resultados para seu
sistema local
6. Abra o arquivo usando a GUI local
Sistema Local
VTune™ Amplifier XE
GUI completa
Sistema Remoto
Lightweight command
line collector
Copia a linha de comando
Copia os arquivos de
resultado
• “Performance footprint”
minimo durante a coleta
• Configuração simplificada
utilizando a GUI
• Fácil análise dos Resultados
28. 28
Compare Resultados Rapidamente–Ordene por Diferenças
Intel® VTune™ Amplifier XE
Identifique rapidamente causas nas regressões
– Rodando uma análise diária por linha de commando
– Identificando responsáveis pelas principais funções,
para saber quem deve ser alertado
Compare 2 otimizações – O que melhorou?
Compare 2 sistemas – Por que aumentou (ou não) o desempenho?
29. 29
Profiling para Java* com Baixo Overhead
Intel® VTune™ Amplifier XE 2013
Precisão & Baixo Overhead
– Amostragem rápida / não instrusiva
– Amostragem de Hardware ainda mais
rápida (agora com stacks opcionais)
– Perfis avançados exclusivos
(cache misses, banda…)
Versátil & Fácil de usar
– Múltiplas JVMs simultâneas
– Ambiente misto Java / C++ / Fortran
– Veja os resultados no código Java
Melhores Informações, Menor Overhead, Mais Fácil de usar
30. 30
Aumente a Eficiência Energética
Intel® VTune™ Amplifier XE 2013
Otimização Tradicional
– Redução da utilização total de
recursos
– Atingida através de:
• Uso de novas instruções
• Aumento do Paralelismo
Nova Otimização
– Aumento do tempo ocioso sem
interrupção
– Atingida através de:
• Redução da frequência da atividade
• Consolidação de atividades
Minimize os “Wake-Ups” de Timers e Interrupções
31. 31
Analise o Consumo de Energia da CPU
Intel® VTune™ Amplifier XE 2013
Minimize os “Wake-Ups”
para reduzir o consumo da CPU
Identifique as causas dos “Wake-ups”
• Timers disparados pela aplicação
• Interrupções mapeadas p/ níveis de
interrupção de Hardware
• Visualização da taxa de “Wake-Up”
Visualize o código fonte dos eventos
que “acordam” o processador
Visualize frequências da CPU por
núcleo (core)
• A frequência da CPU muda de acordo
com o nível de atividade
Somente para Linux
Selecione & filtre para ver um objeto “wake-up” único
Identifique a causa dos “Wake-Ups” analisando as call stacks dos timers
32. 32
Disponível em Versões Windows & Linux
GUI Standalone, Linha de Comando, Integração com Visual Studio
Microsoft Windows*
– Windows XP*, Windows Vista*, Windows 7*
– Windows Server* 2003, 2008
– Microsoft Visual Studio* 2008, 2010 e 2012
– GUI Standalone e Linha de Comando
– IA32 e Intel® 64
Linux*
– RHEL*, Fedora*, SUSE*, CentOS*, Ubuntu*
– Outras distros também podem funcionar
– GUI Standalone e Linha de Comando
– IA32 e Intel® 64
Usuário Individual ou licenças “flutuantes”
33. 33
Pacote Intel® Parallel Studio XE
Conjuntos de Ferramentas “All in one”
Crie código com velocidade e confiabilidade
Intel®
Cluster
Studio XE
Intel®
Parallel
Studio XE
Análise
● ● Intel® VTune™ Amplifier XE – Análise de Desempenho (Profiler)
● ● Intel® Inspector XE – Análise de Memória & Threads
● ● Static Analysis & Pointer Checker – Encontre erros de Código & Segurança
● ● Intel® Advisor XE – Assistente para a implementação de Threading
● Intel® Trace Analyzer & Collector – Ferramenta para Otimização de MPI
Compiladores&
Bibliotecas
● ● Intel® Compiler – Compilador Otimizado para C, C++ e Fortran
● ● Intel® Integrated Performance Primitives† - Otimizações para Mídia e Dados
● ● Intel® Threading Building Blocks† - Paralelismo de Aplicações com Alto Desempenho
● ● Intel® Math Kernel Library – Biblioteca Matemática de Alto Desempenho
● Intel® MPI Library – Messaging Flexível, Eficiente e Escalável
† Disponível somente para C e C++
Versões do Parallel Studio XE somente para C, C++ ou
somente para Fortran também estão disponíveis