Nice e Renice

()

Cambiare Proprieta’ ai processi

Su linux esiste un sistema per impostare/modificare la priorità dei processi, su cui l’utente può agire, per dare maggiore o minore priorità ai propri processi.
Per esempio state lanciando un backup con un rsync o facendo un tar, ma non volete che questi processi utilizzino tutta la vostra CPU, in questi casi potete fare uso del comando nice.

nice è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che esegue un altro comando modificando il suo valore di nice.

Il valore di nice è un attributo numerico di ciascun processo dei sistemi Unix e Unix-like che è usato dallo scheduler per stabilire quanto tempo di CPU dedicare all’esecuzione del processo. A parità di priorità e di politica di schedulazione, i processi che hanno valori di nice maggiori ottengono in proporzione meno tempo di CPU rispetto a processi che hanno valori di nice minori, e quindi la loro esecuzione procede più lentamente, favorendo gli altri processi.

Per diminuire il valore di nice è necessario disporre dei privilegi dell’amministratore (root), mentre ciò non è necessario per aumentarlo. Tipicamente è possibile diminuire il valore di nice fino a 20 unità rispetto al valore predefinito, o aumentarlo fino a 19 unità: è possibile specificare scostamenti più ampi, ma essi sono automaticamente ricondotti entro i limiti sopra citati.

Una gentilezza (niceness) di -20 è la massima priorità e il 19 o 20 è la priorità più bassa. La niceness di default per i processi è ereditata dal proprio processo genitore, di solito è 0.

Sintassi base
nice -n [priority] [command] [arguments]
Così si può dare a qualsiasi comando un valore di nice la prima volta che si esegue. Se si esegue il comando su un terminale senza dare un comando viene visualizzata il corrente valore di niceness.

Esempi:

# nice
0

# nice -n 19 gunzip /var/log/oldlogs*

Controllo della priorità dei processi in esecuzione
Il modo più semplice per visualizzare la priorità per tutti i processi in esecuzione è quello di usare il comando top, vedrete che c’è una colonna NI, quello è il valore di nice per quel comando.

top

In alternativa (se si conosce il numero del pid) si può controllare il nice di un singolo processo utilizzando il comando ps con la seguente sintassi:

ps -o pid,comm,nice -p [PID]

Cambiare il valore nice di processi esistenti

Come ho scritto il comando nice è utilizzabile solo quando si esegue un comando per la prima volta, ma probabilmente si desidera modificare anche la priorità di un processo esistente, per questo è necessario utilizzare il comando renice

Per modificare la priorità di un processo esistente basta fare renice -n [valore di nice] -p [id processo]

renice -n 10 -p 1234

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?