Garbage Collection Einstellungen ändern
Aus YaCyWiki
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
