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