Diapositivas realizadas para una presentacion de ingenieria del software sobre la gestion de riesgos, lo hice en un par de horas por lo que no tiene tanta calidad, habla sobre las formas de detectar un riesgo, las consecuencias que pueden traer y las formas de solucionarlas.
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Micael Gallego
Esta presentación corresponde al "Tema 2: Tecnologías de desarrollo web" de la asignatura "Desarrollo de Aplicaciones Web" de 3º del Grado en Ingeniería del Software de la ETSII en la Universidad Rey Juan Carlos.
En esta presentación cubrimos el modelo de memoria del JDK 5/6/7, a partir de JDK 8 hay un cambio en el modelo de memoria, así que no toda la presentación seria valida, aunque algunos conceptos se mantienen.
Los ejemplos se pueden encontrar en https://github.com/ldebello/javacuriosities/tree/master/MemoryManagement
Diapositivas realizadas para una presentacion de ingenieria del software sobre la gestion de riesgos, lo hice en un par de horas por lo que no tiene tanta calidad, habla sobre las formas de detectar un riesgo, las consecuencias que pueden traer y las formas de solucionarlas.
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Micael Gallego
Esta presentación corresponde al "Tema 2: Tecnologías de desarrollo web" de la asignatura "Desarrollo de Aplicaciones Web" de 3º del Grado en Ingeniería del Software de la ETSII en la Universidad Rey Juan Carlos.
En esta presentación cubrimos el modelo de memoria del JDK 5/6/7, a partir de JDK 8 hay un cambio en el modelo de memoria, así que no toda la presentación seria valida, aunque algunos conceptos se mantienen.
Los ejemplos se pueden encontrar en https://github.com/ldebello/javacuriosities/tree/master/MemoryManagement
A brief explanation on how the JVM loads and execute its code is done here. Register and stack based execution are explained, and different garbage collection algorithms are shown using graphs to make it easy to understand what happens under the hood. This talk uses the Java Virtual Machine as a main example, but most of the concepts extends to any modern virtual machine available today.
La Meta está escrita como literatura de ficción. El personaje principal es Alex Rogo, que administra una planta de producción en lo que todo siempre está retrasado y la situación se ve oscura. Al principio del libro, Bill Peach, un ejecutivo de la compañía, le dice a Alex que su planta tiene tres meses para que sus operaciones sean exitosas y rentables. Su amigo lejano Jonah, que representa al mismo Goldratt, le ayuda a resolver los problemas de su compañía a través de una serie de llamadas telefónicas y reuniones cortas. Un segundo arco de la historia, describe la vida marital de Alex.
El libro explica el rol de los cuellos de botella dentro de un proceso de manufactura, y que además su identificación no solo permite eliminarlos, sino también proporciona la herramienta para controlar y medir el flujo de materiales. Alex y su equipo identifican los cuellos de botella en el proceso, e inmediatamente implementan cambios para aumentar la capacidad.
Les Bandistes sont de jeunes auteurs de bande dessinée plus ou moins mégalos qui ont voulu conquérir le monde entre 2007 et 2009, avant de s'ennuyer et de passer à autre chose.
Introducción al manejo de memoria en el JVMsuperserch
Introducción a los conceptos de memoria en el JVM como las diversas áreas de memoria, el concepto de memoria generacional, promoción temprana; así como una comparativa entre algunos colectores de basura disponibles en el JVM y como se procesa la memoria ocupada.
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2.
Se toca desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en mis anteriores trabajos
Mi clase del curso de Analisis y Diseño de Algoritmos en la Universidad Privada del Norte, donde se da el contexto de la computación paralela como una tendencia irreversible, con énfasis en lo visionado por Herb Sutter (Welcome to the Jungle) y las consideraciones que hay que tener para programar en esa modalidad.
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
Seminario sobre Spring Roo y monitorización con Spring Insight organizado por Paradigma Tecnologico y Javahispano, impartido en Madrid el 14 de octubre de 2010 por Federico Caro
En los últimos años, la forma de desarrollar software ha evolucionado. Nuevos patrones, nuevas arquitecturas y nuevas tecnologías como cloud y microservicios. Pero, ¿cómo desarrollo ahora? ¿Cómo despliego el software? ¿Cómo manejo los nuevos modelos de base de datos? DevOps y DataOps son la respuesta.
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web.
Herramienta de código abierto para probar el rendimiento y la escalabilidad de los servicios web.
Ejecuta pruebas de carga HTTP, que son útiles para la planificación de la capacidad, la evaluación comparativa, análisis y ajuste del sistema.
Autores: Albi Miranda y Derwis Morillo. Revista diseñada para la comprension de la Administracion del Procesador y su relacion con Sistemas Operativos.
Como seleccionar un primer proyecto BPM.
en este documento se dan 10 criterios para seleccionar el proceso candidato mas apropiado para iniciar la implementación de BPM en una organización.
1. Introduccion a las excavaciones subterraneas (1).pdfraulnilton2018
Cuando las excavaciones subterráneas son desarrolladas de manera artesanal, se conceptúa a la excavación como el “ que es una labor efectuada con la mínima sección posible de excavación, para permitir el tránsito del hombre o de
cémilas para realizar la extracción del material desde el
frontón hasta la superficie
Cuando las excavaciones se ejecutan controlando la sección de excavación, de manera que se disturbe lo menos posible la
roca circundante considerando la vida útil que se debe dar a la roca, es cuando aparece el
concepto de “ que abarca,
globalmente, al proceso de excavación, control de la periferia, sostenimiento, revestimiento y consolidación de la excavación
La energía radiante es una forma de energía que
se transmite en forma de ondas
electromagnéticas esta energía se propaga a
través del vacío y de ciertos medios materiales y
es fundamental en una variedad naturales y
tecnológicos
ascensor o elevador es un sistema de transporte vertical u oblicuo, diseñado...LuisLobatoingaruca
Un ascensor o elevador es un sistema de transporte vertical u oblicuo, diseñado para mover principalmente personas entre diferentes niveles de un edificio o estructura. Cuando está destinado a trasladar objetos grandes o pesados, se le llama también montacargas.
2. 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.
4. IBM Software Group | WebSphere software
¿Qué es el Garbage Colector (GC)?
4
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.
6. IBM Software Group | WebSphere software
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.
6
7. IBM Software Group | WebSphere software
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
7
8. IBM Software Group | WebSphere software
Entendiendo el manejo de memoria y memoria fisica
8
9. IBM Software Group | WebSphere software
Fases del GC
Marking
Sweep
Compacting
Reference objects
Final reference processing
JNI weak reference
Heap expansion (30%)
Heap shrinkage (60%)
9
10. IBM Software Group | WebSphere software
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.
10
11. IBM Software Group | WebSphere software
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)
11
12. IBM Software Group | WebSphere software
¿Que pasa a la JVM cuando la se comienza a paginar?
12
13. IBM Software Group | WebSphere software
Objetivo Responsiveness vs Throughput
13
14. IBM Software Group | WebSphere software
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.
14
15. IBM Software Group | WebSphere software
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.
15
16. IBM Software Group | WebSphere software
Mejorar el Performance de una aplicación JAVA
16
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!!
17. IBM Software Group | WebSphere software
Mejorar el Performance JVM
17
Todo afinamiento del GC trae,
consigo mejoras en los
tiempos de respuesta, pero
esto no evita el profiling y
mejora de las aplicaciones.
18. IBM Software Group | WebSphere software
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.
18
19. IBM Software Group | WebSphere software
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?
19
22. IBM Software Group | WebSphere software
Tipos de Garbage Collector (Solo IBM_J9)
22
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.
23. IBM Software Group | WebSphere software
Pistas
23
Switch 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.
24. IBM Software Group | WebSphere software
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
24
26. IBM Software Group | WebSphere software
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.
26
28. IBM Software Group | WebSphere software
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.
28
29. IBM Software Group | WebSphere software
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.
29
31. IBM Software Group | WebSphere software
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.
31
32. IBM Software Group | WebSphere software
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
32
33. IBM Software Group | WebSphere software
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
33
34. IBM Software Group | WebSphere software
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?t
opic=%2Fcom.ibm.rt.doc.10%2Frealtime%2Frt_xoptions_gc_sta
ndard.html
34
35. IBM Software Group | WebSphere software
Configurando Memoria JVM
Máximos posibles
El Heap Size “Correcto”
Heap size fixed vs variable
Heap Size para algoritmos generacionales (gencon)
35
36. IBM Software Group | WebSphere software
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)
36
37. IBM Software Group | WebSphere software
37
El Native Heap, puede ser medido usando,
Svmon(AIX), PerfMon (Windows) , RFm(zOs)
38. IBM Software Group | WebSphere software
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.
38
39. IBM Software Group | WebSphere software
El Heap Size “Correcto”
39
MaxUsed / MaxHeap = 0.7
1.43 * MaxUsed = MaxHeap
40. IBM Software Group | WebSphere software
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.
40
41. IBM Software Group | WebSphere software
Heap Size para algoritmos generacionales
41
44. IBM Software Group | WebSphere software
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.
44