2010-07-30 10 views
30

Ich schaue auf die JVM-Konfigurationsoptionen für die Ausführung von Alfresco, vor allem this Dokument auf der Alfresco Wiki. Eine der Empfehlungen besteht darin, die JVM-Flags -Xcomp und -Xbatch zu verwenden. Die Begründung dafür lautet:Java VM-Tuning - Xbatch und -Xcomp

Wenn Sie Hotspot die Klassen vorkompilieren möchten, können Sie [-Xcomp und -Xbatch] hinzufügen. Dies wird jedoch die Startzeit des Servers erheblich erhöhen, aber fehlende Abhängigkeiten, die später getroffen werden können, hervorheben.

Von dem, was ich habe read elsewhere über die -Xcomp und -Xbatch Flaggen, ich frage mich, ob sie wirklich einen Nutzen bieten.

  • -Xcomp bekommt HotSpot die gesamten Code vorher mit maximaler Optimierung zu kompilieren, wodurch jede Profilierung alledem ist die VM über den Standard-Betrieb des Systems erhalten.
  • -Xbatch stoppt Hintergrundkompilierung, was bedeutet, dass der Thread, der den Code verursacht hat, kompilierte Blöcke ist, bis die Kompilierung abgeschlossen ist. Nach der Kompilierung wird jedoch der zuvor blockierte Thread den kompilierten Code, it will still run the interpreted code nicht ausführen. Dies war eine Änderung in Java 6 (Mustang) - vor Mustang wurden Threads, die für das Kompilieren durch das Vorhandensein des -Xbatch-Flags blockiert waren, garantiert in dem kompilierten Code ausgeführt, sobald das Kompilieren abgeschlossen war. Daher schätze ich, dass die Empfehlung des Flags -Xbatch ein Relikt für die Ausführung von Alfresco auf älteren VMs ist.

Hat jemand irgendwelche Gedanken? Meine Neigung ist, diese beiden Flaggen loszuwerden und sich auf die VM zu verlassen, um die Dinge richtig zu machen.

Ich möchte zwei Dinge hinzufügen, vor allem, dass ich noch keinen Zugang zu einer Alfresco-Instanz habe, um das zu testen, und zweitens weiß ich nicht wirklich, welche Spezifikation der Maschine Alfresco anders hostet Bei den anderen Konfigurationsoptionen muss es sich um eine 64-Bit-VM handeln. Trotzdem hoffe ich, dass die Community einen nützlichen Input erhält, vielleicht aus einer allgemeinen Perspektive von HotSpot-Tuning.

+0

Der Real-World-Beispielabschnitt auf der Alfresco-Seite ist Aug 2009 und es scheint JDK 1.6 zu sein? – shinynewbike

+0

@ktaylorjohn Ja, das ist richtig, aber ich frage mich nur, ob die -Xbatch und -Xcomp Flags einen Unterschied machen. Alfresco scheint das einzige Projekt zu sein, das diese Flags außerhalb der JVM-Tests und ähnlichem erwähnt. – Rich

Antwort

21

Im Allgemeinen ist es immer vorzuziehen, den HotSpot-Compiler selbst einstellen zu lassen. Auch die Verwendung von Server-VM (-server) ist standardmäßig für 64-Bit- und einige Server-Computer geeignet.

-Xbatch wurde meistens für das Debuggen bestimmt wie in Steve Goldman's blog beschrieben Sie darauf:

So ist der -Xbatch Schalter ist nicht ein besonders nützlicher Schalter auch in den Pre-Mustang Tage. Es ist etwas nützlich für jvm-Entwickler, da es dazu neigt, einen Lauf vorhersehbarer und reproduzierbarer zu machen.

-Xcomp entfernt die Fähigkeit, Informationen für eine effiziente Kompilierung zu sammeln. Von einem Alex Turner's post:

Man könnte denken, dass -Xcomp eine gute Idee aus Sicht der Leistung wäre. Es ist jedoch nicht! Der JIT-Compiler verwendet diese 1000 Iterationen vor der Kompilierung, um Informationen darüber zu sammeln, wie die Methode für optimale Effizienz kompiliert werden sollte. -Xcomp entfernt seine Fähigkeit, dies zu tun, und so können wir tatsächlich einen Leistungsverzug sehen.

Ohne Leistung im Verstand, habe ich noch nie fehlende Abhängigkeiten unter Verwendung dieser Flags gesehen zu erkennen (and it may not work if some code is still interpreted) so IMHO würde ich loswerden beide bekommen.

+0

Verbindung ist tot BTW – Eugene

0

Alfresco ist ein Enterprise Content Management. Ich bin mir nicht sicher, wie die Flags ihre Leistung beeinflussen. Dann eine Notiz auf der gleichen Seite sagte ..

- Dies wird jedoch erheblich die Server-Startzeit erhöhen, sondern wird fehlende Abhängigkeiten, die später getroffen werden können, markieren. ...

IMHO, der Autor meinte nicht wirklich eine Leistungssteigerung. Er/sie schrieb es als Mittel, um zu überprüfen, ob alle Abhängigkeiten vorhanden sind.