Patch Con Kolivas: incrementare le prestazioni desktop: differenze tra le versioni

Riga 91: Riga 91:
== Installazione ==
== Installazione ==


Le patch <code>-ck</code> possono essere scaricate da http://www.kernel.org, al seguente indirizzo:
{{Box|Nota|per una migliore comprensione delle procedure che seguono, fate rifermineto la guida sul [[Debian Kernel Howto|kernel alla debian-way]]}}


* http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/
Prima di procedere è necessario installare alcuni pacchetti:
<pre> # apt-get install module-init-tools kernel-package libncurses5-dev fakeroot lrzip schedtool time </pre>
gli ultimi due pacchetti sono opzionali, anche se senza <code>schedtool</code> non potremmo usare gran parte delle potenzialità offerte dalle patch, mentre per quanto riguarda <code>time</code>, è utile solo se si vuole misurare la performance.


e si applicano al primo kernel vanilla stabile di ogni serie. Ad esempio l'ultimo kernel stabile è attualmente il 2.6.16.4 ma le patch <code>-ck</code> si applicano al kernel 2.6.16 in quanto includono anche le patch inserite dal 2.6.16 al 2.6.16.4.  
La patch <code>-ck</code> più recente può essere scaricata dal sito di Con Kolivas, al seguente indirizzo:
* http://users.on.net/~ckolivas/kernel/
Sulla stessa pagina troverete il link per scaricare i sorgenti del kernel vanilla. <br/> Se la vostra Debian utilizza una versione precedente rispetto all'ultima release, potrete trovare la patch [http://ck.kolivas.org/patches/ qui], mentre i sorgenti da patchare dovrete cercarli tra gli archivi di [http://www.kernel.org/pub/linux/kernel/ kernel.org].
Attualmente l'ultimo patch set <code>-ck</code> è il <code>4.0-ck1</code>, ed il file patch da scaricare è <code>patch-4.0-ck1.lrz </code>. Di seguito si userà, come esempio, il kernel 4.0 e le patch <code>-ck1</code> per tale kernel.


Attualmente l'ultimo patch set <code>-ck</code> è il [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.16/2.6.16-ck5/ 2.6.16-ck5], ed il file da scaricare e porre in <code>/usr/src/</code> è il seguente:
Spostate i due archivi appena scaricati in una directory nella nostra home, ad esempio in <code>~/src/</code> e scompattate i sorgenti


* [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.16/2.6.16-ck5/patch-2.6.16-ck5.bz2 patch-2.6.16-ck5.bz2]
<pre>$ cd ~/src/
$ tar -xvf linux-4.0.tar.xz</pre>


''Nel seguito si userà, come esempio, il kernel 2.6.16 e le patch <code>-ck5</code> per tale kernel.''
Una volta scompattati i sorgenti possiamo applicare la patch con:


Una volta scompattati i sorgenti del kernel vanilla in <code>/usr/src/</code> si possono patchare con:
<pre>$ cd linux-4.0
 
$ lrzcat ../patch-4.0-ck1.lrz | patch -p1</pre>
<pre>$ cd /usr/src/linux-2.6.16/
$ bzcat ../patch-2.6.16-ck5.bz2 | patch -p1</pre>


Per una questione di ordine conviene rinominare la directory dei sorgenti in modo da rispecchiare la patch usata:
Per una questione di ordine conviene rinominare la directory dei sorgenti in modo da rispecchiare la patch usata:
   
   
<pre>$ cd /usr/src
<pre>$ cd ../
$ mv linux-2.6.16 linux-2.6.16-ck5</pre>
$ mv linux-4.0 linux-4.0-ck1</pre>


È consigliato usare un file di configurazione per il kernel vanilla e dare oldconfig:
Per la configurazione, la strada più semplice è quella di copiare la configurazione funzionante di un kernel di versione simile a quello che state per compilare, ad esempio


<pre> $ cd linux-2.6.16-ck5
<pre> $ cd linux-4.0-ck1
  $ cp /boot/config-2.6.16-vanilla .
  $ cp /boot/config-3.16.0-4-amd64 .
  $ make oldconfig </pre>
  $ make oldconfig </pre>


