Afinamiento y entendimiento Garbage Collector JVM IBM

49
© 2007 IBM Corporation ® Pág 1 Sesión 1: Entendiendo la JVM Juan Camilo Parra Martínez AVP Websphere

description

Entender como se afina, y se configura la JVM de IBM, extensible a jrockit y hotspot de sun. la sesión de practica, no estará disponible en linea.

Transcript of Afinamiento y entendimiento Garbage Collector JVM IBM

Page 1: Afinamiento y entendimiento Garbage Collector JVM IBM

© 2007 IBM Corporation

®

Pág 1

Sesión 1: Entendiendo la JVM

Juan Camilo Parra Martínez

AVP Websphere

Page 2: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

¿Que es y como funciona la JVM?

La JVM es una de las piezas fundamentales de la plataforma Java.

Básicamente se sitúa en un nivel superior al hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un puente que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar.

Page 3: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

3

Arquitectura JVM

Page 4: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

4

¿Qué es el Garbage Colector (GC)?

Un recolector de basura (del inglés garbage collector) es un mecanismo implícito de gestión de memoria implementado en algunos lenguajes de programación de tipo interpretado o semi-interpretado.

•Reservar espacios de memoria para su uso.•Liberar espacios de memoria previamente reservados.•Compactar espacios de memoria libres y consecutivos entre sí.•Llevar cuenta de qué espacios están libres y cuáles no.

Page 5: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

5

Ejemplo practico GC

Page 6: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

6

Que es el Heap Size

El heap es el espacio de memoria en tiempo de ejecución que se usa para almacenar las instancias de clases, objetos y arrays. Se crea en el inicio de la máquina virtual (JVM) y es gestionado por el Garbage Collector.

Se puede modificar el tamaño del heap mediante comandos de la JVM, y el GC realiza modificaciones en tiempo de ejecución de forma automática.

Page 7: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

7

Heap Dump

Un Heap Dump es un snapshot o “fotografía” del estado del heap en un momento concreto. Es generado por la JVM y muestra un volcado (dump) de todos los objetos “vivos” en el heap (los usados por la aplicación java) en ese momento.

Un heap dump puede generarse  de varias formas:

De forma automática: la JVM genera un heap dump automáticamente cuando el heap se agota. (OutOfMemoryError)

De forma explícita

Page 8: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

8

Entendiendo el manejo de memoria y memoria fisica

Page 9: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

9

Fases del GC

Marking

Sweep

Compacting

Reference objects

Final reference processing

JNI weak reference

Heap expansion (30%)

Heap shrinkage (60%)

Page 10: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

10

Entendiendo un poco el GC

Es el responsable de ubicar o liberar Objetos Java, Arreglos de objetos, Clases Java y Librerías.

Ubica los objetos usando secciones continuas de Heap de Java

Se asegura que el objeto se mantiene durante su vida útil o uso, esta determinación se basa en referencias del objeto.

Marca objetos que no se encuentran mas referenciados

Se asegura que cualquier método de finalización es llamado antes de que el objeto sea marcado.

Page 11: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

11

Por que se debe mantener afinado GC?

En la ejecución de todos los procesos o aplicaciones se pausa hasta que el GC termina su labor.

Conocido como “Stop The World” (STW)

Page 12: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

12

¿Que pasa a la JVM cuando la se comienza a paginar?

Page 13: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

13

Objetivo Responsiveness vs Throughput

Page 14: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

14

Responsiveness

Se refiere a la rapidez con que una aplicación o sistema responde. Por ejemplo:

La rapidez con una interfaz de usuario de escritorio responde a un evento

Qué tan rápido un sitio web devuelve una página

Qué tan rápido se devuelve una consulta de base de datos

Para estas aplicaciones, grandes tiempos de pausa no son aceptables. La atención se centra en dar respuesta en períodos cortos de tiempo.

Page 15: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

15

Throughput

Se centra en maximizar la cantidad de trabajo de una aplicación en un período específico de tiempo. Por ejemplo:

El número de transacciones completadas en un tiempo dado.

El número de puestos de trabajo que un programa por lotes se puede completar en una hora.

El número de consultas de bases de datos que se pueden completar en una hora.

Tiempos altos de pausa son aceptables para estas aplicaciones. Dado que las aplicaciones de alto rendimiento se centran en los puntos de referencia en períodos más largos de tiempo, el tiempo de respuesta rápida no es una consideración.

Page 16: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

16

Mejorar el Performance de una aplicación JAVA

Mejorar la aplicación, depende exclusivamente del código.

El afinamiento de la JVM, no va a solucionar problemas, que competen netamente a código!!

Page 17: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

17

Mejorar el Performance JVM

Todo afinamiento del GC trae, consigo mejoras en los tiempos de respuesta, pero esto no evita el profiling y mejora de las aplicaciones.

Page 18: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

18

Performance del recolector de basura

La definición de un problema de performance suele ser centrada en el usuario (El usuario requiere)

• Tiempos de pausa del GC muy cortos• Maximo Throughput• Un Balance entre estas dos

