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

Vai alla navigazione Vai alla ricerca
nessun oggetto della modifica
Nessun oggetto della modifica
Riga 151: Riga 151:


Per saperne di più sulla compilazione del kernel e la ''Debian way'': [[Debian Kernel Howto]].
Per saperne di più sulla compilazione del kernel e la ''Debian way'': [[Debian Kernel Howto]].
== 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/>
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
<pre># apt-get install schedtool time</pre>
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>
in questo modo ad esempio eseguiremo un aggiornamento del sistema in background. 
Invece il comando che segue trasforma la shell corrente in SCHED_ISO
<pre>$ schedtool -I $$  </pre>
in questo modo tutti i programmi avviati con questa shell avranno priorità sched-iso e si alterneranno nell'utilizzo della cpu alla frequenza data dall' ''rr_interval''.<br/>  L'intervallo di Round Robin è impostato di default a 6ms e può essere liberamente modificato scrivendo nel file <code>/proc/sys/kernel/rr_interval</code>; i valori accettati variano da 1 a 1000 millisecondi, ad esempio per impostare il valore a 100ms
<pre># echo 100 > /proc/sys/kernel/rr_interval </pre>
Con valori bassi migliora la latenza e cala il throughput, e vice versa. Alcune sperimentazioni hanno mostrato che aumentare l'rr_interval può migliorare il throughput fino a 300ms, mentre per valori superiori non ci sono ulteriori benefici. Inoltre bisogna tenere presente che l'accuratezza di questo intervallo è limitata dalla frequenza HZ del kernel, pertanto il valore di rotazione deve essere coerente col timer frequency impostato nella configurazione (in breve per valori dell'rr_interval bassi è necessaria una frequenza elevata).
Se si vuole eseguire una sola applicazione ISO per volta da una normale shell basterà dare un
<pre>$ schedtool -I -e amarok</pre>
questo farà partire amarok con priorità SCHED_ISO, in modo che, se necessario, possa interrompere qualsiasi task con priorità NORMAL o inferiore. Tuttavia siccome la priorità ISO è acccessibile ai normali utenti è stato stabilito un limite alle risorse utilizzabili da questi processi, in termini di percentuale di cpu disponibile sul pc; su un sistema multi-cpu il limite vale per il totale e non per ogni singola cpu. Il valore della cpu impegnata da un processo è calcolato come media mobile ogni 5 secondi e se un processo ISO utilizza più risorse di quelle prestabilite viene automaticamente rischedulato con priorità SCHED_NORMAL.<br/> La precentuale massima di cpu utilizzabile è impostata nel file <code>/proc/sys/kernel/iso_cpu</code> e il suo valore di default è 70%. Questo valore può essere liberamente modificato, a seconda delle esigenze, in un range da 0 a 100; impostare un valore di 100 significa dare a tutti gli utenti accesso alla policy RR, mentre un valore di 0 impedisce l'esecuzione di un qualsiasi
processo soft-realtime. <br/>
Per modificare il limite, ad esempio portarlo a 85, basta un
<pre> # echo 85 > /proc/sys/kernel/iso_cpu </pre>
Anche se per avviare un processo ISO non sono necessarie le credenziali di root, per garantire il mantenimento della priorità impostata dall'utente durante tutta la vita del processo, è necessario essere root per cambiare nuovamente la priorità al processo ISO mentre è già in esecuzione. Quindi, per  esempio, se vogliamo reimpostare a SCHED_NORMAL amarok dovremo dare un
<pre> # schedtool -N `pidof amarok` </pre>
Infine è bene tenere presente che anche con le <code>patch ck</code> le priorità FIFO e RR sono accessibili solo a utenti coi privilegi di root e che lo scheduler BFS è progettato in modo da assegnare automaticmente la priorità ISO a qualsiasi applicazione che richiede priorità Sched_FIFO o Sched_RR senza avere privilegi necessari.
Il programma schedtool offre anche altre interessanti funzionalità; per maggiori dettagli <code>man schedtool</code>.


== Links ==
== Links ==
45

contributi

Menu di navigazione