changeset 9:981c1933c611

Touchups and cleanups.
author shade
date Mon, 28 Nov 2016 19:37:33 +0100
parents 9b4b9f98da13
children 8b00b8374cba
files src/main/java/org/openjdk/gcbench/GCBench.java src/main/java/org/openjdk/gcbench/tests/DimensionType.java src/main/java/org/openjdk/gcbench/tests/DimensionalTest.java
diffstat 3 files changed, 33 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/openjdk/gcbench/GCBench.java	Mon Nov 28 19:00:18 2016 +0100
+++ b/src/main/java/org/openjdk/gcbench/GCBench.java	Mon Nov 28 19:37:33 2016 +0100
@@ -133,6 +133,16 @@
                         .warmupTime(TimeValue.seconds(1))
                         .measurementIterations(5)
                         .measurementTime(TimeValue.seconds(5))
+                        .forks(1)
+                        .build();
+                break;
+            case tough:
+                opts = new OptionsBuilder()
+                        .parent(opts)
+                        .warmupIterations(3)
+                        .warmupTime(TimeValue.seconds(1))
+                        .measurementIterations(5)
+                        .measurementTime(TimeValue.seconds(5))
                         .forks(5)
                         .build();
                 break;
@@ -159,14 +169,14 @@
                     "alloc.peak.intarray", groupDescr + "Allocates int[] arrays of different sizes.",
                     Dimensions.threads(),
                     Dimensions.heapSize(8),
-                    Dimensions.size(1, 1_000_000, s -> s*2)
+                    Dimensions.size(1, 1_000_000, s -> s*10)
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.alloc.plain.RefArray.class,
                     "alloc.peak.refarray", groupDescr + "Allocates Object[] arrays of different sizes.",
                     Dimensions.threads(),
                     Dimensions.heapSize(8),
-                    Dimensions.size(1, 1_000_000, s -> s*2)
+                    Dimensions.size(1, 1_000_000, s -> s*10)
             ));
         }
 
@@ -207,20 +217,22 @@
             String groupDescr = "Populates heap with data, and randomly overwrites the part of it to cause fragmentation. ";
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.fragger.ArrayFragger.class,
-                    "fragger.arraylist", groupDescr + "Retains an ArrayList.",
-                    Dimensions.threads(),
+                    "fragger.array", groupDescr + "Retains a single large reference array.",
+                    true,
                     Dimensions.heapSize(8),
                     Dimensions.lds(8)
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.fragger.TreeFragger.class,
                     "fragger.tree", groupDescr + "Retains a binary tree of Nodes.",
+                    true,
                     Dimensions.heapSize(8),
                     Dimensions.lds(8)
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.fragger.LinkedListFragger.class,
                     "fragger.linkedlist", groupDescr + "Retains a LinkedList.",
+                    true,
                     Dimensions.heapSize(8),
                     Dimensions.lds(8)
              ));
@@ -231,17 +243,17 @@
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.StringTableRoots.class,
                     "roots.strings", groupDescr + "Allocates and retains a number of interned Strings.",
-                    Dimensions.size(0, 1000, s -> s + 100)
+                    Dimensions.size(1, 10000000, s -> s*10)
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.Synchronizers.class,
                     "roots.synchronizers", groupDescr + "Inflates and retains a number of synchronized objects.",
-                    Dimensions.size(0, 1000, s -> s + 100)
+                    Dimensions.size(1, 100000, s -> s*10)
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.ThreadVarRoots.class,
                     "roots.locals", groupDescr + "Produces lots of intermediate local variables on thread stacks.",
-                    Dimensions.size(0, 1000, s -> s + 100)
+                    Dimensions.size(1, 100000, s -> s*10)
             ));
         }
     }
@@ -251,6 +263,7 @@
         flash,
         quick,
         normal,
+        tough,
     }
 
     public void run() throws RunnerException {
--- a/src/main/java/org/openjdk/gcbench/tests/DimensionType.java	Mon Nov 28 19:00:18 2016 +0100
+++ b/src/main/java/org/openjdk/gcbench/tests/DimensionType.java	Mon Nov 28 19:37:33 2016 +0100
@@ -4,7 +4,7 @@
 
     HEAPSIZE("Heap size"),
 
-    LDS("Live data set"),
+    LDS("LDS"),
 
     SIZE("Size"),
 
--- a/src/main/java/org/openjdk/gcbench/tests/DimensionalTest.java	Mon Nov 28 19:00:18 2016 +0100
+++ b/src/main/java/org/openjdk/gcbench/tests/DimensionalTest.java	Mon Nov 28 19:37:33 2016 +0100
@@ -46,11 +46,11 @@
         }
 
         if (rated) {
-            pw.printf("%-15s ", "Rate");
+            pw.printf("%-15s ", "Target rate");
         }
 
         pw.printf("%-35s %-25s %-43s      %-43s %n",
-                "Performance",
+                "Work rate",
                 "Allocation rate",
                 "Pauses (sum, 99%, 99.9%, 99.99%)",
                 "TTSP (sum, 99%, 99.9%, 99.99%)"
@@ -62,15 +62,20 @@
                     .parent(baseOpts)
                     .include(benchmark.getName());
 
+            int heapSize = -1;
+            int lds = -1;
+
             for (int i = 0; i < dimensions.length; i++) {
                 Dimension d = dimensions[i];
                 int value = values.values[i];
                 switch (d.type()) {
                     case HEAPSIZE:
                         builder = builder.jvmArgsAppend("-Xmx" + value + "m", "-Xms" + value + "m", "-XX:+AlwaysPreTouch");
+                        heapSize = value;
                         break;
                     case LDS:
                         builder = builder.param("ldsMB", String.valueOf(value));
+                        lds = value;
                         break;
                     case THREADS:
                         builder = builder.threads(value);
@@ -83,6 +88,11 @@
                 }
             }
 
+            if (heapSize != -1 && lds != -1 && lds >= heapSize) {
+                // Skip this one!
+                continue;
+            }
+
             if (rated) {
                 int maxRate = calibrateRate(builder.build());
                 for (int rate = maxRate / 10; rate <= maxRate; rate += maxRate / 10) {