1. Debemos asegurarnos que hemos seleccionado la política del Garbage Collector según el tipo de performance que espera el usuario final• Para ello debemos conocer cada uno de los mecanismos de GC

2. Asegurarnos que el Heap Size esta bien configurado, por defecto y por exceso son malas configuraciones

3. Revisar por problemas específicos de performance.

Page 19: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

19

Saquemos Conclusiones.

¿Qué pasa si el heap inicial es muy alto?

¿Qué pasa si el heap máximo es muy bajo?

¿Qué pasa si el heap inicial es muy bajo?

¿Qué pasa si el Garbage Collector tiene tiempos de pausa muy largos?

¿Qué pasa si el Garbage Collector tiene tiempos de pausa cortos pero muy seguidos?

¿Para que se configura el Heap inicial y el máximo en el mismo valor?

¿Cuál seria el comportamiento esperado de una JVM de 32bits con 3GB de Memoria Máxima y 256mb de memoria inicial?

Page 20: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

20

¿Preguntas?

Page 21: Afinamiento y entendimiento Garbage Collector JVM IBM

© 2007 IBM Corporation

®

Pág 21

Sesión 2: Optimizar la JVM

Juan Camilo Parra Martínez

AVP

Page 22: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

22

Tipos de Garbage Collector (Solo IBM_J9)

Policy Option Description Optimize for throughput

-Xgcpolicy:optthruput

(optional)

The default policy. It is typically used for applications where raw throughput is more important than short GC pauses. The application is stopped each time that garbage is collected.

Optimize for pause time -Xgcpolicy:optavgpause Trades high throughput for shorter GC pauses by performing some of the garbage collection concurrently. The application is paused for shorter periods.

Generational concurrent

-Xgcpolicy:gencon Handles short-lived objects differently than objects that are long-lived. Applications that have many short-lived objects can see shorter pause times with this policy while still producing good throughput.

Subpooling -Xgcpolicy:subpool Uses an algorithm similar to the default policy's but employs an allocation strategy that is more suitable for multiprocessor machines. We recommend this policy for SMP machines with 16 or more processors. This policy is only available on IBM pSeries® and zSeries® platforms. Applications that need to scale on large machines can benefit from this policy.

Page 23: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

23

PistasSwitch to Reasons

optavgpause • My application cannot tolerate the length of the GC pauses. A degradation in performance is acceptable as long as the GC pause time is reduced.

• I am running on a 64-bit platform and use a very large heap -- more than 3 or 4GB.

• My application is a GUI application and I'm concerned about the user response times.

gencon • My application allocates many short-lived objects.

• The heap space is fragmented.

