Hi there,
Am 16.01.2017 um 22:27 schrieb [email protected]:
Author: pmouawad
Date: Mon Jan 16 21:27:21 2017
New Revision: 1779108
URL: http://svn.apache.org/viewvc?rev=1779108&view=rev
Log:
Bug 60593 - Switch to G1 GC algorithm
Bugzilla Id: 60593
Modified:
jmeter/trunk/bin/jmeter
jmeter/trunk/bin/jmeter.bat
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/bin/jmeter
URL:
http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter?rev=1779108&r1=1779107&r2=1779108&view=diff
==============================================================================
--- jmeter/trunk/bin/jmeter (original)
+++ jmeter/trunk/bin/jmeter Mon Jan 16 21:27:21 2017
@@ -67,10 +67,7 @@ done
PRGDIR=`dirname "$PRG"`
-# The following should be reasonably good values for most tests running
-# on Sun JVMs. Following is the analysis on which it is based. If it's total
-# gibberish to you, please study my article at
-#
http://www.atg.com/portal/myatg/developer?paf_dm=full&paf_gear_id=1100010&detailArticle=true&id=9606
+#
# Original page has disappeared, it is now only available at:
#
https://web.archive.org/web/20060614151434/http://www.atg.com/portal/myatg/developer?paf_dm=full&paf_gear_id=1100010&detailArticle=true&id=9606
#
@@ -90,36 +87,18 @@ PRGDIR=`dirname "$PRG"`
# system's memory availability:
HEAP="-Xms512m -Xmx512m"
-# There's an awful lot of per-sample objects allocated during test run, so we
-# need a large eden to avoid too frequent scavenges -- you'll need to tune this
-# down proportionally if you modify the HEAP values above, below example is
fine for 512m of Heap:
-# NEW="-XX:NewSize=128m -XX:MaxNewSize=128m"
-
-# This ratio and target have been proven OK in tests with a specially high
-# amount of per-sample objects (the HtmlParserHTMLParser tests):
-# SURVIVOR="-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50"
-
-# Think about it: trying to keep per-run objects in tenuring definitely
-# represents a cost, but where's the benefit? They won't disappear before
-# the test is over, and at that point we will no longer care about performance.
-#
-# So we will have JMeter do an explicit Full GC before starting a test run,
-# but then we won't make any effort (or spend any CPU) to keep objects
-# in tenuring longer than the life of per-sample objects -- which is hopefully
-# shorter than the period between two scavenges):
-#
-TENURING="-XX:MaxTenuringThreshold=2"
-
-CLASS_UNLOAD="-XX:+CMSClassUnloadingEnabled"
+#VERBOSE_GC="-verbose:gc -Xloggc:gc_jmeter_%p.log -XX:+PrintGCDetails
-XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC
-XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCDateStamps"
# Finally, some tracing to help in case things go astray:
-#DEBUG="-verbose:gc -XX:+PrintTenuringDistribution"
+GC_ALGO="-XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20"
+
+CLASS_UNLOAD="-XX:+CMSClassUnloadingEnabled"
I think CMS class unloading doesn't make sense in combination with G1.
CMS (concurrent Mark Sweep) is an alternative collector which can be
used instead of G1. IMHO we should drop this variable ...
# Always dump on OOM (does not cost anything unless triggered)
DUMP="-XX:+HeapDumpOnOutOfMemoryError"
SERVER="-server"
-ARGS="$SERVER $DUMP $HEAP $NEW $SURVIVOR $TENURING $PERM $CLASS_UNLOAD"
+ARGS="$SERVER $DUMP $HEAP $CLASS_UNLOAD $VERBOSE_GC $GC_ALGO"
... and remove it from ARGS
java $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"
Modified: jmeter/trunk/bin/jmeter.bat
URL:
http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.bat?rev=1779108&r1=1779107&r2=1779108&view=diff
==============================================================================
--- jmeter/trunk/bin/jmeter.bat (original)
+++ jmeter/trunk/bin/jmeter.bat Mon Jan 16 21:27:21 2017
@@ -71,31 +71,24 @@ rem On NT/2K grab all arguments at once
set JMETER_CMD_LINE_ARGS=%*
rem The following link describes the -XX options:
-rem
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
-rem http://java.sun.com/developer/TechTips/2000/tt1222.html has some more
descriptions
-rem Unfortunately TechTips no longer seem to be available, except via:
-rem
https://web.archive.org/web/20090614101951/http://java.sun.com/developer/TechTips/2000/tt1222.html
+rem http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms512m -Xmx512m
-set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
-set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
-set TENURING=-XX:MaxTenuringThreshold=2
-rem Java 8 remove Permanent generation, don't settings the PermSize
-if %current_minor% LEQ "8" (
- rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
- set PERM=-XX:PermSize=64m -XX:MaxPermSize=128m
-)
+
+#Uncomment this to generate GC verbose file
+rem set VERBOSE_GC=-verbose:gc -Xloggc:gc_jmeter_%p.log -XX:+PrintGCDetails
-XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC
-XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCDateStamps
+
+set GC_ALGO=-XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20
set CLASS_UNLOAD=-XX:+CMSClassUnloadingEnabled
Same here ...
-rem set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution
rem Always dump on OOM (does not cost anything unless triggered)
set DUMP=-XX:+HeapDumpOnOutOfMemoryError
rem Additional settings that might help improve GUI performance on some
platforms
-rem See: http://java.sun.com/products/java-media/2D/perf_graphics.html
+rem See: http://www.oracle.com/technetwork/java/perf-graphics-135933.html
set DDRAW=
rem Setting this flag to true turns off DirectDraw usage, which sometimes
helps to get rid of a lot of rendering problems on Win32.
@@ -109,7 +102,7 @@ rem set DDRAW=%DDRAW% -Dsun.java2d.ddsca
rem Server mode
rem Collect the settings defined above
-set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD%
%DDRAW%
+set ARGS=%DUMP% %HEAP% %CLASS_UNLOAD% %VERBOSE_GC% %GC_ALGO% %DDRAW%
... and here
%JM_START% %JM_LAUNCH% %ARGS% %JVM_ARGS% -jar "%JMETER_BIN%ApacheJMeter.jar"
%JMETER_CMD_LINE_ARGS%
Modified: jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1779108&r1=1779107&r2=1779108&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Mon Jan 16 21:27:21 2017
@@ -153,6 +153,7 @@ JMeter now requires Java 8. Ensure you u
<li><bug>54525</bug>Search Feature : Enhance it with ability to
replace</li>
<li><bug>60530</bug>Add API to create JMeter threads while test is running.
Based on a contribution by Logan Mauzaize (logan.mauzaize at gmail.com) and Maxime Chassagneux
(maxime.chassagneux at gmail.com).</li>
<li><bug>60514</bug>Ability to apply a naming convention on Children of a
Transaction Controller. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
+ <li><bug>60593</bug>Switch to G1 GC algorithm</li>
</ul>
<ch_section>Non-functional changes</ch_section>
Regards,
Rainer