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

Reply via email to