Enviar pesquisa
Carregar
CON22150 - The Future of JVM Performance Tuning
•
4 gostaram
•
1,337 visualizações
Ricardo Ferreira
Seguir
Tecnologia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 44
Baixar agora
Baixar para ler offline
Recomendados
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
Adriano Tavares
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
ffeitosa
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
Helder da Rocha
As Novidades do JMS 2.0
As Novidades do JMS 2.0
Bruno Borges
Java 9, 10, 11
Java 9, 10, 11
Helder da Rocha
Java ee 5
Java ee 5
Juarez Junior
A arquitetura modular do Java 9
A arquitetura modular do Java 9
Helder da Rocha
ISACA Webcast Featuring SuperValu - Tackling Security and Compliance Barri…
ISACA Webcast Featuring SuperValu - Tackling Security and Compliance Barri…
OracleIDM
Recomendados
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
Adriano Tavares
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
ffeitosa
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
Helder da Rocha
As Novidades do JMS 2.0
As Novidades do JMS 2.0
Bruno Borges
Java 9, 10, 11
Java 9, 10, 11
Helder da Rocha
Java ee 5
Java ee 5
Juarez Junior
A arquitetura modular do Java 9
A arquitetura modular do Java 9
Helder da Rocha
ISACA Webcast Featuring SuperValu - Tackling Security and Compliance Barri…
ISACA Webcast Featuring SuperValu - Tackling Security and Compliance Barri…
OracleIDM
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1
guestc9a1c7
Introdução a Plataforma Java EE
Introdução a Plataforma Java EE
Eder Magalhães
Java20141215 17[1]
Java20141215 17[1]
Diogo Rafael da Silva
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
Bruno Borges
Desenvolvimento Java
Desenvolvimento Java
Serge Rehem
Java - Learn Once Use Anywhere
Java - Learn Once Use Anywhere
Serge Rehem
Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8
Rogério Moraes de Carvalho
Java basico modulo_01
Java basico modulo_01
CASSIANE SILVA
Java basico modulo_01
Java basico modulo_01
Patricia Marques
Java basico modulo_01
Java basico modulo_01
Daniel Alves
Java basico modulo_01
Java basico modulo_01
rollbackpt
Dr Java Virtual Machine
Dr Java Virtual Machine
Otavio Fernandes
JUDCon Brazil 2013
JUDCon Brazil 2013
George Gastaldi
Java basico
Java basico
William Andrade
Tutorial Java EE
Tutorial Java EE
Rodrigo Cândido da Silva
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
Bruno Borges
Detalhes internos da nova JVM do Java 8 @mariofts
Detalhes internos da nova JVM do Java 8 @mariofts
Mario Amaral
Introducao EJB 3
Introducao EJB 3
Rodrigo Cândido da Silva
Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdf
Jadna Almeida
JSP - Java Serves Pages
JSP - Java Serves Pages
Amanda Luz
Mais conteúdo relacionado
Semelhante a CON22150 - The Future of JVM Performance Tuning
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1
guestc9a1c7
Introdução a Plataforma Java EE
Introdução a Plataforma Java EE
Eder Magalhães
Java20141215 17[1]
Java20141215 17[1]
Diogo Rafael da Silva
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
Bruno Borges
Desenvolvimento Java
Desenvolvimento Java
Serge Rehem
Java - Learn Once Use Anywhere
Java - Learn Once Use Anywhere
Serge Rehem
Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8
Rogério Moraes de Carvalho
Java basico modulo_01
Java basico modulo_01
CASSIANE SILVA
Java basico modulo_01
Java basico modulo_01
Patricia Marques
Java basico modulo_01
Java basico modulo_01
Daniel Alves
Java basico modulo_01
Java basico modulo_01
rollbackpt
Dr Java Virtual Machine
Dr Java Virtual Machine
Otavio Fernandes
JUDCon Brazil 2013
JUDCon Brazil 2013
George Gastaldi
Java basico
Java basico
William Andrade
Tutorial Java EE
Tutorial Java EE
Rodrigo Cândido da Silva
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
Bruno Borges
Detalhes internos da nova JVM do Java 8 @mariofts
Detalhes internos da nova JVM do Java 8 @mariofts
Mario Amaral
Introducao EJB 3
Introducao EJB 3
Rodrigo Cândido da Silva
Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdf
Jadna Almeida
JSP - Java Serves Pages
JSP - Java Serves Pages
Amanda Luz
Semelhante a CON22150 - The Future of JVM Performance Tuning
(20)
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1
Introdução a Plataforma Java EE
Introdução a Plataforma Java EE
Java20141215 17[1]
Java20141215 17[1]
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
Desenvolvimento Java
Desenvolvimento Java
Java - Learn Once Use Anywhere
Java - Learn Once Use Anywhere
Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8
Java basico modulo_01
Java basico modulo_01
Java basico modulo_01
Java basico modulo_01
Java basico modulo_01
Java basico modulo_01
Java basico modulo_01
Java basico modulo_01
Dr Java Virtual Machine
Dr Java Virtual Machine
JUDCon Brazil 2013
JUDCon Brazil 2013
Java basico
Java basico
Tutorial Java EE
Tutorial Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
Detalhes internos da nova JVM do Java 8 @mariofts
Detalhes internos da nova JVM do Java 8 @mariofts
Introducao EJB 3
Introducao EJB 3
Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdf
JSP - Java Serves Pages
JSP - Java Serves Pages
CON22150 - The Future of JVM Performance Tuning
1.
1
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
2.
The Future of
JVM Performance Tuning Ricardo S. Ferreira Java, FMW & Engineered Systems Expert ricardo.s.ferreira@oracle.com 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
3.
The following is
intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
4.
Agenda
JVM, Threads, RAM, Heap e Garbage Collection Os Algoritmos Clássicos de Garbage Collection Overview sobre o Algoritmo G1: Garbage-First Máximo Throughput usando Sockets Direct Protocol OpenJDK: Contribuindo com o futuro da JVM 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
5.
Sobre o Palestrante
http://blogs.oracle.com/middlewareplace Começou a desenvolver @jricardoferreir software como profissão em 1997 (Delphi, C/C++) Procure por “Ricardo Ferreira” Trabalha com Java desde 2002 (Em especial JEE) Procure por “Ricardo Ferreira” Red Hat, Progress Soft. http://blogs.oracle.com/middlewareplace Respira constantemente tecnologia na Oracle http://youtube.com/rferreira12345tube Performance-Driven Guy 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
6.
JVM, Threads, RAM,
Heap & Garbage Collection (GC) 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
7.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre JVM & Threads Sistema Operacional JVM 1 JVM 2 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
8.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre RAM e Heap Layout de Memória pra JVM Kernel do Heap (~75%) S.O (~10%) Código Threads (~5%) Nativo (~12%) 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
9.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre RAM e Heap Layout de Memória pra JVM Heap Eden Old Kernel do S.O Perm Stack Código Nativo Threads 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
10.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre Garbage Collection (GC) Objeto Objeto 0x9FFF0 Roots 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
11.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre Garbage Collection (GC) Objeto Objeto 0x9FFF0 Roots Foo* foo = new Foo(); delete foo; foo->doSomething(); 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
12.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre Garbage Collection (GC) Objeto Objeto 0x9FFF0 Roots Foo* foo = new Foo(); delete foo; foo->doSomething(); 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
13.
JVM, Threads, RAM,
Heap e Garbage Collection Visão Geral sobre Garbage Collection (GC) Sistema Operacional GC são threads que executam em baixa prioridade na JVM JVM 1 Existem vários tipos de threads de um GC, mas entre eles: – Mutators: Responsáveis por alocar a memória e remanejar os ponteiros e referências – Collectors: responsáveis por fazer a limpeza do espaço de memória alocado na Heap 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
14.
Os Algoritmos Clássicos
de Garbage Collection (GC) 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
15.
Os Algoritmos Clássicos
de Garbage Collection Overview sobre os Principais Algoritmos de GC Conhecidos Algoritmos de GC Todos esses algoritmos possuem um objetivo ou Não Tempo foco particular na JVM Concorrentes Real Concorrentes Algumas implementações Mark-Sweep Parallel Garbage-First de GC são na prática uma combinação destes Mark-Compact Concurrent Deterministic algoritmos clássicos. Copying GC É possível combinar os Reference algoritmos, desde que Counting não ocorra trade-off. 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
16.
Os Algoritmos Clássicos
de Garbage Collection Overview sobre os Principais Algoritmos de GC Conhecidos Algoritmos de GC Não Tempo Concorrentes Real Concorrentes Mark-Sweep Parallel Garbage-First Mark-Compact Concurrent Deterministic Copying GC Reference Counting 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
17.
Overview sobre o
Algoritmo G1: Garbage-First 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
18.
Qual é a
“Grande Sacada” do G1? Principais Características do G1 Executar o GC de forma concorrente aos threads da aplicação Java Usar compactação de espaço livre sem pênalti para o tempo de GC Usar paralelismo para melhorar o tempo de resposta da aplicação Java Possibilitar um tempo de GC mais próximo do tempo real possível Possibilitar o uso de áreas de heap maiores que 6 GB 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
19.
Overview sobre o
G1 (Garbage-First) Oracle HotSpot Antes do G1 Young Generation – Dividida em: Eden Survivors Eden Space 2 Survivors Old Generation – Único e grande espaço contíguo Old Generation – Desalocação no CMS ocorre no espaço e de forma concorrente – “Stop-the-World” para executar uma compactação total e em paralelo 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
20.
Overview sobre o
G1 (Garbage-First) Oracle HotSpot Depois do G1 Único espaço contínuo de memória quebrado em múltiplas regiões de tamanhos iguais Tamanho da região dito pela JVM no startup. Varia entre de 1 MB à 32 MB. 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
21.
Young GC no
CMS (Parte 1) Young Generation – Dividida em 1 eden e 2 espaços de survivors (Foco em objetos recentes) Old Generation – Compactado apenas no Full-GC – Desalocação é feita somente dentro da região da Old Generation 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
22.
Young GC no
CMS (Parte 2) Durante o Young GC – Objetos recentes da Young são evacuados (copiados/movidos) para Outro espaço de survivor Old Generation – Isso implica em “Stop-the-World” 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
23.
Young GC no
CMS (Parte 3) Final do Young GC – Eden e 1 dos survivors devem estar completamente vazios (possivelmente) – Objetos podem ter sido promovidos para a Old Generation 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
24.
Young GC no
G1 (Parte 1) Heap da JVM separada em regiões – Média de regiões: 2 KB – Cada região com 1 MB ou até 32 MB. Dá pra alterar com o argumento -XX:G1HeapRegionSize Young e Old não precisam ser mais contíguos. I/O aleatórios nas regiões. 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
25.
Young GC no
G1 (Parte 2) Durante o Young GC – Objetos recentes da Young são evacuados (copiados/movidos) para Uma ou mais regiões de survivor Regiões do tipo Old Generation – Isso implica em “Stop-the-World” – Próximo tempo de GC é calculado 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
26.
Young GC no
G1 (Parte 3) Final da Young GC – Objetos recentes da Young foram evacuados (copiados/movidos) para Zero ou mais regiões de survivor Regiões do tipo Old Generation – Regiões do eden e survivor são potencialmente redimensionados 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
27.
GC na Old
usando CMS :: Depois do Marking (1) Marcação feita de forma concorrente – 2 pausas do tipo “Stop-theWorld” Marcação inicial Remarcação – Marca objetos rastreáveis recentes – Objetos não marcados são os que foram considerados mortos 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
28.
GC na Old
usando CMS :: Depois do Marking (2) Sweeping feito de forma concorrente – Executa o sweeping em todo o espaço reservado para Old Gen – Desaloca objetos mortos que não foram marcados ou que foram marcados com a cor branca – Não realiza nenhuma compactação 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
29.
GC na Old
usando CMS :: Depois do Marking (3) Final da fase de sweeping concorrente – Todos os objetos não marcados são desalocados e têm seu espaço limpo 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
30.
GC na Old
usando G1 :: Depois do Marking (1) Marcação feita de forma concorrente – Uma única pausa “Stop-the-World” Executa remarcação Completa remarcações pendentes 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
31.
GC na Old
usando G1 :: Depois do Marking (2) Marcação feita de forma concorrente – Também calcula informações sobre “sobrevivência” de objetos por região – Regiões vazias podem ser limpas imediatamente (como indicado no exemplo com o símbolo de “X”) 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
32.
GC na Old
usando G1 :: Depois do Marking (3) Final da fase de remarcação – Regiões vazias são limpas – Informações sobre “sobrevivência” de objetos atualizadas para todas as regiões do tipo Old Generation 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
33.
GC na Old
usando G1 :: Depois do Marking (4) Limpando regiões do tipo Old Gen – Escolhe as regiões com baixa taxa de “sobrevivência” de objetos marcados – Coleta alguns no próximo GC da Young Generation 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
34.
GC na Old
usando G1 :: Depois do Marking (5) Pode ser que tenham sobrado alguns objetos nas regiões do tipo Old Gen – Nas regiões com as maiores taxas de “sobrevivência” de objetos – Mas, esses objetos podem ser coletados mais tarde de acordo com as regiões não-utilizadas e o tempo de pausa setado na linha de comando 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
35.
Principais Diferenças entre
o CMS e o G1 (1) CMS – Muito difícil de fazer tuning. Muitos parâmetros precisam ser configurados e muitos algoritmos precisam ser combinados e muito bem entendidos. G1 – O objetivo é que você defina apenas o tamanho da heap e o tempo de pausa do GC 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
36.
Máximo Throughput
usando Sockets Direct Protocol (SDP) 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
37.
Você Lembra Disso?
“The Network Is the Computer” Scott McNealy Sun Microsystems, 1999 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
38.
Uso de InfiniBand
em Sistemas de HPC (High Performance Computing) InfiniBand Curiosidade: 10 GBs Uma rede InfiniBand tradicional opera em 100 MB/s 40GB/s numa latência média de 1.2 µs 10 MB/s 0 2 4 6 8 10 12 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
39.
Uso de InfiniBand
em Sistemas de HPC (High Performance Computing) Redes Tradicionais Rede InfiniBand Aplicação Aplicação Aplicação Aplicação I/O Buffer I/O Buffer Copy Transporte TCP/IP Kernel 20% Cópia em Buffers Zero Cópia de Buffers 20% em Transport Processing Direct Memory Access 40% Kernel Context Switching Bypass do Kernel 4X mais Throughput, 6X Menos Latência 39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
40.
Suporte a SDP
(Sockets Direct Protocol) no Java 7 sdp.conf bind 192.168.0.16 * connect 192.168.0.12 8001 connect 192.168.0.14 1521 java -Dcom.sun.sdp.conf=sdp.conf -Djava.net.preferIPv4Stack=true com.acme.util.Application 40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
41.
OpenJDK: Contribuindo
com o Futuro da JVM 41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
42.
OpenJDK: Contribuindo com
o Futuro da JVM Principais Recursos – Feedback sobre assuntos em Geral: hotspot-dev@openjdk.java.net – Questões gerais sobre o uso do GC: hotspot-gc-use@openjdk.java.net – Questões de desenvolvimento do GC: hotspot-gc-dev@openjdk.java.net – Builds “Early Access” do JDK 8: http://jdk8.java.net/download.html • Java Deployment • Java Graphics (2D, 3D) • Java Security Extensions • Java Performance Tuning • Java Core Libraries • Java Quality Assurange 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
43.
Graphic Section Divider 43
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
44.
44
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
Baixar agora