jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Schumacher <felix.schumac...@internetallee.de>
Subject Re: svn commit: r1822417 - in /jmeter/trunk/bin: jmeter jmeter.bat
Date Sat, 27 Jan 2018 16:16:41 GMT
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
>>>
>>>
>>>
>


Mime
View raw message