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 niceBefehl können Sie die Priorität eines Prozesses ändern:
$ nice -n 19 bzip2 <file>
Außerdem können Sie versuchen, die bzip2Komprimierungsstufe zu verringern:
$ bzip2 -1 <file>
niceBefehl ä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 ionicezusätzlich verwenden , wenn andere Prozesse nur minimal betroffen sind . Beachten Sie, dass dies ionicenur nützlich ist, wenn Sie den CFQE / A-Scheduler verwenden (die Standardeinstellung auf dem Kernel, dies könnte jedoch durch Ihre Installation optimiert worden sein). ioniceAFAIK hat keine Auswirkung, wenn Sie den deadlineoder noopIO-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 ionicemöchten Sie die niedrigste E / A-Priorität festlegen, die die Klasse 3 ist. Und Sie können sie nicemiteinander 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/