XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Major Major
    • 7.0.0.ER5
    • None
    • Management
    • None

      This is the ticket to perform the analogous changes made to core in WFCORE-1319 regarding default MetasizeSpace, for Wildfly.

      Since PermGen is no longer used, and has been replaced by Metasize, we probably need to alter the initial startup values. Current WF is using:

      -XX:MaxMetaspaceSize=256m

      After some testing with garbage collection logging on (-verbose:gc -Xloggc:hcgc.log -XX:+PrintGCDateStamps -XX:MetaspaceSize=XX), the GC logs were monitored for at least one occurrence of a full GC due to Metadata threshold (example [Full GC (Metadata GC Threshold) 39592K->20187K). Using this information, minimum levels of Metasize for various configurations were determined.

      The numbers below are the values used for -XX:MetaspaceSize=XXM followed by the number of full GCs triggered at that amount measured during boot of WF10-full:

      Standalone:

      standalone.xml 52MB(1), 53MB(0)
      standalone-full.xml 64MB(1), 65MB(0)
      standalone-ha.xml 52MB(1), 54MB(0)
      standalone-full-ha.xml 79MB(1), 80MB(0)

      For domain mode, the corresponding values were determined to be:

      Process Controller: 12MB(1), 13MB(0)
      Host Controller: 39MB(1), 40MB(0)

      In domain mode, a very slight, non-scientifically measured boot time difference was observed (1769ms default Metasize vs 1694ms with 40m MetaSize set for host controller).

      The approximate cost of increasing MetaSize over the default is summerized below (using top to collect RSS after server boot):

      JBoss AS 7.1.1: (default permgen (-XX:PermSize=256m -XX:MaxPermSize=256m), JDK 7)

      Configuration RSS(KB)
      standalone.xml 182,652
      standalone-ha.xml 211,672
      standalone-full.xml 217,636
      standalone-full-ha.xml 289,524
      domain:
      Server-one: 227,220
      Server-two: 234,944
      PC: 37,584
      HC: 138,428

      Wildfly 10: (default Metasize == 21M)

      Configuration RSS(KB)
      standalone.xml 293,576
      standalone-ha.xml 303,344
      standalone-full.xml 388,660
      standalone-full-ha.xml 478,576
      domain:
      Server-one: 379,076
      Server-two: 377,516
      PC: 55,000
      HC: 272,120

      Wildfly 10: (Metasize == 64M)

      standalone.xml 290,236
      standalone-ha.xml 306,032
      standalone-full.xml 396,596
      standalone-full-ha.xml 501,576
      domain:
      Server-one:
      Server-two:
      PC:
      HC:

      Wildfly 10: (Metasize == 96M)

      Configuration RSS(KB)
      standalone.xml 317,996
      standalone-ha.xml 306,516
      standalone-full.xml 416,008
      standalone-full-ha.xml 460,952
      domain:
      Server-one: 380,816
      Server-two: 374,300
      PC: 55,308
      HC: 273,220

      Additional measurements. Using just Wildfly-core, the following RSS sizes are measured for the indicated Metasize:

      Wildfly-10 Core master

      Metasize RSS(KB)
      21m 117,760
      64m 120,772
      96m 131,104

      There is little boot time impact on the change:

      Wildfly-10 Core master

      Metasize Boot time (MS)
      21m 2127
      64m 2066
      96m 2099

      Based on the memory impact of defaulting to 96M (approx 30mb initially over the default value of 21mb), it would seem to make sense to use this as a default value, which allows maintaining boot times without incurring a full GC due to Metasize and provides enough initial Metasize to both start the application server and perhaps deploy an application without incurring any performance penalty.

      An additional note: host*.xml has JVM params set to MetaspaceSize=256m, which is probably too large an initial value.

              kwills@redhat.com Ken Wills
              kwills@redhat.com Ken Wills
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: