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.
Sommario:
È 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
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
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
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
Corriamo in alto e vediamo che differenza ha fatto.
top
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
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
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.