
Kernel: compilazioni più veloci con le CPU multicore
La maggior parte dei computer
di ultima generazione sono
basati su architetture multi core, addirittura,
multi processore (spesso anche
questi multi core), chiamate in linguaggio
tecnico SMP (Symmetric
MultipProcessing). L'obiettivo principale
di sistemi così composti è, ovviamente,
offrire prestazioni più elevate.
Spesso, però, tanta potenza non viene
adeguatamente sfruttata perché le
applicazioni vengono sviluppate prendendo
come punto di riferimento architetture
single core mono processore.
Per fortuna, questo non è il caso
del tool che si occupa della compilazione
del kernel Linux. In questo caso
specifico, infatti, l'intera procedura può
essere suddivisa in singoli task (processi,
operazioni), che possono poi
essere eseguiti su processori o core
differenti riducendo così (ed anche di
molto) il tempo necessario alla compilazione:
operazione che, in particolare
per quanto riguarda il kernel, in
genere richiede un tempo relativamente
lungo. Questo tipo di compilazione,
che possiamo definire multithread è
anche facile da mettere in atto: basta,
infatti, passare la direttiva -j al comando
make, seguita dal numero di thread
che si vogliono avviare. Una buona
regola è quella di assegnare due
thread per ogni core (CPU) presente
nel sistema. Ad esempio, in presenza
di un' architettura a quattro core (quad
core) il comando diventa quello seguente:
make -j 8. Se, invece, la memoria
scarseggia è possibile impostare
i thread da eseguire uguali al numero
di CPU + 1. Attenzione, però, a
non dimenticare di specificare il valore
corretto altrimenti in questo caso il
sistema di make eseguirà un thread
per ogni sotto cartella presente nel
kernel, facendo diminuire vistosamente
le prestazioni della macchina (a meno
di disporre di quantità elevatissime
di memoria RAM), rendendo il sistema
praticamente inutilizzabile già dopo
pochi secondi.