Kann die CPU-Leistung eines Prozesses begrenzt werden?

16

Ich frage mich, gibt es eine Möglichkeit, einem Prozess mitzuteilen, wie viel Prozessorleistung er aufnehmen kann?

Das Problem ist, dass ich Videos mit Arista (Videokonverter) konvertiere und es mich ärgert, dass der Lüfter wie verrückt läuft. Wenn ich mir den Task-Monitor anschaue, beansprucht er 92% der CPU.

Kann ich (irgendwie) sagen, dass es nur 20% dauern kann?

Vielen Dank

Äquivalent8
quelle

Antworten:

20

Es gibt ein Cpulimit- Tool (das auch in Debian Repo vorhanden ist und in anderen Distributionen vorhanden sein sollte).

Die Verwendung ist ziemlich einfach:

cpulimit -p PID -l MAX_CPU_LEVEL

Sie können auch den Prozessnamen oder den vollständigen Pfad zur Binärdatei verwenden. Details finden Sie auf der Manpage .

eilen
quelle
1
ha-ha :), funktioniert perfekt, danke +1
Äquivalent8
3
Der Code unter der angegebenen URL wurde seit einiger Zeit nicht mehr aktualisiert. Eine andere Gruppe hat es aufgegriffen und unter limitcpu.sf.net weiterentwickelt .
James Sneeringer
7

Eine andere Möglichkeit ist die Verwendung der (relativ) neuen Kernel-Oberfläche namens cgroups (Wikipedia-Artikel hier ). Es ermöglicht eine genauere Kontrolle darüber, wie viel CPU / Speicher / IO / etc ein Prozess / Benutzer / eine Gruppe verbrauchen darf.

Tommy
quelle
0

Dies ist möglicherweise nicht genau das, wonach Sie suchen. Sie können jedoch mit dem reniceProgramm die Programmpriorität ändern, um zu verhindern, dass andere Anwendungen auf dem System verlangsamt werden. renice -n 20 -p [pid], wobei [pid] durch die Prozess-ID von Arista ersetzt wird, würde wahrscheinlich die Ressourcennutzung verringern und die Systemverlangsamung definitiv verringern.

Rekursion
quelle
1
Das OP beschwert sich nicht darüber, dass der Prozess andere Anwendungen verlangsamt, sondern dass der Lüfter wie verrückt läuft und renicenichts dagegen unternehmen kann. Bestenfalls verlangsamt es den Videokonverter, aber die konkurrierenden Prozesse (falls vorhanden) halten die CPU-Last wie zuvor aufrecht.
Juli