GNU/Linux >> Linux Esercitazione >  >> Linux

Comandi Linux:come manipolare la priorità del processo

La gestione dei processi in Linux è un concetto fondamentale che ogni buon amministratore di sistema dovrebbe conoscere. La maggior parte del lavoro svolto con questi processi consiste in attività di base ripetitive come l'avvio e l'arresto di processi, la loro ricerca, la loro eliminazione, ecc.

In alcuni casi meno frequenti, potrebbe essere necessario riordinare i processi a causa dell'allocazione delle risorse di sistema. Quando si verificano queste situazioni, molti di noi si rivolgeranno al nostro motore di ricerca preferito per trovare il modo più efficiente per farlo. Ora che l'algoritmo di ricerca ti ha portato qui per abilitare Sysadmin, ti forniamo le risposte che stai cercando.

Analizzerò come viene determinata la priorità e poi ti mostrerò come manipolare quei valori di seguito.

Priorità di processo e relatività

I sistemi Linux eseguono regolarmente più processi di quante siano le unità di elaborazione nel computer. Per questo motivo, lo scheduler dei processi salterà rapidamente tra i processi su un singolo core, creando così l'illusione che stiamo eseguendo più processi simultanei.

In realtà, a ogni processo viene assegnata una politica di pianificazione del processo. All'interno di questa norma, esiste una scala di 40 punti utilizzata per misurare il bello livelli di un processo Il livello piacevole è un'unità di misura che descrive la priorità relativa del processo. Quando si discute dei livelli di gentilezza, si noti che la scala va da -20 (priorità più alta) a 19 (priorità più bassa) e che un processo eredita il suo livello piacevole dal genitore (molto spesso 0).

[ Potrebbe interessarti anche: Nozioni di base sui comandi Linux:7 comandi per la gestione dei processi  ]

Ora, se un processo ha un livello di precisione inferiore (sotto zero), sarà meno probabile che rinunci all'utilizzo della CPU (non molto bello, è?). D'altra parte, è più probabile che un processo con un valore di precisione elevato (che superi lo zero) rinunci all'utilizzo della CPU.

Un modo semplice per ricordarlo è che se qualcuno (o un processo) è davvero gentile, è più incline a condividere con gli altri. Se non sono molto simpatici, tendono a essere più protettivi su ciò che gli appartiene (risorse CPU, in questo caso).

Inoltre, se non c'è carenza di risorse, anche i processi con livelli di precisione elevati utilizzeranno tutto il tempo CPU disponibile. L'unico momento in cui un processo produrrà le sue risorse è quando c'è una carenza di larghezza di banda.

Rapporto prioritario

Ora che abbiamo tutto il contesto che circonda la priorità del processo, diamo un'occhiata ad alcuni dei modi per visualizzare queste informazioni sul terminale.

Il modo più rapido e semplice per visualizzare le informazioni sulla gentilezza è utilizzare il top comando. Visualizza queste informazioni per impostazione predefinita nella quarta colonna (da sinistra a destra) e quindi non richiede opzioni o flag aggiuntivi.

L'altro metodo, leggermente più complicato, consiste nell'usare ps comando con un generoso aiuto di opzioni di formattazione. Il comando seguente visualizzerà i processi con i loro ID processo, nome, livello di precisione e classe di pianificazione (ordinati in modo decrescente):

[tcarrigan@localhost ~]$ ps axo pid,comm,nice,cls --sort=-nice

Ora in tempo reale:

Manipolazione della gentilezza esistente

Ora sappiamo come visualizzare la bontà di un processo esistente, ma cosa succede se quel livello piacevole non soddisfa le nostre esigenze? Come possiamo modificare questi valori per ottenere il massimo dal nostro sistema? Bene, se hai un processo particolare che sta consumando risorse di cui hai bisogno altrove, puoi abbassare il buon livello di quel processo specifico. Per fare ciò, useremo il renice comando.

Nota :solo l'utente root può ridurre un livello di gentilezza (aumentare la priorità). Gli utenti non privilegiati possono aumentare i livelli piacevoli ma non possono diminuirli senza i permessi di root.

Dai un'occhiata a questo sleep 500 processi. Ha un PID di 23990 e un bel livello predefinito di 0.

[tcarrigan@localhost ~]$ ps -o pid,comm,nice 23990
    PID COMMAND          NI
  23990 sleep             0

Se volessi rendere quel processo meno prioritario, userei il seguente renice comando:

Per rendere il processo più importante (abbassando il livello piacevole), useresti la stessa sintassi dei comandi di un utente privilegiato.

[ Cheat sheet gratuito:glossario Kubernetes ] 

Un'ultima cosa

Ok, prima di concludere, c'è un altro trucco che volevo includere qui. Se hai intenzione di avviare un processo che di solito ha un buon livello predefinito che non è desiderabile, puoi effettivamente impostare quel parametro mentre generi il processo. Useremo il sleep comando di nuovo. Tuttavia, questa volta, lo creeremo con il nice comando (che imposta il processo al livello 10 per impostazione predefinita).

Puoi impostare un livello piacevole specifico utilizzando lo stesso comando con la seguente sintassi:

[tcarrigan@localhost ~]$ nice -n 19 sleep 500 &

Il comando precedente imposta lo sfondo sleep 500 a un buon livello di 19.

Questi comandi sono stati molto divertenti da imparare e da mostrare. In futuro, quando riscontro problemi con risorse di sistema o processi affamati, posso modificare le risorse loro assegnate.


Linux
  1. Come uccidere un processo zombie su Linux

  2. 8 comandi Linux per una gestione efficace dei processi

  3. Come uccidere un processo su Linux usando il comando?

  4. Come modificare la priorità del processo utilizzando Linux Nice e Renice Esempi

  5. Come limitare i comandi utente in Linux

Come uccidere un processo in Linux

Come eseguire i comandi Linux in background

Come uccidere i processi Zombie in Linux

Come KILL un processo su Linux

Come usare i comandi FTP di Linux

Comandi per la gestione dei processi in Linux