Ich mache große Backups, die meinen Server bei der Verwendung stark belasten tar/gzip
. Ich habe die Aufgabe als Cronjob eingerichtet, der auf mein Skript zugreift, das die Sicherung verwaltet. Ich weiß, dass nice
dies möglicherweise in dieser Situation hilfreich sein kann, bin mir aber nicht sicher, wie ich es richtig einsetzen soll.
Ich habe die folgenden Befehle in meinem Skript:
tar -cf
gzip -9
Würde ich einfach den nice
Befehl davor hinzufügen , um die Priorität zu verringern?:
nice -n 13 tar -cf
nice -n 13 gzip -9
Gibt es irgendwelche Einschränkungen bei der Verwendung dieses Ansatzes? Vielen Dank.
nice
? Sie planen den gesamten Sicherungsprozess. Überprüfen Sie auch denionice
Befehl.ionice
, also muss ich es überprüfen. Das Skript wird von einem Cronjob aufgerufen - würde ich das also einfach in Crontab anhängen? zum Beispiel :30 22 * * * /bin/sh nice -n 13 myscript.sh
. Ich bin mir auch nicht sicher, aber wenn ich dies innerhalb des Skripts tun würde, würde die zweite nicht die erstenice
beeinflussen? was bedeutet, dass gzip ein Teilprozess von Teer ist?tar
undgzip
danach, wirktnice
sich dies auf das Skript und den gesamten untergeordneten Prozess aus.* * * * * /usr/bin/nice -n 13 ...
- würde ich es also nicht verwenden/usr/bin/sh
?Antworten:
Es gibt Vorbehalte zu beachten. Da die Frage kein genaues Betriebssystem angibt (impliziert jedoch, dass es sich um ein Unix-ähnliches Betriebssystem handelt), hängt die Liste der Einschränkungen von einem bestimmten Betriebssystem und einer bestimmten Version ab. Die wichtigsten zu beachten sind:
nice
soll beeinflussen, wie viel CPU-Zeit einem Prozess zugewiesen wird, nicht jedoch, wie viel RAM oder E / A-Kapazität. Anstelle des beabsichtigten Effekts umfassen andere mögliche Ergebnisse:nice
hat überhaupt keine Auswirkung, da der Sicherungsprozess zunächst an die E / A gebunden war und die E / A-Planung davon nicht betroffen istnice
. Wenn es sich bei dem Betriebssystem um eine neuere Linux-Version handelt, kann die E / A-Planung davonnice
abhängen, welcheionice
Einstellung verwendet wird oder nicht .Darüber hinaus hängt auch die genaue Auswirkung auf die CPU-Planung stark vom jeweiligen Betriebssystem und den Einstellungen ab. Einige Kernel verfügen über Einstellungen, mit denen ein Prozess mit einer höheren oder niedrigeren Priorität ausgeführt werden kann als mit dem
nice
Befehl erreichbar.Eine Einschränkung, die ich mir selbst begegnet bin, scheint spezifisch für Ubuntu 14.04 zu sein. In der Standardkonfiguration werden Prozesse zu Planungszwecken gruppiert. Jede Gruppe erhält dann einen angemessenen Anteil an der CPU-Zeit.
nice
Dies wirkt sich nur darauf aus, wie die CPU-Zeit Prozessen innerhalb einer solchen Gruppe zugewiesen wird, nicht jedoch darauf, wie viel jeder Gruppe zugewiesen wird. Für mich hat dies die Verwendung von vollständig untergrabennice
, da ein Prozess mit niedriger Priorität den Prozessen in verschiedenen Gruppen immer noch CPU-Zeit nehmen könnte.quelle
nice
." Ich würde vorschlagen, dass Sie dieionice
Manpage lesen, da dies standardmäßig nicht der Fall ist.CPU
was betroffen ist, wenn mein Skript das triffttar/gzip
. Dies führt wiederum zu Engpässen für Momente, in denen der Server nur noch crawlt. Sie sprechen jedoch großartige Punkte über die Vorbehalte an, und ich kann sehen, dass dies wirklich ein Balanceakt ist und oft eine feine Grenze zwischen der Verbesserung oder möglicherweise der Verschlechterung besteht.Ich würde einen anderen Ansatz wählen ...
Nein, ich würde nicht damit herumspielen
nice
. Undgzip
ist das nicht toll? Außerdem verwenden Siegzip -9
die Komprimierungsrate auf Kosten der CPU. Benötigen Sie wirklich diese Komprimierungsstufe gegenüber der Standardeinstellung (Stufe 6)?Wird Ihr System so stark belastet, wenn Sie gzip Level 9 nicht verwenden?
Was sind die Spezifikationen Ihres Servers? Wie viele und welche Art von CPUs haben Sie?
cat /proc/cpuinfo
Wenn Sie mehrere CPUs haben, würden Sie
pigz
stattdessen die Verwendung in Betracht ziehen ? Es ist multithreaded, etwas effizienter und kann die Ressourcen auf Ihrem System viel besser nutzen.Einige Tests mit einer 1,8-GB-Datei:
Standard
gzip
(-6 Komprimierungsstufe)gzip -9 (höchste Komprimierung)
pigz (-6 Kompressionsstufe)
pigz -9 (höchste Komprimierung, Multithread)
Fazit: Lohnt sich die zusätzliche Komprimierung für die erheblich längere Zeit, die für die Komprimierung der Daten aufgewendet wird?
quelle
20 GB
. Ich habe keine Leasinggeberkomprimierung versucht, da der Speicherplatz eine Rolle spielt. Ich muss die Ergebnisse der Verwendung einer Leasinggeberkomprimierung mit den Festplatten- und CPU-Kosten vergleichen. Da die Daten so groß sind, ist dies leider nicht schnell zu testen. Ich habe noch nie davon gehörtpigz
, also danke für die Empfehlung - ich bin immer offen für Alternativen :)Mir ist klar, dass dies von der ursprünglichen Frage abweicht, aber es bleibt beim Thema Effizienz (Sie erwähnen "enorme Belastungen auf meinem Server") ...
Ich schließe (oder vermute!) Aus dem, was Sie gepostet haben, dass Sie
tar
eine Datei mit einer Reihe von Dateien erstellen und danngzip
das Ergebnis ermitteln. Sie können sich viel Festplatten-E / A (und temporären Speicherplatzbedarf) sparen, indem Sie eine direkt in die andere leiten:Möglicherweise hat dies einen signifikanten Einfluss auf die insgesamt verstrichene Zeit.
quelle