Come limitare l'utilizzo delle risorse per un determinato processo?


11

Ho un processo per un'applicazione che deve essere eseguito, ma finisce per usare troppe informazioni sull'IO per quello che fa. E si blocca davvero il mio computer, rendendo impossibile fare qualsiasi altra cosa mentre è in esecuzione.

Quindi mi chiedevo se esiste un modo per limitare l'utilizzo di IO, RAM e CPU per un determinato processo? E i suoi sottoprocessi ovviamente.

Questo è sul mio sistema Ubuntu 18.04 LTS.


2
@GreatUncleBulgaria Non proprio, a meno che tu non voglia separarti con punti reputazione. La semplice risposta a ciò che chiedi è semplicemente combinare ciò che gli altri hanno suggerito - ionice, renice- e forse i ulimit -scomandi, e basta.
Sergiy Kolodyazhnyy,

@GreatUncleBulgaria Non ho familiarità con cgroups-ioquindi non ho idea :)
Sergiy Kolodyazhnyy

Domanda potenzialmente correlata: askubuntu.com/q/538992/295286 Le risposte qui menzionano i cgroups, ma non molto altro, quindi. . . può essere ?
Sergiy Kolodyazhnyy,

1
@SergiyKolodyazhnyy: sembra che qualcuno abbia ripulito i commenti!

Risposte:


8

Si consiglia di utilizzare una combinazione di tutti cgexec, cpulimite ionice:

  1. Limite RAM e SWAP:

    sudo cgcreate -g memory:/szMyGroup
    echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes
    echo $(( 1024 * 1024 * 1024 ))  | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes

    I comandi precedenti creano un gruppo di controllo denominato szMyGroup(ad esempio nel tuo caso group-great-uncle), impostano un limite per i processi eseguiti szMyGroupfino a 512 MB di memoria fisica e fino a 1024 MB di scambio e quindi:

    sudo cgexec -g memory:szMyGroup szMyProgram

    che eseguirà il programma sotto il szMyGroupgruppo di controllo, garantendo così che aderiscano ai limiti

  2. limitare l'IO del disco:

    sudo ionice --class 3 --pid $(pgrep -f szMyProgram)

    Gli usi comando precedente pgrepcon parti riutilizzo della corrente di riga di comando di limitarne l'accesso al disco utilizzare solo il disco quando nessun altro programma è usarlo

  3. Limitare la CPU:

    sudo cpulimit --limit=25 --pid=!#:4

    La CPU del programma è ora limitata al 25% del massimo

Se il programma non utilizza molta CPU per cominciare, abbassa il valore di cpulimit alla metà o meno di quello che utilizza attualmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.