Se usate una distribuzione di GNU/Linux, e se siete in grado di compilare il vostro Kernel, in questa pagina troverete alcune modifiche che ho apportato al mio Kernel, e uno script per facilitare le modifiche alla configurazione del Kernel, e la compilazione.
Vai a:
Introduzione
Configurazione default
Uso script
Performance
Codice sorgente
Premetto col dire che io uso la distribuzione Gentoo Linux arrow_forward — è una distribuzione di GNU/Linux in cui tutti i pacchetti (programmi) vanno compilati dal codice sorgente, piuttosto che usare pacchetti binari pre-compilati da terzi, che non possono essere configurati. Questo approccio permette all'utente di scegliere quali parti del proprio sistema compilare, e quali pacchetti specifici installare, in modo tale da rendere possibili configurazioni che usano pochissime risorse (anche meno di 100MB di RAM!), totalmente funzionanti e molto efficienti. Infatti, come avrete ben capito, è anche possibile configurare il proprio Kernel per poi compilarlo in un secondo momento. Sul mio laptop ThinkPad T440p, uso il Kernel pf-sources arrow_forward, che include le patch del Kernel Gentoo (genpatches), e molte altre patch che permettono al kernel di operare in maniera più rapida.
Questo Kernel viene aggiornato regolarmente, con supporto continuo per il mio laptop, ThinkPad T440p, rimuovendo quindi funzionalità non necessarie, come NUMA, NVIDIA, AMD, e così via. In questa guida vedrete che bisogna modificare alcune impostazioni, come la cartella in cui è contenuta la sorgente del Kernel, ecc. In più, se usate configurazioni diverse dalla mia (esempio: usate un computer diverso dal mio ThinkPad), bisognerà rivedere la configurazione del Kernel, specialmente il numero massimo di CPU (impostato a 8), le GPU massime (impostato a 2), ecc.
Assicuratevi di aver clonato la repository:
Scegliete una versione del Kernel da compilare, secondo le versioni disponibili. In questo esempio, andrò a compilare la versione del Kernel 5.19_p1-pf:
Anche se non avete questa versione precisa, è possibile modificare lo script per includere la versione precisa; in questo caso uso l'editor di testo vim, ma potete usarne uno qualsiasi:
Per modificare la versione, osservate le seguenti variabili:
KVER contiene la versione primaria del Kernel (5.19), mentre PVER contiene la versione delle patch (_p1-pf). Insieme vanno a formare KERNVER, la versione completa del Kernel (quindi 5.19_p1-pf). Ad esempio, se la vostra versione personalizzata avesse la stessa versione primaria del Kernel (5.19), ma una versione di patch diversa, ad esempio _mykernel, allora dovrete impostare le variabili nel seguente modo:
Nello script, build.sh, è presente una variabile, ARCHVER. Questa variabile contiene un numero da 1 a 41; ogni numero rappresenta una famiglia di processore diversa. Sempre nello stesso file, è presente una lista che spiega quale numero utilizzare, in base alla famiglia del processore.
Nella mia configurazione, questa variabile è impostata nel seguente modo:
ARCHVER è impostato a 24 per il fatto che 24 rappresenta la famiglia di processori Intel Haswell:
Vi consiglio di cambiare questo numero, perchè l'impatto sulla performance è notevole. Ecco la lista completa:
È una buona pratica controllare la configurazione del Kernel prima di compilarlo. Per fare ciò, lo script build.sh rende possibile la modifica della configurazione, eseguendo make menuconfig nella directory in cui è presente il Kernel, con l'opzione di copiare quella di default, o senza copiarla, per usare il proprio file di configurazione.
Assicuratevi di avere i permessi di amministratore prima di eseguire questo comando; se non siete amministratori, ponete all'inizio del comando sudo oppure doas, in base a quale usate.
dangerous Se non avete capito cosa c'è scritto qui sopra, interrompete immediatamente la configurazione del Kernel, per non rischiare di rendere il vostro sistema inutilizzabile. Anche se il rischio non è elevato, è meglio prevenire ulteriori problemi. Continuate a vostro rischio e pericolo.
warning Ricordatevi di salvare/copiare il file .config al termine della configurazione!
Dopo aver applicato le ottimizzazioni CPU e aver rincontrollato la configurazione del Kernel, È tempo di scegliere le impostazioni per migliorare notevolmente la performance. Ecco la lista delle opzioni:
flag Flag corta
Flag lunga
Descrizione
Dopo aver scelto le flag da applicare, e dopo aver scelto se copiare il file .config con la flag "-c", siete pronti per compilare il Kernel.
Per stabilire quale fosse il kernel più performante, ho eseguito 4 compilazioni con flag diverse, usando la stessa configurazione del Kernel. Questi test sono stati eseguiti sul mio laptop, ThinkPad T440p, con CPU Intel Core i7-4700MQ, 8GB RAM, Kernel Gentoo Linux 5.16.0-pf2. Per ottenere il Kernel più performante, ho usato ogni singolo Kernel con il programma XMRig, eseguendolo per 5 minuti, e vedendo l'hashrate massimo. Lista compilazioni, dalla più performante alla meno performante:
settings Impostazioni
schedule Tempo compilazione
Max H/s
Matematica Veloce non sicura, Patch Clear Linux, Patch incluse
7m, 7s
1715
Matematica Veloce non sicura, Graphite, Patch Clear Linux, Patch incluse
7m, 3s
1500
Patch Clear Linux, Patch incluse
7m
1463
Patch incluse
7m
1460
Il codice sorgente di questo Kernel è disponibile sulla repository Github arrow_forward