Se si dispone di un dual core o una macchina con più processori, allora potete compilare i vostri programmi molto più velocemente su una macchina a singolo processore. Vi mostrerò come è possibile compilare il kernel Linux sulla propria macchina Debian due volte più veloce, impostando il livello di concorrenza.

Per esempio, in un mio precedente post abbiamo visto come misurare la quantità di tempo di un particolare programma necessario per eseguire. In questo esempio, abbiamo visto ci sono voluti circa 10 minuti per compilare un kernel personalizzato 2.6.28 su una Anthlon macchina Dual core AMD64:

# time make-kpkg –append-to-version=-test kernel_image

real 10m58.707s
user 9m38.700s
sys 1m12.013s

Tuttavia, in questo esempio, non ero in modo efficiente utilizzando la potenza di entrambi i processori. Ho semplicemente dato il comando standard "make-kpkg" per compilare il kernel.

Ora vediamo come possiamo sfruttare le nostre macchine dual-core e ci risparmiare tempo prezioso.

# set CONCURRENCY_LEVEL=2
# export CONCURRENCY_LEVEL=2
# time make-kpkg –append-to-version=-test kernel_image

e qui viene il bello - i risultati:

real 5m28.433s
user 4m18.320s
sys 1m13.276s

Come possiamo vedere dai risultati di cui sopra, siamo stati in grado di compilare lo stesso kernel sulla stessa macchina nella metà del tempo - circa 5 minuti.

Come facciamo a scoprire quale numero CONCURRENCY_LEVEL?

Alcuni dicono che si dovrebbe impostare il livello di: Numero di processori nella macchina + 1 e alcuni dicono che si dovrebbe impostare per: numero di processori nel computer. Io personalmente uso il più tardi.

Per scoprire il numero di processori in macchina, dare il seguente comando:

# grep -c ^processor /proc/cpuinfo
2

e quindi è possibile impostare il livello di concorrenza a tutto ciò che è l'output del comando precedente. Nel mio caso è "2".

Ora, cosa succede se si è utilizzato per compilare i vostri programmi / kernel Linux con il classico comando "make" e si desidera utilizzare il livello di concorrenza. In questo caso è possibile utilizzare la semplice flag "-j" come questo:

# make -j2 bzImage

Spero che questo vi aiuterà a risparmiare un po 'di tempo.

Be Sociable, Share!