Platform Builder : compilazione parallela di Windows Embedded Compact su più “core” della CPU

Il sistema di build di Platform Builder è abbastanza complicato ma nello stesso tempo anche estremamente potente. Per poter risparmiare del tempo prezioso durante la compilazione della propria immagine del sistema operativo, è necessario conoscerlo nei minimi dettagli in modo da evitare operazioni inutili. Inoltre, esistono una serie di “trucchi” che ci permettono di renderlo molto più veloce. Tra questi c’è la possibilità di sfruttare la compilazione su più “core” della nostra CPU, considerando che tutti i PC moderni hanno ormai dai 2 “core” in su.

La chiave di questa possibilità è la variabile d’ambiente BUILD_MULTIPROCESSOR, il cui significato può essere interpretato in maniera sbagliata se non si leggesse attentamente la relativa documentazione. Erroneamente, si potrebbe pensare che impostandola a 0, la compilazione su più “core” venga disabilitata e viceversa attivata impostandola ad 1. Non è assolutamente così !

Facendo riferimento alla documentazione su MSDN, impostando il valore a 0, si lascia al sistema di build il compito di rilevare in automatico il numero di “core” della CPU e di utilizzarli tutti per la compilazione creando un opportuno numero di thread; viceversa, un numero da 1 ad N imposta esplicitamente il numero di thread da utilizzare.

Per fortuna, il valore 0 è quello di default, per cui in molti casi non ci dobbiamo preoccupare di modificarlo per avere il massimo delle performance in compilazione. Inoltre, seppure volessimo modificarla, è prevista un’opportuna voce di menu in Visual Studio che troviamo inTools –> Options –> Platform Builder.

Tools

Per evidenziare la differenza, ho utilizzato una macchina virtuale (con Platform Builder per Windows Embedded Compact 2013 installato in Visual Studio 2012) con 4 core. La prima volta ho compilato la mia immagine con BUILD_MULTIPROCESSOR = 1 ed il risultato è una CPU che non viene sfruttata oltre il 50%.

BUILD_MULTIPROCESSOR_1

La seconda volta ho compilato utilizzando BUILD_MULTIPROCESSOR = 0 (default) ed il risultato è una CPU sfruttata fino al 100%.

BUILD_MULTIPROCESSOR_0

In conclusione, è fondamentale conoscere una serie di impostazioni (talvolta nascoste) che il Platform Builder ci mette a disposizione per poter eseguire in tempi sempre più rapidi le compilazioni delle nostre immagini !

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s