You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Philippe Mouawad <ph...@gmail.com> on 2018/01/27 15:54:22 UTC
Re: svn commit: r1822417 - in /jmeter/trunk/bin: jmeter jmeter.bat
On Sat, Jan 27, 2018 at 4:41 PM, Felix Schumacher <
felix.schumacher@internetallee.de> wrote:
> Am 27.01.2018 um 16:24 schrieb pmouawad@apache.org:
>
>> Author: pmouawad
>> Date: Sat Jan 27 15:24:32 2018
>> New Revision: 1822417
>>
>> URL: http://svn.apache.org/viewvc?rev=1822417&view=rev
>> Log:
>> Comment JAVAVER better as per Felix note
>> Adapt some GC tuning based on:
>> - http://www.evanjones.ca/jvm-mmap-pause.html
>> - https://docs.oracle.com/javase/9/gctuning/garbage-first-
>> garbage-collector-tuning.htm
>>
> I think it would be better to leave GC tuning to the user, as it is really
> specific to the users environment.
>
> The first URL points to problems with GC that happened on a JVM with at
> least 17G of RAM.
I agree that it breaks jstat, if you feel we should keep it commented ok
for me.
Regarding heap size, are you sure ? where did you find it ?
> Our default is 512M (which is pretty low nowadays).
I think we should increase it to 1G , I never really run it with default
options.
> The problem occurred on a program, that used memory mapped files. Does
> JMeter use it by default? I don't know.
>
Isn't it related to Java ?
https://bugs.openjdk.java.net/browse/JDK-8076103
> And as a side effect the options from the first URL will break jstat - a
> tool, that I often use to find memory and performance problems.
>
> Another thing to keep in mind is, that G1 is designed for heap sizes of
> 32G and more.
>
In my experience (but I am not very good at GC tuning), I had better
results regarding STW with G1 (even for heaps > 3g ) than with other
policies.
>
> But on the other hand, if you found those options to be helpful with your
> tests, it is good to document them.
>
> Felix
>
>
>
>> Modified:
>> jmeter/trunk/bin/jmeter
>> jmeter/trunk/bin/jmeter.bat
>>
>> Modified: jmeter/trunk/bin/jmeter
>> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter?rev=182
>> 2417&r1=1822416&r2=1822417&view=diff
>> ============================================================
>> ==================
>> --- jmeter/trunk/bin/jmeter (original)
>> +++ jmeter/trunk/bin/jmeter Sat Jan 27 15:24:32 2018
>> @@ -35,7 +35,7 @@
>> ##
>> ## JMETER_GC_ALGO (Optional) Java runtime options to specify JVM
>> garbage collection
>> ## algorithm
>> -## Defaults to "-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>> -XX:G1ReservePercent=20"
>> +## Defaults to "-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>> -XX:+PerfDisableSharedMem"
>> ##
>> ## JMETER_HEAP (Optional) Java runtime options for memory
>> management
>> ## used when JMeter is started.
>> @@ -173,7 +173,7 @@ esac
>> # RUN_IN_DOCKER="-XX:+UnlockExperimentalVMOptions
>> -XX:+UseCGroupMemoryLimitForHeap"
>> # Finally, some tracing to help in case things go astray:
>> -: "${JMETER_GC_ALGO:="-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>> -XX:G1ReservePercent=20"}"
>> +: "${JMETER_GC_ALGO:="-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>> -XX:+PerfDisableSharedMem"}"
>> # Always dump on OOM (does not cost anything unless triggered)
>>
>> Modified: jmeter/trunk/bin/jmeter.bat
>> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.bat?rev
>> =1822417&r1=1822416&r2=1822417&view=diff
>> ============================================================
>> ==================
>> --- jmeter/trunk/bin/jmeter.bat (original)
>> +++ jmeter/trunk/bin/jmeter.bat Sat Jan 27 15:24:32 2018
>> @@ -37,7 +37,7 @@ rem JVM_ARGS - (Optional) Java opti
>> rem Defaults to '-Duser.language="en"
>> -Duser.region="EN"'
>> rem
>> rem GC_ALGO - (Optional) JVM garbage collector options
>> -rem Defaults to '-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>> -XX:G1ReservePercent=20'
>> +rem Defaults to '-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>> -XX:+PerfDisableSharedMem'
>> rem
>> rem HEAP - (Optional) JVM memory settings used when starting
>> JMeter
>> rem Defaults to '-Xms512m -Xmx512m
>> -XX:MaxMetaspaceSize=256m'
>> @@ -92,7 +92,9 @@ if not defined JAVAVER (
>> rem Check if version is from OpenJDK or Oracle Hotspot JVM prior to
>> 9 containing 1.${version}.x
>> -rem JAVAVER will contain "XXXX", so we extract 2 chars starting from
>> index 1
>> +rem JAVAVER will be equal to "9.0.4" (quotes are part of the value) for
>> Oracle Java 9
>> +rem JAVAVER will be equal to "1.8.0_161" (quotes are part of the value)
>> for Oracle Java 8
>> +rem so we extract 2 chars starting from index 1
>> IF "%JAVAVER:~1,2%"=="1." (
>> set JAVAVER=%JAVAVER:"=%
>> for /f "delims=. tokens=1-3" %%v in ("%JAVAVER%") do (
>> @@ -146,7 +148,7 @@ rem Uncomment this to generate GC verbos
>> rem set VERBOSE_GC=-Xlog:gc*,gc+age=trace,gc+heap=debug:file=gc_jmet
>> er_%%p.log
>> if not defined GC_ALGO (
>> - set GC_ALGO=-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>> -XX:G1ReservePercent=20
>> + set GC_ALGO=-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>> -XX:+PerfDisableSharedMem
>> )
>> set SYSTEM_PROPS=-Djava.security.egd=file:/dev/urandom
>>
>>
>>
>
--
Cordialement.
Philippe Mouawad.
Re: svn commit: r1822417 - in /jmeter/trunk/bin: jmeter jmeter.bat
Posted by Felix Schumacher <fe...@internetallee.de>.
Am 27.01.2018 um 16:54 schrieb Philippe Mouawad:
> On Sat, Jan 27, 2018 at 4:41 PM, Felix Schumacher <
> felix.schumacher@internetallee.de> wrote:
>
>> Am 27.01.2018 um 16:24 schrieb pmouawad@apache.org:
>>
>>> Author: pmouawad
>>> Date: Sat Jan 27 15:24:32 2018
>>> New Revision: 1822417
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1822417&view=rev
>>> Log:
>>> Comment JAVAVER better as per Felix note
>>> Adapt some GC tuning based on:
>>> - http://www.evanjones.ca/jvm-mmap-pause.html
>>> - https://docs.oracle.com/javase/9/gctuning/garbage-first-
>>> garbage-collector-tuning.htm
>>>
>> I think it would be better to leave GC tuning to the user, as it is really
>> specific to the users environment.
>>
>> The first URL points to problems with GC that happened on a JVM with at
>> least 17G of RAM.
> I agree that it breaks jstat, if you feel we should keep it commented ok
> for me.
> Regarding heap size, are you sure ? where did you find it ?
Do you mean the heap size of 17G? That can be deduced from the given gc
log entries.
>
>
>
>> Our default is 512M (which is pretty low nowadays).
> I think we should increase it to 1G , I never really run it with default
> options.
+1 :)
>
>
>> The problem occurred on a program, that used memory mapped files. Does
>> JMeter use it by default? I don't know.
>>
> Isn't it related to Java ?
> https://bugs.openjdk.java.net/browse/JDK-8076103
When I read the comments correctly on the original first URL, it seems
that the problem does not seem to be that hard, if /tmp is on tmpfs
(which it is on many modern linux distros).
Did you experience long lags in GC?
>
>
>> And as a side effect the options from the first URL will break jstat - a
>> tool, that I often use to find memory and performance problems.
>>
>> Another thing to keep in mind is, that G1 is designed for heap sizes of
>> 32G and more.
>>
> In my experience (but I am not very good at GC tuning), I had better
> results regarding STW with G1 (even for heaps > 3g ) than with other
> policies.
I think the differences for "normal" programs are rather small,
especially on small heaps. But I found
https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsTuneJVM.html
where G1 is recommended for heaps from 16GB upwards and CMS for lower
heap sizes.
But on as G1 is the default in Java 8 and having no negative report so
far, we should stay with G1.
Felix
>
>> But on the other hand, if you found those options to be helpful with your
>> tests, it is good to document them.
>>
>> Felix
>>
>>
>>
>>> Modified:
>>> jmeter/trunk/bin/jmeter
>>> jmeter/trunk/bin/jmeter.bat
>>>
>>> Modified: jmeter/trunk/bin/jmeter
>>> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter?rev=182
>>> 2417&r1=1822416&r2=1822417&view=diff
>>> ============================================================
>>> ==================
>>> --- jmeter/trunk/bin/jmeter (original)
>>> +++ jmeter/trunk/bin/jmeter Sat Jan 27 15:24:32 2018
>>> @@ -35,7 +35,7 @@
>>> ##
>>> ## JMETER_GC_ALGO (Optional) Java runtime options to specify JVM
>>> garbage collection
>>> ## algorithm
>>> -## Defaults to "-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>>> -XX:G1ReservePercent=20"
>>> +## Defaults to "-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>>> -XX:+PerfDisableSharedMem"
>>> ##
>>> ## JMETER_HEAP (Optional) Java runtime options for memory
>>> management
>>> ## used when JMeter is started.
>>> @@ -173,7 +173,7 @@ esac
>>> # RUN_IN_DOCKER="-XX:+UnlockExperimentalVMOptions
>>> -XX:+UseCGroupMemoryLimitForHeap"
>>> # Finally, some tracing to help in case things go astray:
>>> -: "${JMETER_GC_ALGO:="-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>>> -XX:G1ReservePercent=20"}"
>>> +: "${JMETER_GC_ALGO:="-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>>> -XX:+PerfDisableSharedMem"}"
>>> # Always dump on OOM (does not cost anything unless triggered)
>>>
>>> Modified: jmeter/trunk/bin/jmeter.bat
>>> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.bat?rev
>>> =1822417&r1=1822416&r2=1822417&view=diff
>>> ============================================================
>>> ==================
>>> --- jmeter/trunk/bin/jmeter.bat (original)
>>> +++ jmeter/trunk/bin/jmeter.bat Sat Jan 27 15:24:32 2018
>>> @@ -37,7 +37,7 @@ rem JVM_ARGS - (Optional) Java opti
>>> rem Defaults to '-Duser.language="en"
>>> -Duser.region="EN"'
>>> rem
>>> rem GC_ALGO - (Optional) JVM garbage collector options
>>> -rem Defaults to '-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>>> -XX:G1ReservePercent=20'
>>> +rem Defaults to '-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>>> -XX:+PerfDisableSharedMem'
>>> rem
>>> rem HEAP - (Optional) JVM memory settings used when starting
>>> JMeter
>>> rem Defaults to '-Xms512m -Xmx512m
>>> -XX:MaxMetaspaceSize=256m'
>>> @@ -92,7 +92,9 @@ if not defined JAVAVER (
>>> rem Check if version is from OpenJDK or Oracle Hotspot JVM prior to
>>> 9 containing 1.${version}.x
>>> -rem JAVAVER will contain "XXXX", so we extract 2 chars starting from
>>> index 1
>>> +rem JAVAVER will be equal to "9.0.4" (quotes are part of the value) for
>>> Oracle Java 9
>>> +rem JAVAVER will be equal to "1.8.0_161" (quotes are part of the value)
>>> for Oracle Java 8
>>> +rem so we extract 2 chars starting from index 1
>>> IF "%JAVAVER:~1,2%"=="1." (
>>> set JAVAVER=%JAVAVER:"=%
>>> for /f "delims=. tokens=1-3" %%v in ("%JAVAVER%") do (
>>> @@ -146,7 +148,7 @@ rem Uncomment this to generate GC verbos
>>> rem set VERBOSE_GC=-Xlog:gc*,gc+age=trace,gc+heap=debug:file=gc_jmet
>>> er_%%p.log
>>> if not defined GC_ALGO (
>>> - set GC_ALGO=-XX:+UseG1GC -XX:MaxGCPauseMillis=250
>>> -XX:G1ReservePercent=20
>>> + set GC_ALGO=-XX:+UseG1GC -XX:MaxGCPauseMillis=100
>>> -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled
>>> -XX:+PerfDisableSharedMem
>>> )
>>> set SYSTEM_PROPS=-Djava.security.egd=file:/dev/urandom
>>>
>>>
>>>
>