Ich habe einen Rsync-Cron-Job, der die Serverlast erhöht und Monitorwarnungen auslöst. Wenn ich den Job so einstelle, dass er mit einem hohen Level ausgeführt wird, würde dies die Auswirkungen auf die Systemlastwerte effektiv reduzieren?
Ich habe einen Rsync-Cron-Job, der die Serverlast erhöht und Monitorwarnungen auslöst. Wenn ich den Job so einstelle, dass er mit einem hohen Level ausgeführt wird, würde dies die Auswirkungen auf die Systemlastwerte effektiv reduzieren?
Antworten:
Durch Ändern des Nice-Werts wird die Systemlast nicht direkt reduziert. Es kann jedoch verwendet werden, um mehr Ressourcen für die verbleibenden Prozesse verfügbar zu machen, was meiner Meinung nach das ist, was Sie wirklich wollen.
Von http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/
Der Kernel entscheidet anhand des netten Werts, wie viel Prozessorzeit für einen Prozess benötigt wird. Möglicher netter Wertebereich ist: -20 bis 20. Ein Prozess, der einen netten Wert von -20 hat, hat eine sehr hohe Priorität. Der Prozess, der einen schönen Wert von 20 hat, hat eine sehr niedrige Priorität.
Ja, Sie möchten den Cron-Job auf einer höheren Ebene als die anderen Prozesse ausführen, wenn Sie sicherstellen möchten, dass andere Prozesse Priorität erhalten.
Dazu möchten Sie, dass Ihr Cron-Skript folgendermaßen ausgeführt wird:
/bin/nice -n 10 /path/to/cron-script
Dadurch wird das Cron-Skript mit einer um 10 erhöhten Genauigkeit ausgeführt. Sie möchten wahrscheinlich ein wenig testen, um ein gutes Gleichgewicht (Wortspiel nicht beabsichtigt) zwischen den verbleibenden Prozessen und der Ausführungszeit des Skripts zu finden.
Siehe auch Wie funktioniert es gut zu arbeiten? und http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ für weitere Details.
Es ist unwahrscheinlich, dass sich das Ändern der netten Ebene eines Prozesses auf den Systemlastwert auswirkt. Der Systemlastwert ist die durchschnittliche Länge der Ausführungswarteschlange , dh die Anzahl der Prozesse, die die CPU verwenden möchten.
Wenn Sie einen CPU-gebundenen Prozess ausführen (rsync nicht, aber nur zum Beispiel), möchte er immer die CPU-Zeit verwenden, wenn etwas verfügbar ist. Da es immer ausgeführt werden soll, trägt es einen Lastwert von 1,0 zum Systemlastwert bei. Es spielt keine Rolle, wie hoch die Prozessstufe ist, da die durchschnittliche Länge der Ausführungswarteschlange von der Reihenfolge der Prozesse in der Ausführungswarteschlange nicht beeinflusst wird.
Sie können drei Möglichkeiten in Betracht ziehen, um die Auswirkungen Ihres Prozesses auf die Systemlast / CPU-Zeit zu verringern:
nice
Befehl, um die Priorität der Aufgabe manuell zu senken.cpulimit
Befehl, um den Vorgang wiederholt anzuhalten, damit ein bestimmtes Limit nicht überschritten wird.built-in control groups
, einen Mechanismus, der den Scheduler anweist, die für den Prozess verfügbaren Ressourcen zu begrenzen.Ressourcen