A meno che non sappiate perfettamente cosa state facendo lasciate tutte le risposte di default alle domande fatte dell'oldconfig.
Rispetto ai kernel standard la patch cambia alcune risposte predefinite in modo da ottenere un sistema adatto a un uso Desktop con bassa latenza, quindi, a meno che non abbiate diverse esigenze, potete lasciare tutte le risposte di default e passare alla compilazione.
Se siete interessati [http://ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt qui] trovate alcuni suggerimenti per configurazioni da abbinare al BFS, a seconda del tipo di computer e dell'uso che si intende farne.


A questo punto è possibile compilare il kernel, ovviamente [[Debian Kernel Howto|alla debian-way]]. Se abbiamo già in esecuzione un kernel <code>-ck</code> possiamo lanciare la compilazione in modalità SCHED_IDLEPRIO:
Una volta terminata la configurazione è possibile compilare il kernel, ovviamente [[Debian Kernel Howto|alla debian-way]]. Se abbiamo già in esecuzione un kernel <code>-ck</code> possiamo lanciare la compilazione in modalità SCHED_IDLEPRIO:


<pre> $ schedtool -D -e time fakeroot make-kpkg --append-to-version -desktop --revision 0.1 kernel_image</pre>
<pre> $ schedtool -D -e time fakeroot make-kpkg --append-to-version -desktop --revision 0.1 kernel_image</pre>
Riga 127: Riga 132:
In questo modo non ci accorgeremo nemmeno della compilazione durante il normale utilizzo interattivo del computer, infatti la compilazione avverrà '''solo''' quando la CPU sarà in idle. Il tempo di compilazione aumenta in maniera impercettibile. Verrà anche stampata la durata della compilazione grazie al comando <code>time</code>.
In questo modo non ci accorgeremo nemmeno della compilazione durante il normale utilizzo interattivo del computer, infatti la compilazione avverrà '''solo''' quando la CPU sarà in idle. Il tempo di compilazione aumenta in maniera impercettibile. Verrà anche stampata la durata della compilazione grazie al comando <code>time</code>.
   
   
Se non abbiamo un kernel <code>-ck</code>, ma un [[kernel]] abbastanza recente (penso dal 2.6.15 in su, ma non sono sicuro) potremo usare la modalità SCHED_BATCH, cambiando semplicemente l'opzione <code>-D</code> con <code>-B</code>. In questo modo la compilazione avrà priorità minore di tutti i processi SCHED_NORMAL. Durante la compilazione il sistema sarà abbastanza responsivo anche se non come nel caso precedente.
Se non abbiamo un kernel <code>-ck</code> potremo comunque usare la modalità SCHED_BATCH, cambiando semplicemente l'opzione <code>-D</code> con <code>-B</code>. In questo modo la compilazione avrà priorità minore di tutti i processi SCHED_NORMAL. Durante la compilazione il sistema sarà abbastanza responsivo anche se non come nel caso precedente.


Ultima possibilità, nel caso abbiate un kernel vecchio o non abbiate installato gli <code>schedtool</code> è quella di lanciare la compilazione con nice 19 (la più bassa priorità di un processo SCHED_NORMAL):
Ultima possibilità, nel caso abbiate un kernel vecchio o non abbiate installato gli <code>schedtool</code> è quella di lanciare la compilazione con nice 19 (la più bassa priorità di un processo SCHED_NORMAL):
Riga 135: Riga 140:
Ovviamente non è necessario compilare ''a bassa priorità'', ma i casi precedenti sono stati riportati come esempio pratico di utilizzo degli <code>schedtool</code> e delle funzionalità delle patch <code>-ck</code>.
Ovviamente non è necessario compilare ''a bassa priorità'', ma i casi precedenti sono stati riportati come esempio pratico di utilizzo degli <code>schedtool</code> e delle funzionalità delle patch <code>-ck</code>.


Per saperne di più sulla compilazione del kernel e la ''Debian way'': [[Debian Kernel Howto]].
Una volta terminanta la compilazione sarà sufficiente acquisire i privilegi di root e installare il nuovo kernel con dpkg:
 
<pre>$ cd ../
# dpkg -i linux-image-4.0.0-ck1-bfs_1_amd64.deb</pre>


== Utilizzo e Tuning ==
== Utilizzo e Tuning ==
45

contributi