Garbage Collection Einstellungen ändern

Aus YaCyWiki
Wechseln zu: Navigation, Suche

Garbarge Collection Einstellungen ändern

Die Garbarge-Collection Einstellungen die standardmäßig in Yacy gesetzt werden, wurden dahingehend optimiert, auf einer möglichst großen Anzahl von Rechnern zu funktionieren. Je nach Verwendungszweck bzw. verwendeter Java-VM ist eine Änderung dieser Parameter sinnvoll und kann zu einer deutlich erhöhten Performance bzw. kürzer Ansprechzeit des Yacy Peers führen.

In Windows/Linux werden verschiedene Einstellung übergeben, diese stehen in den jeweiligen Startscripten.

Linux - startYACY.sh:
#get javastart args
JAVA_ARGS="-server -XX:+UseAdaptiveSizePolicy";
#JAVA_ARGS="-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails $JAVA_ARGS";

Windows - startYACY.bat:

Optimierung: Es wurde auf flüssigere Reaktionszeit und geringere Pausenzeit hin optimiert, folgende Einstellungen/Parameter haben sich bewährt:

#get javastart args
JAVA_ARGS="-server -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:NewRatio=3 -XX:MaxTenuringThreshold=8 -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dfile.encoding=UTF-8";
#JAVA_ARGS="-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails $JAVA_ARGS";

Erläuterung:
Ziel der Optimierung war es minimale Pausenzeiten zu erreichen, der SUMA-EV Peer mit dem intensiv getestet wird bedient Metager, daher ist in diesem Fall nicht der maximale Durchsatz Interessant, sondern möglichst kurze Antwortzeiten. Mit den oben angegebenen Einstellungen wird die Old Generation konkurrierend aufgeräumt (-XX:+UseConcMarkSweepGC). Wird der Yacy Perr also noch für andere Prozesse/Dienste verwendet empfiehlt es sich, z.B. bei einem Quadcore-Prozessor nur 2 Kerne für die Parallele Garbarge Collection zu nutzen (-XX:ParallelGCThreads=2)

Die parallele Garbage Collection zahlt sich nur auf einer Multiprozessor-Maschine wirklich aus und ist auf einer Single-Prozessor-Maschine kontraproduktiv!

Achtung - alle hier genannten Optionen gelten nur für die Oracle-JVM - getestet wurde mit der Version:
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

Quellen und weiterführende Literatur:
Angelika Langer - Java Performance - Gabarge Collection
Angelika Langer - Java Performance - Gabarge Collector Tuning
Java HotSpot VM Options