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.

Momentan werden in Windows/Linux verschiedene Einstellung übergeben, diese stehen im jeweiligen Startscript.

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: Die beiden SUMA-EV Peers wurden auf flüssigere Reaktionszeit und geringere Pausenzeit hin optimiert, folgende Einstellungen/Parameter werden auf diesen Peers benutzt:

#get javastart args
JAVA_ARGS="-server -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=4 -XX:MaxPermSize=45m -XX:ReservedCodeCacheSize=25m";
#JAVA_ARGS="-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails $JAVA_ARGS";

Erläuterung:
Ziel der Optimierung war es minimale Pausenzeiten zu erreichen, die beiden SUMA-EV Peers bedienen 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), die Young Generation wird parallel aufgeräumt, um die Leistung der Prozessoren auszunutzen. Mit -XX:ParallelGCThreads=4 wird die Anzahl der Threads festgelegt die für die parallele Garbage Collection verwendet werden sollen. Standardmäßig entspricht dieser Wert der Zahl der vorhandenen Prozessoren (oder der Anzahl der vorhandenen CPU-Kerne). 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 SUN-JVM!

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