Wie kann ich eine Datei mit einem minimalen CPU-Prozentsatz bzipen?
7
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?
Kein Glück mit nice.Still der Prozess dauert mehr als 100% CPU.
4
Nun, passiert noch etwas auf dem System? Du hast meine Frage nicht beantwortet - warum willst du das tun? Der 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.
EEAA
6
Um zu verdeutlichen, was die EEAA sagt: Es ist nichts Falsches daran, 100% CPU zu verwenden. Das wollen Sie, weil es am schnellsten ist. Es wird immer 100% CPU verwendet, wenn der Prozessor nichts anderes zu tun hat. Wenn der Prozessor andere Aufgaben hat, gleicht er die Aufgaben aus und teilt die CPU. Indem Sie den netten Wert festlegen, teilen Sie dem Kernel mit, dass bzip nicht so wichtig ist wie Ihre anderen Prozesse. Daher sollte es den anderen Prozessen CPU-Zeit geben, bevor Sie es bzip geben. Mach dir keine Sorgen über die Prozentsätze.
Tom Marthenal
Danke @TomMarthenal. In meiner Mitternachtsstupor hätte ich keine so präzise Erklärung finden können. Ich denke, es ist Zeit, ins Bett zu gehen. :)
EEAA
2
@dddddd - Na dann mach dir keine Sorgen. Wenn Sie den Befehl bzip mit ausführen 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.
EEAA
5
Empfohlen: Prioritäten verwenden
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.
Alternative: cpulimit - begrenzt die CPU-Auslastung in Prozent
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/
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:Außerdem können Sie versuchen, die
bzip2
Komprimierungsstufe zu verringern:quelle
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.Empfohlen: Prioritäten verwenden
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 diesionice
nur nützlich ist, wenn Sie denCFQ
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 dendeadline
odernoop
IO-Scheduler verwenden.So überprüfen Sie, welchen E / A-Scheduler Sie verwenden:
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 sienice
miteinander kombinieren :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.
Alternative: cpulimit - begrenzt die CPU-Auslastung in Prozent
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 Verwendungcpulimit
.Die offizielle Website lautet: http://cpulimit.sourceforge.net/
quelle