Come limitare l'utilizzo della CPU di un processo su Linux

Come limitare l'utilizzo della CPU di un processo su Linux
Nella tua vita di Linux, devi aver visto alcuni processi occupare tutti i cicli della CPU (utilizzo della CPU al 90-99%), rendendo il tuo computer quasi non risponde fino a quando non finisce. Potrebbe andare bene se il processo richiede alcuni secondi per completare. Ma cosa succede se ci vuole molto tempo? Non è molto bello sedersi e guardare il tuo computer che non risponde per minuti e ore, giusto? Bene, Linux ha molti strumenti fantastici per realizzarli non molto bello processi A Carino processi.

Puoi impostare la quantità di CPU che è consentito avere un singolo processo. Se il processo ha davvero bisogno di molta potenza della CPU, puoi eseguire alcuni comandi per dargli tutti i cicli CPU inattivi (cicli della CPU di cui non è necessario). In questo modo, non dovrai mai sederti e fissare a lungo il tuo computer che non risponde.

In questo articolo, ti mostrerò come limitare l'utilizzo della CPU di un processo su Linux. Ho intenzione di usare CentOS 7 in questo articolo. Ma qualsiasi distribuzione moderna di Linux dovrebbe funzionare. Quindi iniziamo.

Limitare l'utilizzo della CPU con NICE e Renice:

Su Linux, le priorità di ciascun processo in esecuzione possono essere modificate. È possibile impostare priorità più elevate sul processo che è più importante per te rispetto a un processo che sta accontentando la CPU senza una buona ragione.

Ogni processo su Linux ha un buon valore. Il valore di Nizza determina quale processo ha priorità più elevate e quali ha più bassi. Il buon valore può essere compreso tra -20 e 19. Un processo con il buon valore di -20 avrà la massima priorità e utilizzerà il maggior numero di cicli CPU. Un processo con il buon valore 19 avrà la priorità più bassa e utilizzerà la CPU quando nessun altro processo la utilizza solo.

Esistono due modi per impostare il buon valore di un processo. Puoi iniziare un processo con il Carino comanda per impostare un buon valore mentre si avvia il processo. Oppure puoi usare il Renice comando per impostare un buon valore dopo l'inizio di un processo.

Per impostare un buon valore quando si avvia un processo, eseguire il processo come segue:

$ NICE -N NICE_VALUE COMMAND_TO_RUN

NOTA: Qui NICE_VALUE può essere qualsiasi cosa da -20 a 19 E Command_to_run è un comando che vuoi eseguire con il buon valore di NICE_VALUE.

Ad esempio, diciamo, vuoi eseguire il sonno comando con il buon valore di 14. Esegui il comando come segue:

$ NICE -N 14 Sleep 40000 &

Ora puoi verificare se il valore piacevole è impostato correttamente utilizzando il comando in alto. Puoi elencare tutti i processi avviati (come utente di accesso) con il seguente comando:

$ PS -fl

Come puoi vedere, il buon valore del processo è impostato su 14.

Ora se desideri modificare il buon valore dei tuoi processi esistenti, allora tutto ciò che serve è l'ID del processo (PID) del processo di cui si desidera modificare il buon valore. Puoi usare il PS Aux comando o il superiore comanda per trovare l'ID di processo o il PID.

Quindi puoi correre Renice comando come segue per modificare il valore piacevole di un processo esistente:

$ sudo renice -n new_nice_value -p Process_pid

Come puoi vedere, il buon valore del processo con PID 6422 viene modificato.

Limitare l'utilizzo della CPU con i cgroup:

La forma completa di Cgroup È COntrol Groups. Si tratta di un kernel Linux utilizzato per limitare le risorse a gruppi di elaborazione come (CPU, memoria, autorizzazioni e molti altri) su Linux.

Tutto quello che devi fare è creare un nuovo gruppo di processo e aggiungere i tuoi processi a cui desideri limitare le risorse a quel gruppo. Semplice!

Gli strumenti di gestione dei cgroup non sono installati su CentOS 7 per impostazione predefinita. Ma è disponibile nel repository di pacchetti ufficiali di CentOS 7.

Per prima cosa aggiorna la cache del repository pacchetto Yum con il comando seguente:

$ sudo yum makecache

Ora installa gli strumenti di gestione di cgroups con il seguente comando:

$ sudo yum installa libcgroup-tools

Ora premi y e poi premere .

Dovrebbe essere installato.

Puoi limitare l'utilizzo della CPU di un singolo gruppo. Ad esempio, è possibile utilizzare i cgroup per dire un processo all'interno di un cgroup per usare diciamo 100 ms su ogni 1000 ms (o .1s su ogni 1s) del tempo della CPU.

Crea prima un cgroup con il seguente comando:

$ sudo cgcreate -g cpu:/cpulimit

NOTA: Qui, cpulimit è il nome del gruppo che controlla il processore utilizzo.

Ora devi impostare processore.cfs_period_us E processore.cfs_quota_us proprietà sul cpulimit gruppo.

Per questo esempio, dovrebbero essere impostati 1000 ms (millisecondi) o 1000000us (microsecondi) processore.cfs_period_us proprietà e 100 ms o 100000us dovrebbero essere impostati su processore.cfs_quota_us proprietà.

Esegui i seguenti comandi per impostare queste proprietà su cpulimit gruppo:

$ sudo cgset -r cpu.cfs_period_us = 1000000 cpulimit
$ sudo cgset -r cpu.cfs_quota_us = 100000 cpulimit

Ora puoi eseguire il seguente comando per verificare se tutte le proprietà sono impostate correttamente:

$ sudo cgget -g cpu: cpulimit

NOTA: Qui, cpulimit è il nome del cgroup e processore è la risorsa che sto limitando.

Come potete vedere, processore.cfs_period_us E processore.cfs_quota_us sono impostati correttamente.

Ora qualunque processo aggiungi a cpulimit Cgroup utilizzerà 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) dei cicli totali della CPU.

Ora per limitare la CPU di un processo, avviare il programma o il comando con cgexec come segue:

$ sudo cgexec -g cpu: cpulimit your_command

NOTA: Qui, Tuo_command Può essere qualsiasi comando Linux valido.

Per dimostrare che funziona effettivamente, prima eseguirò il seguente comando senza cgroup e poi con i cgroup e mostrerò i risultati.

$ dd if =/dev/zero di = out bs = 1m

Come puoi vedere, senza cgroup, il comando utilizza il 90% della CPU totale.

Quindi, ho eseguito lo stesso comando con i cgroup come segue:

$ sudo cgexec -g cpu: cpulimit dd if =/dev/zero di = out bs = 1m

Come puoi vedere, l'utilizzo della CPU è al massimo del 10%. Il processo non sta usando più di questo.

Ecco come usi i cgroup per limitare l'utilizzo della CPU di un processo su Linux. Grazie per aver letto questo articolo.

Riferimenti:

[1] https: // accesso.cappello rosso.com/documentazione/en-us/red_hat_enterprise_linux/6/html/risorse_management_guide/sec-cpu

[2] https: // linux.morire.Net/Man/1/Nice

[3] https: // linux.morire.Net/Man/8/Renice