Microsoft Dynamics AX 2012 R2 AxBuild.exe

!
Warning: This post is over 365 days old. The information may be out of date.

Cuando nos enteramos de las novedades del reciente Cumulative Update 7 para Microsoft Dynamics AX 2012 R2, creo que como la mayoría de técnicos cercanos a AX, me puse inmediatamente a hacer alguna prueba con la nueva utilidad AxBuild. No es porque fuera la única novedad, pero sin ninguna duda fue una novedad muy esperada y esperanzadora para reducir los tiempos de compilado de la aplicación que se habían disparado desde el lanzamiento de la R2 (llevamos tiempo comentándolo).

Para entender esta utilidad y cómo es capaz de mejorar tanto el rendimiento hay que tener presentes algunos conceptos:

  • El servicio que corre el AOS es un servicio de 64 bits. El cliente de AX es una aplicación de 32 bits.
  • Hasta ahora, el compilado de X++ y la validación de los objetos del AOT se ejecutaba en el cliente. Así sigue siendo si ejecutamos el compilador desde el cliente, como venimos haciendo desde siempre.
  • Estos dos puntos anteriores nos muestran un cuello de botella, primero por el tráfico entre el cliente y servidor de todos los objetos para poder compilarse, y segundo por la merma de rendimiento que supone realizar todo el proceso en una aplicación de 32 bits, con sus limitaciones en cuanto al uso del procesador y la memoria.

Esta nueva utilidad AxBuild lo que nos permite es, en primer lugar eliminar totalmente al cliente del proceso de compilado (eliminando la parte de 32 bits), y por otro lado lanzar tantos procesos de AOS como sea posible para aprovechar todos los procesadores de la máquina. Por defecto, el proceso lanza 1.4 procesos por cada procesador disponible en el servidor, aunque este número se puede configurar.

AxBuild.exe - Rendimiento

En mi caso, mi entorno de pruebas no es una máquina servidor sino un equipo de trabajo de escritorio, bastante potente, pero de escritorio al fin y al cabo (AMD Athlon II X4 640 con 16 GB de RAM, de los cuales asignados a la máquina 6 cores y 12 GB de memoria).

AxBuild.exe - Workers

En este entorno he reducido el tiempo total de compilado de una aplicación recién instalada de unos 30 min (dejando la configuración por defecto) hasta 20 min. configurando exactamente una tarea por procesador, lo que en cualquiera de los dos casos es una mejora notable teniendo en cuenta las varias horas que tardaba anteriormente, y casi un dia entero antes de instalar el hotfix KB2844240, que sigue siendo necesario aunque ya viene incluido en los últimos RU.

AxBuild.exe - Result

Sin duda este tiempo puede mejorarse en un equipo servidor optimizado para el compilador, tal como ya han hecho otros compañeros:

Pensaba realizar algunas pruebas más, compilando aplicaciones anteriores y optimizando el servidor, pero debido a la caída del blog durante esta semana no he tenido tiempo y otros compañeros se me han adelantado, así que recomiendo encarecidamente la lectura de estos dos artículos:

También es recomendable la documentación oficial sobre la utilidad donde se explican las interioridades y todos sus parámetros: