Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
ANÁLISE DE DESEMPENHO DASANÁLISE DE DESEMPENHO DASIMPLEMENTAÇÕES DE COLETA DELIXO DA MÁQUINA VIRTUAL JAVA
Luciano Jerez ChavesOrientador: Prof. Marcelo Lobosco, D.Sc.
Universidade Federal de Juiz de ForaUniversidade Federal de Juiz de Fora12 de Dezembro de 2007
AGENDA
ContextualizaçãoçMotivaçãoAlgoritmos de coleta de lixoColetores na Máquina Virtual JavaAvaliação de desempenhoConclusõesTrabalhos futuros
2
CONTEXTUALIZAÇÃO
O gerenciamento de memória:g
ManualM l kMemory leakDangling reference
AutomáticoGarbage CollectionMecanismo antigoSmalltalk, Lisp, ML, Prolog, Java, C#
3
MOTIVAÇÃO
Coletores de Lixo:SeguroEficienteT E F üê iTempo x Espaço x Freqüência
ObjetivosObjetivosAvaliar algoritmos de coleta distintos em diferentes classes de aplicaçõesE t do a Má i a Vi t al Ja aEstudo na Máquina Virtual Java
4
A COLETA DE LIXO
Três perguntas:p g
Como identificar o lixo?Id tifi ã lí it t átiIdentificação explícita ou automática
Quando coletar o lixo?Esperar até o último momentoRealizar uma coleta contínua
Como realizar a limpeza?ReusoReciclagemg
5
CONTAGEM DE REFERÊNCIAS
IncrementalIncrementalParaleloTempo real
São pouco eficientesNão são efetivosNão são efetivos
6
ALGORITMOS DE RASTREAMENTO
Duas etapas:pDetecção do lixo
Conhecimento do grafo de relações entre os objetos
LiberaçãoDiferentes abordagens como compactação e cópia
Para a liberação...
Marcação e varredura (Mark-Sweep)
Marcação e compactação (Mark-Sweep Compact) 7
ALGORITMOS DE RASTREAMENTO
Para a liberação...çColeta com cópia (copying collection)
8
ALGORITMOS DE RASTREAMENTO
Rastreamento incrementalAbstração em três cores (branco, preto e cinza)Treadmill:
9
COLETA POR GERAÇÕES
Gerações novas e antigasGerações novas e antigasColetas distintas em cada geraçãoGerações não são independentes.
10Referências entre objetos de gerações diferentes
COLETORES NA MÁQUINA VIRTUAL JAVA
C Coletor serial:Coleta com cópia na geração jovemColeta com compactação na geração estável e na p ç g çgeração permanente 11
COLETORES NA MÁQUINA VIRTUAL JAVA
Coletor Paralelo
Paralelismo em uma ou ambas as geraçõesParalelismo em uma ou ambas as geraçõesPequena fragmentação na geração estável
12
COLETORES NA MÁQUINA VIRTUAL JAVA
Coletor concorrente
Modo incremental13
DIVISÃO DE MEMÓRIA DA HEAP
14
AVALIAÇÃO DE DESEMPENHO
Indicadores:Throughput
15g p
FootprintTempos de execução e de pausas
AVALIAÇÃO DE DESEMPENHO - GCOLD
GCOldModela aplicações com uso da geração estávelTamanho pequeno de heap utilizado
Throughput baixo para todas as configuraçõesmelhores resultados para o CMS
FootprintMaiores para os coletores CMS clientMenores para os coletores CMS serverp
Destaque para o CMS paralelo na geração jovem 4 melhores indicadores
16
AVALIAÇÃO DE DESEMPENHO - GCBENCH
GCBenchModela carga inicial de dados na heap e alocações e liberação de objetos durante a execuçãoDois tamanhos de heap analisados (256MB e 512MB)Dois tamanhos de heap analisados (256MB e 512MB)
Coletas maiores no início e no fim da execuçãoOs coletores clientes não fizeram uso da memória disponível, salvo os CMSSem restrição de memória, a melhor opção é o coletor Sem restrição de memória, a melhor opção é o coletor servidor paraleloCom restrição de memória, o coletor serial cliente obteve os melhores resultadosobteve os melhores resultados
17
AVALIAÇÃO DE DESEMPENHO - GCBENCH
Comportamento anormal no coletor paralelo na geração p p g çestável para heap de 256MB
18
1012
Tempo de execução (seg) Heap 256MBHeap 512MB
02468
1 2 3 4 5 6 7 8 9 10 11 12 13 14 151 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
80
Throughput (%) Heap 256MBHeap 512MB
20
40
60
Footprint (MB) Heap 256MB
01 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
200300400500600
p ( )Heap 512MB
0100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
19
AVALIAÇÃO DE DESEMPENHO -JGFCREATEBENCH
JGFCreateBenchModela aplicações com alocações de vida curta
Th h Throughputs Melhores resultados com coletor paralelo cliente e servidor
Footprints (consumo médio baixo)Altos para os coletores seriais e paralelos clientes Pequeno para o coletor cliente paralelo na geração estável e no servidor serial
Coletores CMS pouco eficientesColetor servidor serial (10) teve os melhores resultados
20
50525456
Tempo de execução (seg)
4244464850
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
80
100
Throughput (%)
0
20
40
60
80
300
Footprint (MB)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
50100150200250
2101 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
AVALIAÇÃO DE DESEMPENHO -JGFSERIALBENCH
JGFSerialBench
707274
Tempo de execução (seg) Heap 256MB
Heap 512MB
606264666870
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
98
Throughput (%) Heap 256MB
Heap 512MB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
86889092949698
8486
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
22
AVALIAÇÃO DE DESEMPENHO -JGFFORKJOINBENCH
JGFForkJoinBenchAplicação multithreadAvalia criação e junção de threadsT h d h dTamanho de heap grande
Throughputs e footprints praticamente os mesmos g p f p ppara n threadsDiferenças nos indicadores de tempos
Os coletores paralelos cliente e o dois coletores seriais foram os que melhor gerenciaram a memória.
23
25303540
Tempo de execução (seg) 2 threads3 threads4 threads
05
10152025
100
Throughput (%) 2 threads3 threads4 threads
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
98,5
99
99,5
Footprint (MB) 2 threads3 threads4 h d
981 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
203040506070 4 threads
01020
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Configuração
24
AVALIAÇÃO DE DESEMPENHO - GENEID
GeneIdAplicação multithreadExecução com dois tamanhos de heap: 512 e 1024 MB
Nenhuma aplicação fez uso máximo da memóriaThroughputsg p
Os coletores CMS mantiveram os melhoresColeta paralela na geração estável com os piores valores
FootprintsFootprintsMelhores valores com o coletor paralelo na geração estável
Os coletores serias foram os mais constantes com os dois tamanhos de heap e todos os números de threadsdois tamanhos de heap e todos os números de threads 25
AVALIAÇÃO DE DESEMPENHO -JGFSORBENCH
JGFSORBenchSó há alocação de memória no início da aplicaçãoHeap grande para avaliar o processo de expansão da mesma pelo coletormesma pelo coletor
Melhores throughputs com coletor CMS incrementalConsumo de memória e tempos de execução uniformes para cada uma das n threads avaliadasMelhores resultados de tempo com os coletores Melhores resultados de tempo com os coletores paralelos na geração jovemPara os outros indicadores o coletor CMS incremental foi superiorfoi superior
26
AVALIAÇÃO DE DESEMPENHO -JGFMONTECARLOBENCH
JGFMonteCarloBenchAlocação linear crescente de memória independente do número de threadsColetas menores e maiores intercaladasColetas menores e maiores intercaladas
Coletores paralelos para a geração estável tiveram os menores throughputs e os maiores tempos de execução.Destaque para o coletor CMS incremental
Melhor throughput, footprint e menores tempos de pausasOs melhores tempos de execução ficaram com o CMS defaultf
27
AVALIAÇÃO DE DESEMPENHO
Coletor SerialRealiza mudanças no tamanho da heap e geraçõesGeração estável predominanteB lt d l ã ã ótiBons resultados no geral, mas não são sempre ótimos
Coletor ParaleloColetor ParaleloMelhores resultadosCom paralelismo na geração jovem ou estável
T dê i t d ã l li dTendência em manter grande a geração paralelizadaGeração estável grande resulta em grandes pausas
Paralelo na geração estável é o pior28
AVALIAÇÃO DE DESEMPENHO
Coletor ConcorrenteObjetivos de pausa alcançadoAproveitam melhor a heap disponível
Coletor Concorrente incrementalBons resultados somente em: Bons resultados somente em:
JGFSORBenchJGFMonteCarloBench
Consumo maior de tempoConsumo maior de tempo
29
CONCLUSÕES
Mecanismos automáticos de gerenciamento geliminam erros de gerenciamento se bem programadosN l lh lt d l t No geral, melhores resultados com coletor paralelo na geração jovemPiores resultados com o coletor paralelo na Piores resultados com o coletor paralelo na geração estávelUma boa opção de escolha é deixar que a JVM f j d dfaça os ajustes antes de tentar uma mudança
30
TRABALHOS FUTUROS
Avaliar:os mesmos aplicativos em máquinas com apenas um processadordesempenho para heap com tamanho inicial maiordesempenho para heap com tamanho inicial maioralgumas metas de tempo máximo para os coletores paralelosgerenciamento dos dados estatísticos das coletas já realizadasproporções diferentes entre gerações da heap
31