Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-6053

Suggested defaults for Metasize and Java 8


    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Major Major
    • 10.0.0.Final
    • None
    • Management
    • None

      This is the ticket to perform the analogous changes made to core in WFCORE-1319 regarding default MetasizeSpace/

      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:


      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.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
      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
      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

      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
      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
            0 Vote for this issue
            2 Start watching this issue