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?

War es hilfreich?

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

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top