Was bestimmte Prozesse nach CPU - % - Linux

Ich habe Folgendes problem: einige Prozesse werden dynamisch generiert, haben eine Tendenz zu Essen, 100% der CPU. Ich würde gerne begrenzen alle den Prozess, die bestimmte Kriterien (z.B. Prozess-Namen), um eine bestimmte Menge an CPU-Prozentsatz.

Dem spezifischen problem, das ich zu lösen versuche ist die Nutzung folding@home-worker-Prozesse. Die beste Lösung, die ich denken konnte ist ein perl-Skript, das periodisch ausgeführt und verwendet die cpulimit-Dienstprogramm zu beschränken und die Prozesse (wenn Sie an mehr details interessiert ist, überprüfen Sie diese blog-post). Es funktioniert, aber es ist ein hack :/

Irgendwelche Ideen? Ich möchte die Behandlung der Prozesse zu den OS 🙂


Nochmals vielen Dank für die Anregungen, aber wir sind immer noch fehlt der Punkt 🙂

Den "Verlangsamung" - Lösung ist im wesentlichen, was die "cpulimit" - Dienstprogramm. Ich muss immer noch darauf achten, über welche Prozesse zu verlangsamen, töten die "Verlangsamung", nachdem das worker-Prozess abgeschlossen ist und starten Sie das neue für die neuen Arbeitsprozesse. Es ist genau das, was ich mit dem Perl-script und einem cron-job.

Das Hauptproblem ist, dass ich nicht vorher wissen, welche Prozesse zu begrenzen. Sie sind dynamisch generiert.

Vielleicht gibt es einen Weg zu beschränken, die alle Prozesse eines Benutzers zu einem bestimmten Betrag der Prozentsatz der CPU? Ich habe bereits ein Benutzer für die Ausführung des folding@home-Arbeitsplätze, in der Hoffnung, dass ich noch einschränken könnte ihn mit " /etc/security/limits.conf-Datei. Aber das nächste, was ich bekommen konnte gibt es die Gesamt-CPU-Zeit pro user...

Wäre es cool, wenn etwas dabei zu haben, die es Ihnen ermöglicht zu sagen:
"Die Summe aller CPU % Benutzung dieser user Prozesse nicht mehr als 50%". Und dann lassen Sie die Prozesse kämpfen, dass 50% der CPU in Bezug auf Ihre Prioritäten...


Jungs, danke für Eure Vorschläge, aber es geht nicht darum, Prioritäten zu setzen - ich will zur Begrenzung der CPU -%, selbst wenn es viel CPU-Zeit zur Verfügung. Die Prozesse sind bereits niedrige Priorität, so dass Sie nicht verursachen keine performance-Probleme.

Ich würde nur gerne verhindern, dass die CPU läuft auf 100%, die für längere Zeit...

  • Warum ist es eine schlechte Sache? Wenn Sie richtig sind niced, sollte Sie nicht stören andere Prozesse. Sie werden nur (in der Tat) erhalten Sie alle übrig gebliebenen Zyklen...
  • Das Lesen der blog-post, es scheint, wie er will, die CPUs haben einige Zeit im Leerlauf, so dass Sie nicht so heiß laufen. Das ist, warum ich aufgehört SETI@Home - meine CPUs waren nicht dauerhafte sehr lange, weil Sie heiß gelaufen die ganze Zeit.
  • Ja, ich habe noch nie eine CPU ausfallen wegen überhitzung trotz Laufenden SETI@Home. Und ich habe nie etwas schicker als die retail-HSF-Einheiten, die mit kam mein Prozessoren.
  • Vielleicht ist er in einer shared hosting-Umgebung und will Gas seine CPU-Zeit, damit sein Konto nicht "gesperrt"
  • Wenn seine Prozesse richtig niced, er sollte nicht Auswirkungen auf andere performance. Seine Prozesse werden nur CPU, wenn es nicht in Gebrauch ist anderswo.
  • Ich kenne die Antwort nicht, aber vielleicht kann man sich den WEIN Implementierung von SetInformationJobObject Windows-API
  • Sie können mit cgroups um dies zu erreichen.
  • Haben Sie versucht, alle Lösungen?
  • unix.stackexchange.com/questions/151883/...
  • Machen es zu einem systemd service dann systemctl set-property seti.service CPUQuota=50%, Dass 50% der insgesamt alle CPUs.

InformationsquelleAutor asparagus | 2008-12-22
Schreibe einen Kommentar