• My application is transaction-based (that is, objects in the transaction don't survive beyond the transaction commit).

subpool • I have scalability problems on large multiprocessor machine.

Page 24: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

24

Parallel GC (optthruput)

Es un algoritmo de Marcado y Barrido en paralelo, que evita la compactación, esta diseñado para aumentar el performance en SMP.

Se encuentra optimizado para “Throughput”, con lo cual es la mejor política para aplicaciones tipo “batch”

En este algoritmo se encuentra un hilo principal encargado de generar el conjunto de objetos, y una serie de hilos helper que se encargan del resto del trabajo, el numero de hilos es igual al numero de unidades de procesamiento (Por defecto en IBM J9)

Se puede disminuir usando -Xgcthreads

Page 25: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

25

Page 26: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

26

Concurrent GC (optavgpause)

Reduce y hace mas consistente, el tiempo de pausa gastado por el GC.

Lo logra realizando el proceso de marcado y barrido de manera concurrente, mientras se ejecuta la aplicación o esta esta inactiva, esto hace que la aplicación no se detenga durante todas las fases, sino solo durante una pequeña fracción de tiempo.

Se reduce el tiempo de pausa entre un 90 y 95% comparado con optthruput.

El Throughput se reduce aproximadamente en un 5% comparado con optthruput.

Page 27: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

27

Hidden Object Issue

Page 28: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

28

Generacional Concurrente (gencon)

Es un concepto similar al usado por Sun y HP, se realizan copias paralelas y recolecciones globales concurrentes por defecto.

Se basa en la muerte muy frecuente de objetos jóvenes, entonces enfoca su atención a limpiar los objetos que son creados reciente.

Para ello divide el heap en dos áreas, “Nursery” y “Tenured”

Los objetos nuevos se alojan en Nursery, y los viejos en Tenured.

Las recolecciones se enfocan en el área de Nursery.

Los objetos que sobreviven a cierto numero de recolecciones en el Nursery, son enviados al Tenured.

Page 29: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

29

El área de Nursery también se divide en dos, Allocate y Survivor, en el primero los objetos nuevos son ubicados, Survivor es un paso intermedio donde se copian los objetos de forma temporal cuando ocurre un ciclo de GC de Nursery.

La cantidad de ciclos de recolección del Nursery antes de llevar un objeto al Tenured es determinada de forma automática por la JVM, pero este numero nunca excederá las 14 recolecciones.

Los objetos son ubicados en el espacio de Tenured y Survivor de forma tal que se evita al máximo la fragmentación.

Page 30: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

30

Page 31: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

31

Monitoreando la actividad del GC

Use el Verbose del GC para rastrear el comportamiento de la maquina virtual.

Para eso active el log usando los parámetros– -Xverbose:gc

– -Xverbosegclog:[DirPath][FileName],[NumberOfFiles],[NumberOfCyclesPerFile]

Puede graficar el verbose usando la herramienta GC and Memory Visualizer (GCMV) de ISA.

Costo de performance: Se estima que activar el GC causa una sobre carga del 2% sobre los tiempos de pausa, así si el tiempo de pausa usual de una maquina virtual es de 5 segundos, este se convertirá en 5.1segundos.

Page 32: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

32

JRockit

The following dynamic modes are available:

 throughput, which optimizes the garbage collector for maximum application throughput. This is the default mode.

 pausetime, which optimizes the garbage collector for short and even pause times.

 deterministic, which optimizes the garbage collector for very short and deterministic pause times. This mode is only available as a part of Oracle JRockit Real Time.

The major static strategies are:

 singlepar, which is a single-generational parallel garbage collector (same as parallel)

 genpar, which is a two-generational parallel garbage collector

 singlecon, which is a single-generational mostly concurrent garbage collector

 gencon, which is a two-generational mostly concurrent garbage collector

http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/memman.html

Page 33: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

33

HotSpot de Sun

If the application has a small data set (up to approximately 100MB), then

– select the serial collector with -XX:+UseSerialGC.

If the application will be run on a single processor and there are no pause time requirements, then

– let the VM select the collector, or

– select the serial collector with -XX:+UseSerialGC.

If (a) peak application performance is the first priority and (b) there are no pause time requirements or pauses of one second or longer are acceptable, then

– let the VM select the collector, or

– select the parallel collector with -XX:+UseParallelGC and (optionally) enable parallel compaction with -XX:+UseParallelOldGC.

If response time is more important than overall throughput and garbage collection pauses must be kept shorter than approximately one second, then

– select the concurrent collector with -XX:+UseConcMarkSweepGC. If only one or two processors are available, consider using incremental mode.

http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

Page 34: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

34

Donde puedo encontrar los demás parámetros que puedo ajustar en la JVM de IBM

http://publib.boulder.ibm.com/infocenter/realtime/v1r0/index.jsp?topic=%2Fcom.ibm.rt.doc.10%2Frealtime%2Frt_xoptions_gc_standard.html

Page 35: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

35

Configurando Memoria JVM

Máximos posibles

El Heap Size “Correcto”

Heap size fixed vs variable

Heap Size para algoritmos generacionales (gencon)

Page 36: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

36

Máximo Heap Size Posible

Las JVM de 32 bits tienen un máximo que varia dependiendo de la plataforma sistema operativo, implementación de la misma JVM, etc.

Esta restricción suele ser baja (alrededor de 2GB)

Se debe tener mucho cuidado con el Native Heap

Los procesos de 64 bits, suelen tener un limite mucho mayor, tan grande que puede ser ignorado, (alrededor de 16 TeraBytes)

Page 37: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

37

El Native Heap, puede ser medido usando, Svmon(AIX), PerfMon (Windows) , RFm(zOs)

Page 38: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

38

Implicaciones de usar 64bits

Menor Performance

Mas datos a manipular

Temas de Cache actúan con un bajo rendimiento

Se requiere mas memoria

Se solucionan utilizando métodos de compresión de memoria.

Page 39: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

39

El Heap Size “Correcto”

MaxUsed / MaxHeap = 0.71.43 * MaxUsed = MaxHeap

Page 40: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

40

Heap Fixed vs Variable

¿Deberia ser el heap inicial igual al heap maximo?> -Xms = -Xmx

Como siempre para cada aplicación hay que considerar las ventajas y desventajas dependiendo de lo que se quiera conseguir.

Analicemos y consideremos las características de cada uno.

Page 41: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

41

Heap Size para algoritmos generacionales

Page 42: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

42

Preguntas

Page 43: Afinamiento y entendimiento Garbage Collector JVM IBM

© 2007 IBM Corporation

®

Pág 43

Sesión 3: Practica

Juan Camilo Parra Martínez

AVP

Page 44: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

44

Probar

Gencon

Optavgpause

Y optthruput

¿Como se comporta cada test con los diferentes algoritmos de GC?

Para el test 5, el instructor dará un escenario, configure la jvm de manera que se minimicen los tiempos de pausa.

Page 45: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

45

Preguntas?

Page 47: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

47

Referencias

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

http://www.cs.virginia.edu/kim/publicity/pldi09tutorials/memory-efficient-java-tutorial.pdf

Page 48: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software

48

Referencias

http://www.redbooks.ibm.com/redbooks/pdfs/sg247353.pdf

http://www-01.ibm.com/support/docview.wss?uid=swg27013824&aid=1

http://www.redbooks.ibm.com/redbooks/pdfs/sg247353.pdf

http://www.slideshare.net/cnbailey/tuning-ibms-generational-gc-14062096

Page 49: Afinamiento y entendimiento Garbage Collector JVM IBM

IBM Software Group | WebSphere software