GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak omezit využití zdrojů pro daný proces?

Mám proces pro aplikaci, která musí běžet, ale nakonec využívá příliš mnoho IO na to, co dělá. A skutečně mi zhroutí počítač, takže za běhu není možné dělat nic jiného.

Tak mě zajímalo, jestli existuje způsob, jak omezit využití IO, RAM a CPU pro daný proces? A samozřejmě jeho dílčí procesy.

Toto je na mém systému Ubuntu 18.04 LTS.

Nejlepší odpověď

Měli byste použít kombinaci všech cgexec , cpulimit a ionice :

  1. Omezit RAM a 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
    

    Výše uvedené příkazy vytvoří řídicí skupinu s názvem szMyGroup (Např. ve vašem případě group-great-uncle ), nastavte omezení procesů spuštěných pod szMyGroup až 512 MB fyzické paměti a až 1024 MB swap a poté:

    sudo cgexec -g memory:szMyGroup szMyProgram
    

    který spustí váš program pod szMyGroup kontrolní skupiny, čímž je zajištěno, že dodržují limity

  2. omezit IO disku:

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

    Výše uvedený příkaz používá pgrep s opětovným použitím částí aktuálního příkazového řádku k omezení jeho přístupu k disku na použití disku pouze v případě, že žádný jiný program jej nepoužívá

  3. Omezte CPU:

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

    CPU programu je nyní omezeno na 25 % maxima

Pokud program ze začátku nevyužívá mnoho CPU, snižte hodnotu cpulimit na polovinu nebo méně toho, co aktuálně používá.


Ubuntu
  1. Jak zobrazit informace o využití zdrojů v Plesku

  2. Zvyšte počet připojení TCP pro Plex na Ubuntu

  3. Jak omezit využití paměti aplikace?

  1. Zkontrolujte limit otevřeného FD pro daný proces v Linuxu

  2. Jak nastavit cestu pro příkazy sudo

  3. Jak se v Linuxu hlásí využití paměti?

  1. Jak omezit využití CPU procesu v Linuxu

  2. Omezte využití paměti pro jeden proces Linuxu

  3. Jak najít soubor .pid pro daný proces