Translate

sexta-feira, 26 de abril de 2013

Dynamics AX2012 - Compilação.

Olá pessoal, recentemente houve uma "discussão" muito boa referente a copilação do AX2012 no forum de AX da Microsoft. Sugiro que acompanhem a discussão e aproveitem para contribuir com suas experiencias neste tema.

A discussão no forum gerou um post extremamente valioso no blog do Joris de Gruyter. Com a autorização do Joris eu traduzo este post para o nosso idioma!

"
Tenho certeza que a maioria de vocês sabem, tempos de compilação no Dynamics AX 2012 são uma preocupação conforme mais funcionalidades vão sendo adicionadas ao AX. Especialmente em nossos ambientes de testes, que são máquinas (não otimizadoas) virtuais, estamos falando de cerca de 3 horas para AX 2012 RTM / FPK e cerca de 5 horas para R2. Houveram discussões sobre este assunto no Forum Microsoft Dynamics AX, e parece haver grandes diferenças nas experiências de tempos de compilação. Depois de muita discussão com outras pessoas sobre os tema, e chats com as pessoas da Microsoft, eu acho que está bem claro em quais áreas é preciso se concentrar para otimizar os tempos de compilação.

 1) O compilador AX foi originalmente construído quando nem se falava em multi-core. Assim, como resultado, você já deve ter notado que uma compilação utiliza apenas um thread. Com a tendência atual de mais núcleos, mas a uma velocidade mais baixa de clock, uma máquina "mais velha" (tipo de CPU) pode possivelmente ter um melhor desempenho do que uma nova, ou um Desktop pode ser melhor do que um servidor dedicado.
2) A comunicação entre AX e SQL é crítica. A comunicação com o Model Store é crítica ( O AOS recebe o código fonte a partir do Model Store, compila, e coloca de volta os binários no Model Store).
3) O Model Store está no SQL, portanto o SQL tem que executar de forma otimizada.


Para este fim, eu me propus a construir uma das bases de código do nosso cliente (AX 2012 RTM CU3, sem Feature Pack) em uma máquina de compilação "experimental". Esta base de código vem tomando uma média de tempo de compilação de 3 a 3,2 horas a cada vez em nossa AOS virtual conectado a um SQL físico.

A nova configuração? Laptop Dell Latitude E6520 

* Core i7-2760QM CPU @ 2.4GHz, 4 Cores, 8 Logical Processors
* 8 GB memory
* High performance SSD (Samsung 840 Pro), 256GB
* Windows Server 2012, SQL 2012, AX 2012 RTM CU4


Além do hardware (velocidade de clock de 2,4 GHz - o número de núcleos não importa, SSD para maximizar o rendimento SQL), os elementos fundamentais da nossa configuração foram colocar o AOS e o servidor SQL nessa mesma máquina e desabilitar TCP / IP  nos protocolos de servidor do  SQL para que ele use o Shared Memory.

A diferença no tempo de compilação é impressionante. Na verdade, eu executei várias vezes, porque eu pensei que tinha feito algo errado. No entanto, uma vez que este é UM um sistema automatizado usando o TFS, eu sei que os passos, os códigos e tudo o resto são exatamente os mesms, por definição.




Old Build Server

New Build Server
Remove old models
00:00:27

00:00:03
Start AOS
00:01:26

00:00:25
Synchronize (remove old artifacts from DB)
00:06:52

00:05:57
Import XPOs from TFS
00:13:17

00:03:55
Import VS Projects
00:00:29

00:00:11
Import Labels
00:00:22

00:00:08
Synchronize (with new data model)
00:05:42

00:01:55
X++ Compile
02:29:36

00:41:28
CIL Generation
00:13:41

00:05:29
Stop AOS
00:00:10

00:00:03
Export Built Model
00:00:42

00:00:12
Total Build Time
03:14:43

01:00:59

Então, sim, o tempo de compilação caiu para 41 minutos! Agora eu preciso de uma outra máquina para a compilação do R2 :-) vou postar os tempos de compilação do R2 assim que conseguir!


Os dizeres acima foram traduzidos do seguinte link:
http://daxmusings.codecrib.com/2013/04/dynamics-ax-2012-compile-times.html

Todos os creditos do post acima vão para Joris de Gruyter!

Em resumo pessoal, para quem não acompanha o  Forum Dynamics AX, passe a acompanhar, muitas dicas e discussões interessantes estão acontecendo por lá.

Neste caso em especifico, a discução iniciada por Tommy Skaue, que gerou o post acima, pode ser acompanhada aqui.

As dicas em todo este post são de grande utilidade, acredito que nos ajudarão muito nas proximas implementações e atualizações do AX2012!

Muito obrigado ao Joris por me permitir traduzir este post e ao tommy por ter iniciado este assutno no forum!