1   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.   JavaOne 2012 LAD
The Future of JVMPerformance TuningRicardo S. FerreiraJava, FMW & Engineered Systems Expertricardo.s.ferreira@oracle.com2 ...
The following is intended to outline our general product               direction. It is intended for information purposes ...
Agenda                   JVM, Threads, RAM, Heap e Garbage Collection                   Os Algoritmos Clássicos de Garbage...
Sobre o Palestrante                                                                      http://blogs.oracle.com/middlewar...
JVM, Threads, RAM, Heap        & Garbage Collection (GC)6   Copyright © 2012, Oracle and/or its affiliates. All rights res...
JVM, Threads, RAM, Heap e Garbage Collection        Visão Geral sobre JVM & Threads                                       ...
JVM, Threads, RAM, Heap e Garbage Collection        Visão Geral sobre RAM e Heap    Layout de Memória pra JVM             ...
JVM, Threads, RAM, Heap e Garbage Collection        Visão Geral sobre RAM e Heap    Layout de Memória pra JVM             ...
JVM, Threads, RAM, Heap e Garbage Collection         Visão Geral sobre Garbage Collection (GC)                            ...
JVM, Threads, RAM, Heap e Garbage Collection         Visão Geral sobre Garbage Collection (GC)                            ...
JVM, Threads, RAM, Heap e Garbage Collection         Visão Geral sobre Garbage Collection (GC)                            ...
JVM, Threads, RAM, Heap e Garbage Collection         Visão Geral sobre Garbage Collection (GC)                            ...
Os Algoritmos Clássicos         de Garbage Collection (GC)14   Copyright © 2012, Oracle and/or its affiliates. All rights ...
Os Algoritmos Clássicos de Garbage Collection         Overview sobre os Principais Algoritmos de GC Conhecidos            ...
Os Algoritmos Clássicos de Garbage Collection         Overview sobre os Principais Algoritmos de GC Conhecidos            ...
Overview sobre o Algoritmo     G1: Garbage-First17   Copyright © 2012, Oracle and/or its affiliates. All rights reserved. ...
Qual é a “Grande Sacada” do G1?         Principais Características do G1                Executar o GC de forma concorrente...
Overview sobre o G1 (Garbage-First)         Oracle HotSpot Antes do G1                                                    ...
Overview sobre o G1 (Garbage-First)         Oracle HotSpot Depois do G1                                                   ...
Young GC no CMS (Parte 1)                                                                                               Yo...
Young GC no CMS (Parte 2)                                                                                               Du...
Young GC no CMS (Parte 3)                                                                                               Fi...
Young GC no G1 (Parte 1)                                                                                               Hea...
Young GC no G1 (Parte 2)                                                                                               Dur...
Young GC no G1 (Parte 3)                                                                                               Fin...
GC na Old usando CMS :: Depois do Marking (1)                                                                             ...
GC na Old usando CMS :: Depois do Marking (2)                                                                             ...
GC na Old usando CMS :: Depois do Marking (3)                                                                             ...
GC na Old usando G1 :: Depois do Marking (1)                                                                              ...
GC na Old usando G1 :: Depois do Marking (2)                                                                              ...
GC na Old usando G1 :: Depois do Marking (3)                                                                              ...
GC na Old usando G1 :: Depois do Marking (4)                                                                              ...
GC na Old usando G1 :: Depois do Marking (5)                                                                              ...
Principais Diferenças entre o CMS e o G1 (1)                CMS                     – Muito difícil de fazer tuning. Muito...
Máximo Throughput         usando Sockets Direct         Protocol (SDP)36   Copyright © 2012, Oracle and/or its affiliates....
Você Lembra Disso?                                                                                               “The     ...
Uso de InfiniBand em Sistemas de HPC (High         Performance Computing)                                                 ...
Uso de InfiniBand em Sistemas de HPC (High         Performance Computing)                     Redes Tradicionais          ...
Suporte a SDP (Sockets Direct Protocol) no         Java 7      sdp.conf         bind 192.168.0.16 *         connect 192.16...
OpenJDK: Contribuindo         com o Futuro da JVM41   Copyright © 2012, Oracle and/or its affiliates. All rights reserved....
OpenJDK: Contribuindo com o Futuro da JVM                Principais Recursos                     – Feedback sobre assuntos...
Graphic Section Divider43   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.   JavaOne 2012 LAD
44   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.   JavaOne 2012 LAD
Upcoming SlideShare
Loading in …5
×

CON22150 - The Future of JVM Performance Tuning

2,073 views

Published on

Published in: Technology
2 Comments
4 Likes
Statistics
Notes
  • Oi Fabiano,

    O G1 ainda não pode ser usado em ambientes de produção porque a Oracle ainda não o suporta. Ele está disponível no JDK 7 apenas como testes. Mas já testei ele sim e realmente ele entrega o que promete!

    Abs,

    Ricardo Ferreira
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Excelente apresentação sobre o G1, grande Ricardo! Já tem usado o G1 em ambientes produtivos com sucesso?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,073
On SlideShare
0
From Embeds
0
Number of Embeds
129
Actions
Shares
0
Downloads
0
Comments
2
Likes
4
Embeds 0
No embeds

No notes for slide

CON22150 - The Future of JVM Performance Tuning

  1. 1. 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  2. 2. The Future of JVMPerformance TuningRicardo S. FerreiraJava, FMW & Engineered Systems Expertricardo.s.ferreira@oracle.com2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  3. 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. 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 JVM4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  5. 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 Guy5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  6. 6. JVM, Threads, RAM, Heap & Garbage Collection (GC)6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  7. 7. JVM, Threads, RAM, Heap e Garbage Collection Visão Geral sobre JVM & Threads Sistema Operacional JVM 1 JVM 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  8. 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. 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 Threads9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  10. 10. JVM, Threads, RAM, Heap e Garbage Collection Visão Geral sobre Garbage Collection (GC) Objeto Objeto 0x9FFF0 Roots10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  11. 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. 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. 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 Heap13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  14. 14. Os Algoritmos Clássicos de Garbage Collection (GC)14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  15. 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. 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 Counting16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  17. 17. Overview sobre o Algoritmo G1: Garbage-First17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  18. 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 GB18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  19. 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 paralelo19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  20. 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. 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 Generation21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  22. 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. 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 Generation23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  24. 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. 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 é calculado25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  26. 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 redimensionados26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  27. 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 mortos27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  28. 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ção28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  29. 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 limpo29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  30. 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 pendentes30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  31. 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. 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 Generation32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  33. 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 Generation33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  34. 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 comando34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  35. 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 GC35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  36. 36. Máximo Throughput usando Sockets Direct Protocol (SDP)36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  37. 37. Você Lembra Disso? “The Network Is the Computer” Scott McNealy Sun Microsystems, 199937 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  38. 38. Uso de InfiniBand em Sistemas de HPC (High Performance Computing) InfiniBandCuriosidade: 10 GBsUma rede InfiniBandtradicional opera em 100 MB/s40GB/s numa latênciamédia de 1.2 µs 10 MB/s 0 2 4 6 8 10 1238 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  39. 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ência39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  40. 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.Application40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  41. 41. OpenJDK: Contribuindo com o Futuro da JVM41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  42. 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 Assurange42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  43. 43. Graphic Section Divider43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD
  44. 44. 44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaOne 2012 LAD

×