Optimale CPU-Auslastung Schwellenwerte
-
21-09-2019 - |
Frage
Ich habe Software gebaut, dass ich auf Windows 2003 Server bereitstellen. Die Software läuft als Dienst kontinuierlich und es ist die einzige Anwendung auf dem Windows-Rechner von Bedeutung für mich. Ein Teil der Zeit, es Abrufen von Daten aus dem Internet, und einen Teil der Zeit, es tut einige Berechnungen auf diesen Daten. Es ist multi-threaded. - Ich Thread-Pools von etwa 4-20 Threads verwenden
Ich will Sie nicht langweilen mit allen diesen Details, aber es genügt zu sagen, dass ich mehr Threads im Pool zu ermöglichen, mehr gleichzeitige Arbeit auftritt, und die CPU-Nutzung steigt. (Wie auch die Nachfrage nach anderen Ressourcen wie Bandbreite, obwohl das keine Bedeutung für mich - ich viel haben)
Meine Frage ist: soll ich versuchen, einfach zu max aus der CPU den besten Knall für mein Geld zu bekommen? Intuitiv, ich glaube nicht, macht es Sinn, bei 100% CPU ausgeführt werden; sogar 95% CPU scheint hoch, fast wie ich das OS viel Raum nicht gebe zu tun, was es tun muss. Ich weiß nicht, den richtigen Weg beste Balance zu identifizieren. Ich vermute, ich messen konnte und messen und wahrscheinlich feststellen, dass die besten Durchsatz bei einer CPU avg Auslastung von 90% oder 91% achived ist, etc., aber ...
Ich frage mich nur, wenn es eine gute Daumenregel darüber ist ??? Ich will nicht davon ausgehen, dass meine Prüfung alle Arten von Variationen von Workloads berücksichtigen wird. Ich möchte lieber ein wenig sicher spielen, aber nicht zu sicher (oder ich bin underusing meine Hardware).
Was empfehlen Sie? Was ist eine intelligente, leistungsorientierte Regel Nutzungs für eine multi-threaded, Mischlast (einig I / O, einige CPU) Anwendung auf Windows?
Lösung
Ja, würde ich vorschlagen, ist 100% Dreschen würde so nicht sehen wollen laufenden Prozesse wie das die ganze Zeit. Ich habe immer für 80% soll eine Balance zwischen Nutzung und Raum für Spikes / Ad-hoc-Prozesse erhalten.
Ein Ansatz, den ich in der Vergangenheit verwendet habe, ist die Poolgröße langsam aufdrehen und messen die Auswirkungen (sowohl auf der CPU und anderen Einschränkungen wie IO) man weiß ja nie, könnte man, dass plötzlich IO wird der Engpass finden .
Andere Tipps
CPU-Auslastung in diesem i nicht Sache sollte / o intensive Arbeitsbelastung, kümmern Sie Durchsatz, versuchen Sie so mit einem
Unter der Annahme nichts anderes von Bedeutung, aber die OS laufen auf der Maschine: Und Ihre Last konstant ist, sollten Sie bei 100% CPU-Auslastung zielen darauf ab, alles andere ist eine Verschwendung von CPU ist. Denken Sie daran, die OS Greifen die Fäden, damit es tatsächlich in der Lage zu laufen, es ist schwer, das O mit einem gut erzogene Programm zu verhungern. Aber wenn Ihre Lastgröße ist und Sie erwarten Spitzen Sie in Betracht ziehen sollten, würde ich sagen, 80% CPU eine gute Schwelle zu verwenden ist, wenn Sie nicht genau wissen, wie wird die Last variiert und wie viel CPU wird es verlangen, in diesem Fall können Sie für die genaue Zahl wollen.
Wenn Sie einfach Ihre Threads eine niedrige Priorität geben, das Betriebssystem die Arbeit tun, und Zyklen zu nehmen, wie es zu tun braucht. Server 2003 (und die meisten Server OSes) ist sehr gut auf diesem , keine Notwendigkeit, zu versuchen, es selbst zu verwalten.
Ich habe auch 80% als allgemeine Regel-of-Daumen für Ziel-CPU-Auslastung. Wie einige andere erwähnt haben, diese Blätter in der Aktivität einige Reserven für sporadische Spitzen und auf der CPU vermeiden helfen Dreschen wird.
Hier ist eine kleines (älter, aber immer noch relevant) Beratung von der Weblogic Crew zu diesem Thema: http://docs.oracle.com/cd/E13222_01/wls/docs92/perform/basics.html#wp1132942
Wenn Sie Ihre Last fühlen ist sehr gleichmäßig und vorhersagbar Sie dieses Ziel ein wenig höher drücken könnten, aber es sei denn, Ihre Nutzerbasis ist besonders tolerant periodischer langsame Antworten und Ihr Projektbudget ist unglaublich eng, würde ich mehr Ressourcen empfehlen Zugabe zu Ihr System (das Hinzufügen einer CPU, eine CPU mit mehreren Kernen verwendet wird, etc.) über ein riskantes Vorgehen, um zu versuchen zu machen weitere 10% CPU-Auslastung aus Ihrer bestehenden Plattform herauszuzupressen.