Ich verwende bzip2, um eine Datei zu komprimieren. Der Prozess benötigt mehr als 100% CPU. Gibt es eine Möglichkeit, bzip2 mit einem minimalen CPU-Prozentsatz auszuführen?
Ich verwende bzip2, um eine Datei zu komprimieren. Der Prozess benötigt mehr als 100% CPU. Gibt es eine Möglichkeit, bzip2 mit einem minimalen CPU-Prozentsatz auszuführen?
Antworten:
Beeinträchtigt dieser Prozess andere Prozesse auf Ihrem System? Warum möchten Sie die CPU-Auslastung von bzip2 einschränken?
Mit dem nice
Befehl können Sie die Priorität eines Prozesses ändern:
$ nice -n 19 bzip2 <file>
Außerdem können Sie versuchen, die bzip2
Komprimierungsstufe zu verringern:
$ bzip2 -1 <file>
nice
Befehl ändert lediglich die Priorität. Wenn also keine anderen CPU-intensiven Aufgaben auf dem Server ausgeführt werden, bzip2
übernimmt ja gerne die gesamte CPU, und Sie können oder sollten wirklich nichts dagegen tun.
nice 19
, hat er im Scheduler des Kernels eine weitaus geringere Priorität als andere Prozesse. Sie müssen sich jedoch noch Gedanken über Dinge wie E / A-Konflikte machen, da die Komprimierung / Dekomprimierung auch ziemlich E / A-intensiv ist.
Wenn Sie dem bzip-Prozess zusätzlich zur @EEAA-Antwort das Maximum der niedrigen Priorität zuweisen möchten, sollten Sie ionice
zusätzlich verwenden , wenn andere Prozesse nur minimal betroffen sind . Beachten Sie, dass dies ionice
nur nützlich ist, wenn Sie den CFQ
E / A-Scheduler verwenden (die Standardeinstellung auf dem Kernel, dies könnte jedoch durch Ihre Installation optimiert worden sein). ionice
AFAIK hat keine Auswirkung, wenn Sie den deadline
oder noop
IO-Scheduler verwenden.
So überprüfen Sie, welchen E / A-Scheduler Sie verwenden:
cat /sys/block/<DEVICE>/queue/scheduler
Wo <DEVICE>
ist Ihr Festplattengerät, zsda
Mit jetzt ionice
möchten Sie die niedrigste E / A-Priorität festlegen, die die Klasse 3 ist. Und Sie können sie nice
miteinander kombinieren :
$ nice -n 19 ionice -c3 bzip2 <file>
Wie Tom und EEAA erklärt haben, ist dies gut genug. Der Kernel stellt sicher, dass bzip so schnell wie möglich ausgeführt werden kann, wenn kein anderer Prozess CPU oder E / A benötigt. Aber es wird anderen Prozessen Vorrang einräumen, wenn sie es brauchen. Dies ist die empfohlene Wahl.
Jetzt können Sie immer noch eine "CPU-Begrenzung" für bzip verwenden. Das wäre nicht meine Wahl, aber wenn Sie experimentieren oder es besser mögen möchten, sollten Sie verwenden cpulimit
. Es ist jedoch nicht oft gepackt oder in einer Standard-Linux-Installation. Sie müssen es also installieren. NixCraft verfügt über ein gutes Dokument zur Installation und Verwendung cpulimit
.
Die offizielle Website lautet: http://cpulimit.sourceforge.net/