GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie kann die Ressourcennutzung für einen bestimmten Prozess begrenzt werden?

Ich habe einen Prozess für eine Anwendung, die ausgeführt werden muss, aber am Ende viel zu viel E / A-Nutzung für das verwendet, was sie tut. Und bringt meinen Computer wirklich zum Absturz, was es unmöglich macht, irgendetwas anderes zu tun, während er läuft.

Also habe ich mich gefragt, ob es eine Möglichkeit gibt, die IO-Nutzung, RAM und CPU für einen bestimmten Prozess zu begrenzen? Und natürlich seine Teilprozesse.

Dies ist auf meinem Ubuntu 18.04 LTS-System.

Beste Antwort

Sie sollten eine Kombination aus allen cgexec verwenden , cpulimit und ionice :

  1. RAM und SWAP begrenzen:

    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
    

    Die obigen Befehle erstellen eine Kontrollgruppe namens szMyGroup (Z. B. in Ihrem Fall group-great-uncle ), legen Sie eine Obergrenze für die Prozesse fest, die unter szMyGroup ausgeführt werden bis zu 512 MB physischer Speicher und bis zu 1024 MB Swap und dann:

    sudo cgexec -g memory:szMyGroup szMyProgram
    

    die Ihr Programm unter szMyGroup ausführen wird Kontrollgruppe und stellt so sicher, dass sie die Grenzwerte einhalten

  2. Beschränken Sie die Festplatten-E/A:

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

    Der obige Befehl verwendet pgrep mit der Wiederverwendung von Teilen der aktuellen Befehlszeile, um den Festplattenzugriff darauf zu beschränken, die Festplatte nur zu verwenden, wenn kein anderes Programm sie verwendet

  3. Begrenzen Sie die CPU:

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

    Die CPU des Programms ist jetzt auf 25 % des Maximums begrenzt

Wenn das Programm zu Beginn nicht viel CPU verbraucht, verringern Sie den Wert von cpulimit auf die Hälfte oder weniger dessen, was es derzeit verwendet.


Ubuntu
  1. So begrenzen Sie die CPU-Auslastung eines Prozesses in Linux

  2. So legen Sie den Pfad für sudo-Befehle fest

  3. Wie kann die Speichernutzung der Anwendung begrenzt werden?

  4. Begrenzen Sie die Speichernutzung für einen einzelnen Linux-Prozess

  5. Wie wird die Speichernutzung in Linux gemeldet?

So ändern Sie das Zeitlimit für eine Sudo-Sitzung

So geben Sie das Zeitlimit für eine Sudo-Sitzung an

So begrenzen Sie die Netzwerkbandbreite in Ubuntu

So legen Sie das Zeitlimit für eine Sudo-Sitzung in Ubuntu 20.04 LTS fest

Wie überwache ich Ressourcenbegrenzungsinformationen in cPanel?

So überwachen Sie die Ressourcennutzung und -metriken in cPanel