identificando hotspots e intel® vtune™ amplifier - intel software conference
DESCRIPTION
Palestra ministrada por Luciano Palma no Intel Software Conference nos dias 6 de Agosto (NCC/UNESP/SP) e 12 de Agosto (COPPE/UFRJ/RJ).TRANSCRIPT
IdentificandoHotspots &Intel® VTune™ Amplifier
Luciano Palma
Community Manager – Servers & HPC
Intel Software do Brasil
2
Metodologia de Análise de DesempenhoUma 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 ferramentasadequadas em cada nível
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 CatesPrincipal 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á…
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çõesentre 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
Respostas com Agilidade
¤ Filtro de dados irrelevantes
¤ Visualização de resultadosno 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.
VTune™ Amplifier XE – Layout da GUI
6
7
Toolbar
VTune™ Amplifier XE – Layout da GUI
8
Navegadorde Projetos
VTune™ Amplifier XE – Layout da GUI
9
Tab de Resultados
VTune™ Amplifier XE – Layout da GUI
10
Layout do Grid
Pull-down menu de Agrupamento
VTune™ Amplifier XE – Layout da GUI
11
Painel da Stack
VTune™ Amplifier XE – Layout da GUI
12
Display da Timeline
VTune™ Amplifier XE – Layout da GUI
13
Tipo de Análiseda atual
execução
Viewpointutilizado na
exibição atual
VTune™ Amplifier XE – Layout da GUI
14
Tabs com opções de
visualização do resultado
VTune™ Amplifier XE – Layout da GUI
15
Área de filtros e outras funções
VTune™ Amplifier XE – Layout da GUI
Duas formas de Coletar DadosIntel® VTune™ Amplifier XE
16
Software CollectorHotspots, Concurrency, Locks & Waits
Hardware CollectorLightweight 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 únicaprocess tree
~10ms de resolução (default) ~1ms de resolução (default) (granularidade menor coleta funções menores)
Coleta dados utilizando processadoresIntel® 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 virtuaissuportados 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
Um extenso conjunto de dados sobre DesempenhoIntel® VTune™ Amplifier XE
Software CollectorQualquer processador IA, virtual, sem driver
Hardware CollectorMaior resolução, menor overhead, todo sistema
HotspotsQuais funções rodam por mais tempo?
Lightweight HotspotsQuais funções rodam por mais tempo?
Onde usar inline? – Contagem estatística de
chamadas
ConcurrencyOtimização do paralelismo
Cores sinalizam o número de núcleos em uso
General ExplorationOnde esta a maior oportunidade?
Cache misses? Branch mispredictions?
Locks and WaitsOtimizaçã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.
Perfis pré-definidos e fáceis de usarIntel® VTune™ Amplifier XE
Selecione facilmente um Tipo de Análise
Clique em New Analysis
Selecione um Tipo de Análise
HotspotsQuais funções rodam mais tempo?
Clique [+] para ver a call stack
Duplo-Clique para ver o código-fonte
ConcurrencyAs cores mostram o número de núcleos usados.
Adicione paralelismo aos hotspots com baixa
concorrência
Locks and WaitsEsperar por longos intervalos num lock é ruim
se os núcleos estão sendo sub-utilizados
durante a espera
18
1
2
19
Duplo-clique para
ver o código-fonte
Encontre Respostas com AgilidadeIntel® 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
Visualização de Dados do Perfil no Fonte / AssemblyDuplo-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
A Timeline visualiza o comportamento das ThreadsIntel® 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:
TransitionsHotspots Lightweight HotspotsLocks & Waits
22
Visualização de Problemas de Desempenho ParaleloBusca de Padrões Comuns
Locks de Alta Granularidade(Coarse Grain)
Alta Contençãogerada por Locks
Desbalanceamentode Cargas
BaixaConcorrência
http://software.intel.com/en-us/intel-vtune-amplifier-xe#pid-3659-760
Otimização de Software ParaleloPorque é importante conhecer o Hardware
23
FRONT-END
BACK-END
Otimização de Software ParaleloPorque é 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
Otimização de Software ParaleloPorque é 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
Interface de Linha de ComandoAutomação de Análises
amplxe-cl é o comando CLI:
Windows: C:\Program Files (x86)\Intel\VTune 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
Coleta de Dados RemotaAnalise 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
Compare Resultados Rapidamente – Ordene por DiferençasIntel® 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
Profiling para Java* com Baixo OverheadIntel® 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
Aumente a Eficiência EnergéticaIntel® 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 seminterrupçã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
Analise o Consumo de Energia da CPUIntel® 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
Disponível em Versões Windows & LinuxGUI 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
Pacote Intel® Parallel Studio XEConjuntos de Ferramentas “All in one”
Crie código com velocidade e confiabilidade
Intel®
ClusterStudio XE
Intel®
Parallel Studio XE
An
ális
e
● ● 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
Co
mp
ilad
ore
s&
Bib
liote
cas
● ● 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
34
Nota sobre Otimização
35
• INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
• A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF ITS PARTS.
• Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined". Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.
• The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
• Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different processor families. Go to: http://www.intel.com/products/processor_number.
• Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.• Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-
800-548-4725, or go to: http://www.intel.com/design/literature.htm• Intel, Core, Atom, Pentium, Intel inside, Sponsors of Tomorrow, Pentium, 386, 486, DX2 and the Intel logo are trademarks of Intel Corporation in
the United States and other countries.
• *Other names and brands may be claimed as the property of others.• Copyright ©2012 Intel Corporation.
Legal Disclaimer