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?

ubuntu  cpu  gzip  bzip2 

1
Fragen Sie sich speziell, wie Sie Zeit verschwenden können, wenn die CPU funktioniert, indem Sie stattdessen dösen? Warum?!
David Schwartz

Antworten:


11

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>

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/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.