[JAVA] Ist die CPU-Auslastung zu 100% schlecht?

29.09.2019 Teilrevision

==========================================================================

0. Einleitung

Vielen Dank, dass Sie [vorherigen Beitrag] gesehen haben (https://qiita.com/zd6ir7/items/abbb1e92701992d32b88). Es ist lange her seit dem letzten Mal, aber dieses Mal möchte ich ein Thema vorstellen, das mich aus den folgenden Büchern, die ich kürzlich gelesen habe (von September bis Oktober 2017), sehr fasziniert hat.

Geschrieben von Scott Oaks, übersetzt von Acroquest Technology Co., Ltd., übersetzt von Kao Terada, übersetzt von Satoshi Makino "Java Performance", veröffentlicht von O'Reilly Japan https://www.oreilly.co.jp/books/9784873117188/

1. Bedeutung von "100% CPU-Auslastung"

Wie denken Sie über eine Situation, in der die CPU-Auslastung 100% beträgt? Ich glaube nicht, dass Sie ein gutes Image haben: "Beeinträchtigt es nicht die Leistung?" Das Buch besagt, dass dies nicht immer der Fall ist.

Ich werde den Text zitieren, aber vor allem den Autor dieses Buches

Angenommen, die Ausführung eines Programms dauert 10 Minuten und die CPU-Auslastung während dieser Zeit beträgt 50%. Wenn Sie es auf 100% einstellen könnten, würde es die Leistung verdoppeln und in 5 Minuten laufen. Wenn wir hier die Leistung verdoppeln könnten, würde die CPU-Auslastung bei 100% bleiben und die Ausführungszeit würde zweieinhalb Minuten betragen.

Nach einem Beispiel wird gezeigt, "wie effizient das Programm die CPU nutzt", und es wird der Schluss gezogen, dass "je größer dieser Wert ist, desto wünschenswerter ist er". ..

Natürlich. Wenn das Programm ausgeführt wird, wird das Programmmodul von der Festplatte in den Speicher erweitert, und die im Speicher gespeicherten Informationen werden nacheinander von der CPU gelesen und ausgeführt. Unter dem Gesichtspunkt der Leistung ist es wünschenswert, wenn das Programm ausgeführt werden kann, ohne die CPU ruhen zu lassen.

2. Fälle, die nicht "100% CPU-Auslastung" sind

Im Gegenteil, wenn das Programm ausgeführt wird, wenn die CPU ruht, dh wenn es nicht zu 100% verbraucht ist, gibt es einen Grund, warum die CPU nicht ausgeführt wird und Analyse und manchmal Optimierung erforderlich sind. ist.

Der Autor dieses Buches nennt die folgenden drei Ursachen als Fälle, in denen die CPU nicht zu 100% ausgelastet ist.

Für die erste und zweite Ursache oben: "Wenn Sie die Konkurrenz für Sperren reduzieren und optimieren können, um die Antwort aus der Datenbank zu beschleunigen, ... wird die Programmausführung schneller und die CPU-Auslastung erhöht." Wird steigen. " Andererseits wird für die dritte Ursache beispielsweise angenommen, dass "eine Serveranwendung, die auf eine Anforderung von einem Client wartet" "alle HTTP-Anforderungen verarbeitet, die auf ihre Verarbeitung warten, und bis zur nächsten Anforderung wartet". In diesem Fall ruht die CPU und zeigt an, dass sie noch bereit ist, HTTP-Anforderungen zu akzeptieren.

3. Denken Sie über die Bedeutung der CPU-Auslastung nach

Übrigens bezieht sich die CPU-Auslastung im Allgemeinen auf den Prozentsatz der CPU-Auslastung für einen bestimmten Zeitraum. Wenn Sie 450 Millisekunden für eine bestimmte Zeit von 1 Sekunde ausführen, beträgt Ihre CPU-Auslastung 45%. Aus einer anderen Sicht waren 450 Millisekunden einer Sekunde voll in Betrieb. Wenn Sie also aus diesem Buch zitieren,

Das heißt, 450 Millisekunden von 1 Sekunde sind 100% CPU-Auslastung und die restlichen 550 Millisekunden sind 0%. Diese Bedingung wird als CPU-Auslastungsrate von 45% bezeichnet.

Deshalb. Ist es vernünftig, eine CPU-Auslastung von 45% zu sehen (die CPU lief 550 Millisekunden pro Sekunde nicht)? Wo soll ich das Problem beheben, wenn es nicht gültig ist? Sie müssen darüber nachdenken.

Vier. Am Ende

Das ultimative Ziel beim Ausführen eines Programms ist es, die gesamte CPU zu nutzen und sie in kurzer Zeit fertigzustellen. Mit anderen Worten: Maximieren Sie die Leistung bei 100% CPU-Auslastung. Wenn die CPU Zeit zum Ausruhen hat, stellen Sie sie daher wie oben beschrieben nach Bedarf ein. Verstehen Sie mich hier nicht falsch, eine 100% ige CPU-Auslastung ist ein Weg, die Leistung zu verbessern, nicht ein Ende. Wenn Sie versuchen, ein Programm auszuführen, und die CPU-Auslastung für eine lange Zeit 100% beträgt, wird es nicht nur in kurzer Zeit beendet, sondern verhindert auch die Ausführung anderer Programme, was zu schlechten Ergebnissen führt. .. Im Gegenteil, selbst wenn die CPU-Auslastung 70% beträgt und die Leistung den Anforderungen entspricht, wird davon ausgegangen, dass kein Problem vorliegt. "100% CPU-Auslastung" ist nicht schlecht. Es sollte jedoch unter der Voraussetzung gesagt werden, dass eine gute Leistung erzielt wird.

5. Nebenbei

Wenn Sie an Java-Bücher denken, denken viele Menschen an Einführungsbücher, die mit "Was ist Java?" Beginnen, Bücher, die beim Erstellen von Webanwendungen erklärt werden, und Bücher, die Entwurfsmuster einführen. Dieses Buch konzentriert sich auf die Java-Leistung. Das Know-how und die Analysemethode zur Verbesserung der Java-Leistung, der Mechanismus der Speicherbereinigung in JavaVM-Optionen usw. werden erläutert. Obwohl es ein übersetztes Buch ist, denke ich, dass es das einzige Buch in Japan ist, das sich auf diesen Standpunkt konzentriert. Wenn Sie interessiert sind, holen Sie es bitte ab und schauen Sie es sich an.

Vielen Dank, dass Sie so weit gelesen haben.

Recommended Posts

Ist die CPU-Auslastung zu 100% schlecht?
Warum Null schlecht sein soll