miércoles, 27 de noviembre de 2013

Mejores tiempos de "build" en Genexus Tilo utilizando el "multi-core"

El proceso de especificación y generación de una base de conocimientos, en resumen, implica que se ejecuten tareas MSbuild que especifican o generan dicha KB.

En Genexus Evolution 1 se incluyó la posibilidad de tener especificación y generación concurrente.
Es decir, comenzar a generar antes de que terminen de especificarse todos los objetos, de este modo en PCs "multi-core" podía estar un "core" especificando y otro "generando" a la vez. Se paralelizó el proceso lo cual produce una ganancia importante de performance.

En Genexus Tilo se introdujo un avance importante en este sentido puesto que se pueden levantar múltiples instancias de especificadores y generadores a la vez. De este modo se paraleliza aun más el proceso de "build" y se aprovecha más aun la potencia de los procesadores "multi-core".

En la opción Tools/Options/Build se puede elegir hasta cuantos especificadores y generadores concurrentes se podrán ejecutar. Así podríamos ver en el task manager algo como:


Donde se ven 4 procesos de MSBuild ejecutando a la vez.
Esto redunda en un mejor aprovechamiento de los "cores" pudiendo reducir el tiempo necesario para el "build" de una KB.

¿Cuánto mejora?

Aun no se han realizado mediciones pero la ganancia es importante, dependiendo de la potencia de la máquina (al usar mas "cores" el cuello de botella puede estar en memoria o el disco), la base de conocimientos, etc.

En la medida que se realicen las pruebas se publicará más información al respecto.

Se están desarrollando otros cambios importantes en el proceso de build que también redundarán en una mejor performance en el mismo.

¿Cuantos especificadores y generadores realmente se ejecutan?

Lo que se configura en las opciones del IDE son "hasta cuantos se ejecutan a la vez", luego depende de la cantidad de cores, de la cantidad de objetos y otros parámetros, la cantidad de instancias que efectivamente se ejecutan.

¿Afecta la performance del IDE?

En principio no porque el IDE ejecuta en su propio "core", aunque obviamente además del "core" estos procesos consumen memoria y disco, con lo cual puede darse "competencia" con el IDE en ese sentido.


¿Qué proceso MSBuild corresponde a generación y qué proceso a especificación?

Eso se puede ver en la command line del propio "task manager", para verlo hay que ir al tab "details" y poner visible esa columna:



 Luego se puede ver que uno de los parámetros del MSBuild es el "SpecifierDaemon" o "GeneratorDaemon" de acuerdo al proceso que esté ejecutando el mismo:



No hay comentarios:

Publicar un comentario en la entrada