Benvenuti in Ubuntu Tricks

Benvenuti!
Questo blog è stato creato con l'intento di raccogliere e raggruppare informazioni su Linux, in particolare sulla distribuzione Ubuntu. Saranno postati trucchi&consigli, ma anche programmi poco conosciuti che offrono servizi molto utili. Speriamo che questi post possano aiutarvi a farvi scoprire o ri-scoprire il vasto mondo di questo versatile sistema operativo.

Gli Amministratori:
- Noah -

mercoledì 9 maggio 2012

How to: Regolare la priorità dei processi

Oggi descrivo come è possibile modificare il modo in cui il kernel pianifica il context switch dei processi.



Per vedere la priorità di un processo potete utilizzare il comando ps -l oppure il più completo top. Per abitudine utilizzerò anche qui il secondo comando di cui un esempio di output è l'immagine di presentazione del post.

Tra le colonne presenti noi prenderemo in considerazione:
  • PID (process identifier) che è un valore univoco assegnato ad ogni processo per poterlo identificare agilmente
  • PR (priority) indicante la priorità di pianificazione corrente del kernel per un processo
La priorità determina la pianificazione da parte del kernel dell'assegnazione di un tempo maggiore o minore rispetto ad uno standard per l'elaborazione da parte della CPU di quel determinato processo, prima che avvenga il "cambio di contesto" (Context switch).
  • NI (valore nice) indicante il nostro suggerimento allo scheduler del kernel, sarà il valore che andremo a modificare
Per calcolare la priorià effettiva lo scheduler prende il valore presente nella colonna PR e gli somma il valore di NI del processo corrispondente (0 normalmente). Il valore NI è compreso in un intervallo di valori che va da -20 a 19, dove -20 indica la priorità maggiore.

Nell'immagine di presentazione potete notare come tutti i processi hanno priorità 20, ciò significa che il tempo di context switch (cioè il tempo che un determinato processo tiene occupata la CPU) sarà uguale per tutti.

Per modificare la priorità si utilizza il comando renice (per una guida completa digitare man renice da linea di comando):
renice priority pid
dove priority andrà a modificare il valore nella colonna NI del processo indentificato da quel pid.

Come esempio andrò a modificare la priorità del processo Firefox avente pid 2830 (vedi figura) aumentadone la priorità di 2 punti:
sudo renice -2 2830
Ecco il risultato:


Come potete vedere dalla figura il valore nella colonna NI è impostato a -2 e il valore nella colonna PR è conseguentemente calato di 2 punti. Per ripristinare la priorità originaria basterà, in questo caso, digitare
renice 0 2830
N.B. per alzare la prioirà necessitano i permessi di superuser poichè i processi di sistema potrebbero non ricevere abbastanza tempo di elaborazione, mentre ciò non è necessario se la si vuole abbassarla o ripristinarla al valore iniziale!

Questo trucchetto è utile quando si sta eseguendo una elaborazione complicata in background senza che comporti un rallentamento di tutte le funzionalità di sistema.

2 commenti:

  1. Ciao,grazie della guida! molto interessante!Una curiosità: sul mio computer ho pulse audio in esecuzione è ha nice -11 di standard! così la musica non va a scatti!

    RispondiElimina
  2. in effetti anche io ho pulseaudio con nice -11, sinceramente non ci avevo mai fatto caso!

    RispondiElimina