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

m
fix broken links
m (fix broken links)
 
(11 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Guida da adottare|[[Utente:Ombra|Ombra]]}}
{{Versioni compatibili|Jessie|Testing_2015|Unstable_2015}}
{{Stub}}
 
{{Versioni compatibili|Sid}}
== Introduzione ==
== Introduzione ==


Riga 19: Riga 16:


Per maggiori dettagli tecnici su ''SD'':
Per maggiori dettagli tecnici su ''SD'':
* [http://ck.wikia.com/wiki/SD Con Kolivas Wiki: SD]
* Con Kolivas Wiki: SD<sup>[[#Collegamenti esterni | [8]]]</sup>


Per un po' di storia sulla nascita, l'evoluzione e sulla ''competizione'' con un nuovo scheduler scritto da Ingo Molnar (CFS) inspirato dal successo di ''SD'' potete leggere:
Per un po' di storia sulla nascita, l'evoluzione e sulla ''competizione'' con un nuovo scheduler scritto da Ingo Molnar (CFS) inspirato dal successo di ''SD'' potete leggere:


* [http://lwn.net/Articles/224865/ The Rotating Staircase Deadline Scheduler]
* The Rotating Staircase Deadline Scheduler<sup>[[#Collegamenti esterni | [9]]]</sup>
* [http://lwn.net/Articles/226054/ RSDL hits a snag]
* RSDL hits a snag<sup>[[#Collegamenti esterni | [10]]]</sup>
* [http://lwn.net/Articles/230574/ Schedulers: the plot thickens]  
* Schedulers: the plot thickens<sup>[[#Collegamenti esterni | [11]]]</sup>


;Swap prefetching
;Swap prefetching
Riga 91: Riga 88:
== 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 sulla pagina<sup>[[#Collegamenti esterni | [2]]]</sup> dedicata alle patch; 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 qui<sup>[[#Collegamenti esterni | [3]]]</sup>, mentre i sorgenti da patchare dovrete cercarli tra gli archivi di kernel.org<sup>[[#Collegamenti esterni | [4]]]</sup>.
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 .config
  $ 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 qui<sup>[[#Collegamenti esterni | [5]]]</sup> 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 -bfs --revision 1 --initrd kernel_image</pre>


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):


<pre>$ nice -n 19 time fakeroot make-kpkg --append-to-version -desktop --revision 0.1 kernel_image</pre>
<pre>$ nice -n 19 time fakeroot make-kpkg --append-to-version -bfs --revision 1 --initrd kernel_image</pre>


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 ==


Lo scheduler BFS è stato progettato per esigenze desktop pertanto il numero di impostazioni su cui si può intervenire direttamente è limitato al minimo e nella maggior parte dei casi non è necessario fare cambiamenti per migliorare le prestazioni. <br/>
Lo scheduler BFS è stato progettato per esigenze desktop pertanto il numero di impostazioni su cui si può intervenire direttamente è limitato al minimo e nella maggior parte dei casi non è necessario fare cambiamenti per migliorare le prestazioni. <br/>
Quando lanciamo un processo in Linux questo sarà automaticamente SCHED_NORMAL. Per lanciare processi con altre classi di priorità bisogna usare gli <code>schedtool</code>; inoltre se vogliamo misurare il carico della cpu e i tempi di esecuzione possiamo usare il programma <code>time</code> (opzionale). I pacchetti si trovano nei repository Debian per cui basterà dare un
Quando lanciamo un processo in Linux questo sarà automaticamente SCHED_NORMAL. Per lanciare processi con altre classi di priorità bisogna usare gli <code>schedtool</code>;  


<pre># apt-get install schedtool time</pre>
per lanciare un programma con priorità Idleprio si utilizza un comando del tipo
 
A questo punto, per lanciare un programma con priorità Idleprio si utilizza un comando del tipo


<pre># schedtool -D -e apt-get dist-upgrade</pre>
<pre># schedtool -D -e apt-get dist-upgrade</pre>
Riga 179: Riga 180:


== Links ==
== Links ==
'''''Con Kolivas''''':
===Nel wiki===
* [http://members.optusnet.com.au/ckolivas/kernel/ Homepage delle patch Con Kolivas]
* [http://ck.kolivas.org/faqs/walkthrough.txt Quick walthrough on manually patching to -ck for beginners]
* [http://ck.kolivas.org/faqs/audio_hints Con Kolivas Audio Hints]
 
'''''Kernel''''':
'''''Kernel''''':
* [[Debian Kernel Howto]]
* [[Debian Kernel Howto]]
* [[Esempio configurazione kernel]]
* [[Esempio configurazione kernel]]
* [[Low-latency 2.6 kernel per applicazioni audio realtime]]
 
===Collegamenti esterni===
'''''BFS''''':<br/>
[1] [http://users.tpg.com.au/ckolivas/ Homepage di Con Kolivas]<br/>
[2] [http://users.tpg.com.au/ckolivas/kernel/ Patch ck più recente]<br/>
[3] [http://ck.kolivas.org/patches/ versioni precedenti]<br/>
[4] [http://www.kernel.org/pub/linux/kernel/ archivi kernel.org]<br/>
[5] [http://ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt Configuration FAQ]<br/>
[6] [http://ck.wikia.com/wiki/BFS_FAQ BFS FAQ]<br/>
[7] [http://ck-hack.blogspot.com/ notizie sugli ultimi hack di C.K.]<br/>
 
'''''Vecchio patchset''''':<br/>
[8] [http://ck.wikia.com/wiki/SD Con Kolivas Wiki: SD]<br/>
[9] [http://lwn.net/Articles/224865/ The Rotating Staircase Deadline Scheduler]<br/>
[10] [http://lwn.net/Articles/226054/ RSDL hits a snag]<br/>
[11] [http://lwn.net/Articles/230574/ Schedulers: the plot thickens]<br/>
[12] [http://apcmag.com/why_i_quit_kernel_developer_con_kolivas.htm Con Kolivas: Why i quit]<br/>
 


{{Autori
{{Autori
|Autore= [[Utente:Ombra|Ombra]]<br/>
|Autore= [[Utente:Ombra|Ombra]] 19:03, 26 apr 2015 (CEST) <br/>
(guida originariamente scritta da [[Utente:TheNoise|The Noise]])
(guida originariamente scritta da [[Utente:TheNoise|The Noise]])
|Verificata_da=
|Verificata_da=
Riga 196: Riga 210:
|Numero_revisori=0
|Numero_revisori=0
}}
}}
[[Categoria:Kernel]]
45

contributi