Mercurial > hg > gc-bench
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) {