Header Ads Widget

Ticker

6/recent/ticker-posts

¿Qué tan rápido es Java 15?

 Java 15 se lanzó el 15 de septiembre de 2020 y ha prometido traer consigo algunos ajustes de rendimiento en sus recolectores de basura G1GC y ParallelGC.

¿Qué significa para OptaPlanner ? ¿Se pueden obtener beneficios al actualizar de JDK11 a JDK15? En 2019, descubrimos que ParallelGC funciona mejor para OptaPlanner. ¿Sigue siendo así un año después? ¡Pongámoslo a prueba!

Este artículo es un seguimiento de nuestros puntos de referencia de comparación de rendimiento de Java 11 y Java 8 .

Metodología de referencia

Para ejecutar el punto de referencia usamos:

  • Una máquina estable sin otros procesos exigentes computacionales en ejecución y con Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads)128 GiBmemoria RAM, corriendo RHEL 8 x86_64.
  • Tanto G1 como Parallel GC para ambas versiones de Java para comparar el impacto de la recolección de basura. Ejecutado org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkAppcon los parámetros -Xmx3840M -server -XX:+UseG1GC-Xmx3840M -server -XX:+UseParallelGCrespectivamente. Los resultados presentados en este blog representan los valores promedio tomados de 10 iteraciones de cada combinación de recolector de basura y JDK.
  • Ambos OpenJDK 11 versión "11.0.6" OpenJDK Runtime Environment 18.9 (compilación 11.0.6 + 10-LTS) OpenJDK 64-Bit Server VM 18.9 (compilación 11.0.6 + 10-LTS, modo mixto)
  • Ambos OpenJDK 15 versión "15.0.1" OpenJDK Runtime Environment 18.9 (compilación 15.0.1 + 9-LTS) OpenJDK 64-Bit Server VM 18.9 (compilación 15.0.1 + 9-LTS, modo mixto)
  • OptaPlanner 7.44.0.Final
  • Resolver un problema de planificación no implica E / S (excepto unos pocos milisegundos durante el inicio para cargar la entrada). Una sola CPU está completamente saturada. Crea constantemente muchos objetos de corta duración y el GC los recopila posteriormente.
  • Cada ejecución resuelve 11 problemas de planificación con OptaPlanner. Cada problema de planificación se ejecuta durante 5 minutos y comienza con un calentamiento de JVM de 30 segundos que se descarta.
  • Los puntos de referencia miden el número de puntuaciones calculadas por segundo. Más alto es mejor. Calcular una puntuación para una solución de planificación propuesta no es trivial: implica muchos cálculos, incluida la comprobación de conflictos entre cada entidad y todas las demás entidades.

Resumen ejecutivo

Con Java 15, la mejora media es del 11,24% para G1 y del 13,85% para Parallel GC. La diferencia entre los dos recolectores de basura que se ejecutan en JDK 15 es un 10.05% inclinado a favor de Parallel GC. Para obtener más información sobre la diferencia entre varios algoritmos de GC, consulte el siguiente artículo que compara el rendimiento de los recolectores de basura de Java .

Parallel GC sigue siendo el GC preferido para usar con OptaPlanner, ya que el rendimiento sigue siendo el factor más relevante cuando se trata de la recolección de basura.

Resultados

Java 11 frente a Java 15

 Equilibrio de la nubeReasignación de máquinaProgramación de cursosProgramación de exámenesLista de enfermerasTorneo itinerante
JDK200c800cB1B10c7c8s2s3m1mh1nl14
JDK1171,52467,266253.03737,3465.8417.19310,6007.0622.5702,3591.806
JDK1572,28570,786285,66837,3718.40510.04912,3828,2052,9522.7301,997
Diferencia en %)1.065.2312,90,0713.4216,8516,8116.1914,8615,7310,58
Promedio (en%)11.24
Tabla 1. Recuento de cálculos de puntuación por segundo con G1GC
 Equilibrio de la nubeReasignación de máquinaProgramación de cursosProgramación de exámenesLista de enfermerasTorneo itinerante
JDK200c800cB1B10c7c8s2s3m1mh1nl14
JDK1176,60076,954296,10749,9376.2447.66612,3687,9042,9412,7292.090
JDK1591,13187,565301,98148,5187.3939.49613,9648,9633,5703,2942,295
Diferencia en %)18,9713,791,98-2,8418.4023,8712,9013.4021.3920,709,81
Promedio (en%)13,85
Tabla 2. Recuento de cálculos de puntuación por segundo con ParallelGC

GC paralelo frente a GC G1 en Java 15

 Equilibrio de la nubeReasignación de máquinaProgramación de cursosProgramación de exámenesLista de enfermeras .Torneo itinerante
Recolector de basura200c800cB1B10c7c8s2s3m1mh1nl14
JDK15 G1GC72,28570,786285,66837,3718.40510.04912,3828,2052,9522.7301,997
JDK15 ParallelGC91,13187,565301,98148,5187.3939.49613,9648,9633,5703,2942,295
Diferencia en %)26.0719.165.4022,9710,3911.4911.338.4617.3117.1212,98
Promedio (en%)10.05
Tabla 3. Comparación del recuento de cálculos de puntuación por segundo en JDK15 con ParallelGC y G1GC en uso

Conclusión

En conclusión, vale la pena considerar el rendimiento obtenido en la versión JDK15 con respecto a OptaPlanner. Además, el recolector de basura preferido para usar sigue siendo ParallelGC, cuyo rendimiento es incluso mejor en comparación con G1GC que en nuestra comparación de rendimiento JDK anterior .

Publicar un comentario

0 Comentarios