Come impostare le priorità del processo con nice and renice su Linux

I comandi nice e renice ti consentono di mettere a punto il modo in cui il kernel tratta i tuoi processi regolando le loro priorità. Leggi questo tutorial per imparare a usarli in sistemi operativi Linux e Unix come macOS.

È tutta una questione di processo

All’interno del tuo computer Linux o Unix, ci saranno molti processi in esecuzione anche prima di avviare l’applicazione che desideri utilizzare. La maggior parte di questi processi sono elementi vitali di Linux stesso o processi di supporto per l’ambiente desktop grafico. C’è molto da fare dietro le quinte. Naturalmente, ci sono solo così tante risorse di sistema e tempo di CPU da utilizzare. Il kernel Linux è il controller per tutti questi processi.

È il kernel che deve decidere quali processi attirare l’attenzione e le risorse in questo momento e quali devono attendere. Il kernel si destreggia continuamente tra processi e priorità per garantire che il computer funzioni nel modo più fluido possibile e che tutti i processi ricevano la quota appropriata. Alcuni processi ricevono un trattamento preferenziale. Sono così importanti per il funzionamento generale del computer che le loro esigenze devono venire prima, ad esempio, del tuo browser.

Il bel valore

Uno dei criteri utilizzati per determinare come il kernel tratta un processo è il buon valore. Ogni processo ha un buon valore. Il valore accettabile è un numero intero compreso tra -19 e 20. Tutti i processi standard vengono avviati con un valore gradevole pari a zero.

Il trucco qui è che più alto è il valore piacevole, più piacevole è il tuo processo per gli altri processi. In altre parole, un buon valore alto dice al kernel che questo processo è felice di aspettare. Un numero negativo è l’opposto di essere gentili. Più grande è il valore positivo negativo, più egoista è il processo. Sta cercando di ottenere più tempo possibile dalla CPU, senza riguardo per gli altri processi.

Possiamo usare il comando nice per impostare il valore nice quando un file viene avviato il processo e possiamo usare renice per regolare il valore piacevole di un processo in esecuzione.

Il bel Comando

Possiamo usare il comando nice per regolare il valore nice di un programma mentre lo lanciamo. Questo ci permette di aumentare o diminuire la priorità data al processo dal kernel, rispetto agli altri processi.

Supponiamo che un programmatore abbia scritto un programma chiamato ackermann. Questo calcola Funzioni di Ackerman. Richiede molta CPU e memoria. Il programmatore può avviare il programma con il seguente comando:

./ackermann

Possiamo usare il comando top per visualizzare il programma in esecuzione.

top

top in esecuzione in un terminale

Possiamo vedere i dettagli del programma ackermann in alto. Il bel valore è la figura nella “colonna NI”. È impostato a zero come ci aspetteremmo.

Riavvialo e questa volta rendilo meno impegnativo. Imposteremo un bel valore di 15 per il programma ackermann come segue. Digita nice, uno spazio, -15, un altro spazio e quindi il nome del programma che desideri avviare. Nel nostro esempio, il nostro programmatore fittizio utilizza ./ackermann.

nice -15 ./ackermann

bel comando 15 nella finestra del terminale

Prendi nota, il “-15” non è un quindici negativo. È positivo quindici. Il “-” è necessario per indicare a nice che stiamo passando un parametro. Per indicare un numero negativo è necessario digitare due caratteri “-“.

Se ora ricominciamo da capo, possiamo vedere il cambiamento nel comportamento di ackermann.

top

top in esecuzione in un terminale

Con un buon valore di 15, ackermann non consuma la maggior parte del tempo della CPU. GNOME e Rhythmbox ne usano entrambi di più. Abbiamo frenato un po ‘ackermann.

Ora facciamo il contrario e diamo ad ackermann un valore piacevole negativo. Notare l’uso di due caratteri “-“. Per rendere un’applicazione più egoista e meno carina, devi usare sudo. Chiunque può rendere la propria applicazione più carina, ma solo i superutenti possono renderne uno più egoista.

sudo nice --10 ./ackermann

bel comando -10 nella finestra del terminale

Corriamo in alto e vediamo che differenza ha fatto.

top

top in esecuzione in un terminale

Questa volta ackermann ha un bel valore di -10. È tornato in prima linea e consuma più tempo della CPU rispetto a prima.

Il comando renice

Il comando renice ci permette di regolare il buon valore di un processo in esecuzione. Non abbiamo bisogno di fermarlo e rilanciarlo con nice. Possiamo impostare un nuovo valore al volo.

Il comando renice accetta l’ID del processo, o PID, del processo come parametro della riga di comando. Possiamo estrarre l’ID del processo dalla colonna “PID” in alto, oppure possiamo usare ps e grep per trovarlo per noi, come segue. Ovviamente, digiterai il nome del tuo utente invece di dave e il nome del processo che ti interessa invece di ackermann.

ps -eu dave | grep ackermann

ps convogliato attraverso grep in una finestra di terminale

Ora che abbiamo il PID possiamo usarlo con renice. Riporteremo ackermann un comportamento migliore con un bel valore di cinque. Per modificare il valore piacevole per un processo in esecuzione è necessario utilizzare sudo. Notare che non c’è “-” sul parametro 5. Non ti serve uno per i numeri positivi e ne hai bisogno solo uno, non due, per i numeri negativi.

sudo renice -n 5 2339

comando renice in esecuzione in una finestra di terminale

Abbiamo la conferma che renice ha cambiato il bel valore. Ci mostra il vecchio valore e il nuovo valore.

Il kernel di solito fa un ottimo lavoro nel gestire le priorità e distribuire il tempo della CPU e le risorse di sistema. Ma se hai un compito lungo e ad alta intensità di CPU da eseguire e non ti interessa quando si conclude, renderà il tuo computer un po ‘più fluido se imposti un valore più alto per quell’attività. Sarà più bello per tutti.