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

Riga 79: Riga 79:
; SCHED_BATCH : questa priorità è stata introdotta dal kernel 2.6.16 e viene usata per processi non interattivi (batch). I processi di questa classe avranno priorità inferiore a qualsiasi processo SCHED_NORMAL.
; SCHED_BATCH : questa priorità è stata introdotta dal kernel 2.6.16 e viene usata per processi non interattivi (batch). I processi di questa classe avranno priorità inferiore a qualsiasi processo SCHED_NORMAL.


; SCHED_FIFO: usata per processi realtime. Un processo SCHED_FIFO avrà priorità superiore ad ogni altro processo (anche SCHED_NORMAL con nice -20). Normalmente processi con tali privilegi possono essere lanciati solo da root a meno di non usare [[Low-latency_2.6_kernel_per_applicazioni_audio_realtime#Modalit.C3.A0_realtime_e_realtime_scheduling|particolari tecniche]] per permettere anche a normali utenti di eseguire applicazioni realtime. Non c'è limite di tempo all'impegno della CPU da parte di questi processi che possono rimanere in esecuzione fin quando un processo con priorità più alta non assume il controllo della CPU. In questo caso il processo che perde il controllo si posiziona in cima alla lista dei processi in attesa (FIFO) con la stessa priorità. I processi all'interno di questa classe possono avere una priorità statica da 0 (''minima'') a 99 (''massima'').
; SCHED_FIFO: usata per processi realtime. Un processo SCHED_FIFO avrà priorità superiore ad ogni altro processo (anche SCHED_NORMAL con nice -20). Normalmente processi con tali privilegi possono essere lanciati solo da root: <!-- a meno di non usare [[Low-latency_2.6_kernel_per_applicazioni_audio_realtime#Modalit.C3.A0_realtime_e_realtime_scheduling|particolari tecniche]] per permettere anche a normali utenti di eseguire applicazioni realtime.--> non c'è limite di tempo all'impegno della CPU da parte di questi processi che possono rimanere in esecuzione fin quando un processo con priorità più alta non assume il controllo della CPU. In questo caso il processo che perde il controllo si posiziona in cima alla lista dei processi in attesa (FIFO) con la stessa priorità. I processi all'interno di questa classe possono avere una priorità statica da 0 (''minima'') a 99 (''massima''). <br/>Bisogna fare attenzione se si utilizzano processi di questo tipo: infatti, in base al funzionamento appena descritto, lanciando un processo FIFO con massima priorità, può accadere di vedere esclusi tutti gli altri processi (inclusa la propria shell) dall'utilizzo della cpu.


; SCHED_RR: usata anch'essa per processi realtime. Questa politica di priorità funziona in maniera simile a SCHED_FIFO ma è di tipo Round Robin anziché FIFO. Per i processi schedulati con questa politica viene assegnato un intervallo di tempo (Time Quantum) durante il quale il processo impegna la CPU. Scaduto il tempo, il processo viene messo in coda alla lista dei processi eseguibili con la sua stessa priorità.
; SCHED_RR: usata anch'essa per processi realtime. Questa politica di priorità funziona in maniera simile a SCHED_FIFO ma è di tipo Round Robin anziché FIFO. In pratica ai processi schedulati con questa politica viene assegnato un intervallo di tempo (Time Quantum) durante il quale il processo impegna la CPU. Scaduto il tempo, il processo viene messo in coda alla lista dei processi eseguibili con la sua stessa priorità. Il vantaggio di questa policy rispetto alla precedente è che RR è meno soggetta al problema della ''starvation'', situazione in cui gran parte delle risorse sono dedicate a un solo processo, rallentando o bloccando l'esecuzione di tutti gli altri.


Le patch <code>-ck</code> introducono due ulteriori livelli:
Le patch <code>-ck</code> introducono due ulteriori livelli:


; SCHED_ISO : questa è la priorità chiamata ''soft realtime''. Infatti i processi di questa classe avranno priorità superiore ai processi SCHED_NORMAL ma non sono necessari i privilegi di root per eseguire programmi con questa priorità. Potremmo impostare ad esempio il nostro player audio preferito su SCHED_ISO, e non importa quanto sia carico il sistema non avremo mai salti nell'audio.
; SCHED_ISO : questa è la priorità chiamata ''soft realtime''. Infatti i processi di questa classe avranno priorità superiore ai processi SCHED_NORMAL ma non sono necessari i privilegi di root per eseguire programmi con questa priorità. Potremmo impostare ad esempio il nostro player audio preferito su SCHED_ISO, e non importa quanto sia carico il sistema non avremo mai salti nell'audio. Se si eseguono contemporaneamente più processi SCHED_ISO, questi si alterneranno seguendo una politica di tipo Round-Robin, in modo da evitare il problema della ''starvation''.


; SCHED_IDLEPRIO: questa classe di processi viene eseguita solo quando il processore è in IDLE. Potremo lanciare compilazioni di kernel, aggiornamenti di sistema, pesanti cron jobs usando questa priorità e non noteremo il benché minimo degrado delle prestazioni durante il nostro utilizzo interattivo.
; SCHED_IDLEPRIO: questa classe di processi viene eseguita solo quando il processore è in IDLE. L'idea è quella di consentire l'esecuzione in background di task a priorità molto bassa, senza alcun impatto sugli altri processi avviati dall'utente. Potremo lanciare compilazioni di kernel, aggiornamenti di sistema, pesanti cron jobs usando questa priorità e non noteremo il benché minimo degrado delle prestazioni durante il nostro utilizzo interattivo. In alcuni casi particolari (sospensione in ram, processo in attesa di I/O, ecc) lo scheduler è in grado di riassegnare temporaneamente a questi processi la priorità SCHED_NORMAL, in modo da evitare che le risorse di sistema siano utilizzate senza limiti di tempo e in modo indesiderato.
 
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>. Il pacchetto è presente nei repository di Sid e Lenny.
 
<pre># apt-get install schedtool</pre>
 
''(è indicato per <code>Sid</code> ma va benissimo anche per <code>Etch</code>)''
 
Ecco alcuni esempi:
 
<pre># schedtool -D -e apt-get dist-upgrade # aggiornare in modalità SCHED_IDLEPRIO
 
# schedtool -I -e xmms                # xmms in modalità SCHED_ISO
 
# schedtool -I $$                      # trasforma la shell corrente in SCHED_ISO</pre>
 
Per ulteriori informazioni rimando alla semplice e chiara pagina: <code>man schedtool</code>


== Installazione ==
== Installazione ==
45

contributi