processore

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 Linux, devi aver visto alcuni processi occupare tutti i cicli della CPU (90-99% di utilizzo della CPU), rendendo il tuo computer quasi non rispondente fino al termine. Potrebbe andare bene se il processo richiede alcuni secondi per essere completato. 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 per simpatico processi.

Puoi impostare quanta CPU può avere un singolo processo. Se il processo richiede davvero molta potenza della CPU, puoi eseguire alcuni comandi per dargli tutti i cicli della CPU inattiva (cicli della CPU che non ti servono). 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. Userò CentOS 7 in questo articolo. Ma qualsiasi distribuzione Linux moderna dovrebbe funzionare. Quindi iniziamo.

Limitazione dell'utilizzo della CPU con nice e renice:

Su Linux, le priorità di ogni processo in esecuzione possono essere modificate. Puoi impostare priorità più alte per il processo che è più importante per te di un processo che sta monopolizzando la tua CPU senza una buona ragione.

Ogni processo su Linux ha un bel valore. Il valore di nice determina quale processo ha priorità più alte e quale ha priorità più basse. Un buon valore può essere compreso tra -20 e 19. Un processo con il bel valore di -20 avrà la priorità più alta e utilizzerà il maggior numero di cicli della CPU. Un processo con il bel valore 19 avrà la priorità più bassa e utilizzerà la CPU solo quando nessun altro processo la sta utilizzando.

Ci sono due modi per impostare il bel valore di un processo. Puoi avviare un processo con il simpatico comando per impostare un buon valore durante l'avvio del processo. Oppure puoi usare il renice comando per impostare un buon valore dopo l'avvio di un processo.

Per impostare un buon valore quando avvii un processo, esegui il processo come segue:

$ nice -n VALORE_NICE COMANDO_PER_ESEGUIRE

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

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

$ bello -n 14 dormire 40000 &

Ora puoi verificare se il valore nice è impostato correttamente usando il comando top. Puoi elencare tutti i processi che hai avviato (come utente di accesso) con il seguente comando:

$ ps -fl

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

Ora, se desideri modificare il valore piacevole dei tuoi processi esistenti, tutto ciò di cui hai bisogno è l'ID processo (PID) del processo di cui vuoi modificare il valore piacevole. Puoi usare il ps ausiliario comando o il superiore comando per trovare l'ID del processo o il PID.

Allora puoi correre renice comando come segue per modificare il valore di Nizza di un processo esistente:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Come puoi vedere, il bel valore del processo con PID 6422 è cambiato.

Limitazione dell'utilizzo della CPU con CGROUPS:

La forma completa di CGROUP è Ccontrollo Ggironi. È una funzionalità del kernel Linux utilizzata per limitare le risorse per elaborare gruppi come (CPU, memoria, permessi e molti altri) su Linux.

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

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

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

$ sudo yum makecache

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

$ sudo yum install libcgroup-tools

Ora premi e poi premere .

Dovrebbe essere installato.

Puoi limitare l'utilizzo della CPU di un singolo gruppo. Ad esempio, puoi usare CGROUPS per dire a un processo all'interno di un CGROUP di usare diciamo 100ms su 1000ms (o .1s su ogni 1s) di tempo CPU.

Per prima cosa crea 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, 1000ms (millisecondi) o 1000000us (microsecondi) dovrebbero essere impostati su processore.cfs_period_us proprietà e 100ms 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=1000000 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 sia il processo a cui aggiungi cpulimit CGROUP utilizzerà 1/10questo (100000/1000000 = 1/10 = 0.1 = 10%) dei cicli CPU totali.

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

$ sudo cgexec -g cpu:cpulimit YOUR_COMMAND

NOTA: Qui, IL TUO_COMANDO può essere qualsiasi comando Linux valido.

Per dimostrare che funziona davvero, prima eseguirò il seguente comando senza CGROUPS e poi con CGROUPS e ti mostrerò i risultati.

$ dd if=/dev/zero of=out bs=1M

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

Quindi, ho eseguito lo stesso comando con CGROUPS come segue:

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

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

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

Riferimenti:

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

[2] https://linux.morire.net/man/1/nice

[3] https://linux.morire.rete/uomo/8/renice

I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...
Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...
Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...