Jul 292011
 

bashSu 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


Popular Posts:

Flattr this!

  5 Responses to “Usare nice con i processi su Linux”

  1. An alternative to changing the nice value is to use a daemon called Trickle (http://nwlinux.co/f8). It is really great at prioritizing applications on a more permanent basis. For instance, a user can make SSH first priority on a given box. This configuration is especially useful in a situation where DDoS attacks are prevalent as SSH has priority over Apache – you can login to adjust settings and so on.

  2. The latest Fedora 15 ignores nice command. I`m not sure if this is Fedora`s fault or maybe the recent kernel has a problem. Anyway it is worth mentioning.
    More here: http://forums.fedoraforum.org/showthread.php?t=266839

  3. […] ” “ Linuxaria: Be nice with your process on Linux […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*