Ich habe einen Prozess für eine Anwendung, der ausgeführt werden muss, aber am Ende viel zu viel E / A-Nutzung für das verwendet, was er tut. Und mein Computer stürzt wirklich ab, was es unmöglich macht, etwas anderes zu tun, während er läuft.
Ich habe mich also gefragt, ob es eine Möglichkeit gibt, die E / A-Nutzung, den Arbeitsspeicher und die CPU für einen bestimmten Prozess einzuschränken. Und natürlich seine Unterprozesse.
Dies ist auf meinem Ubuntu 18.04 LTS-System.
ionice
,renice
- und vielleichtulimit -s
Befehle, und das war's.cgroups-io
so keine Ahnung :)Antworten:
Sie sollten eine Kombination aller verwenden
cgexec
,cpulimit
undionice
:RAM und SWAP begrenzen:
Die obigen Befehle erstellen eine Kontrollgruppe mit dem Namen
szMyGroup
(z. B. in Ihrem Fallgroup-great-uncle
), setzen eine Obergrenze für die Prozesse, die mitszMyGroup
bis zu 512 MB physischem Speicher und bis zu 1024 MB Swap ausgeführt werden, und dann:szMyGroup
Dadurch wird Ihr Programm unter der Kontrollgruppe ausgeführt, wodurch sichergestellt wird, dass die Grenzwerte eingehalten werdenBegrenzen Sie die Festplatten-E / A:
Der obige Befehl verwendet
pgrep
bei der Wiederverwendung von Teilen der aktuellen Befehlszeile , um den Festplattenzugriff so zu beschränken, dass die Festplatte nur verwendet wird, wenn kein anderes Programm sie verwendetBegrenzen Sie die CPU:
Die CPU des Programms ist jetzt auf 25% des Maximums begrenzt
Wenn das Programm zunächst nicht viel CPU verbraucht, senken Sie den Wert von cpulimit auf die Hälfte oder weniger des derzeit verwendeten Werts.
quelle