Mercurial > hg > gc-bench
changeset 54:adaa1d0e7226
Cut down threads/heap size steps.
author | shade |
---|---|
date | Fri, 16 Dec 2016 12:59:31 +0100 |
parents | fca0611bff52 |
children | 27585a7e9a03 |
files | src/main/java/org/openjdk/gcbench/GCBench.java src/main/java/org/openjdk/gcbench/tests/Sequence.java |
diffstat | 2 files changed, 36 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/openjdk/gcbench/GCBench.java Thu Dec 15 23:19:23 2016 +0100 +++ b/src/main/java/org/openjdk/gcbench/GCBench.java Fri Dec 16 12:59:31 2016 +0100 @@ -73,7 +73,7 @@ .withRequiredArg().ofType(Integer.class).describedAs("MB"); OptionSpec<Integer> optMinHeap = parser.accepts("minHeap", "Min heap to be used for tests.") - .withRequiredArg().ofType(Integer.class).describedAs("MB").defaultsTo(8192); + .withRequiredArg().ofType(Integer.class).describedAs("MB"); OptionSpec<Integer> optMinThreads = parser.accepts("minThreads", "Min threads to be used for tests.") .withRequiredArg().ofType(Integer.class).describedAs("#").defaultsTo(1); @@ -89,14 +89,6 @@ return; } - if (set.has(optMaxHeap)) { - HeapSizeManager.override(set.valueOf(optMinHeap), set.valueOf(optMaxHeap)); - } else { - pw.println("===== Calibrating max heap size"); - pw.println(); - HeapSizeManager.init(set.valueOf(optMinHeap), pw); - } - final int MIN_THREADS = set.valueOf(optMinThreads); final int MAX_THREADS; if (set.has(optMaxThreads)) { @@ -105,6 +97,28 @@ MAX_THREADS = Runtime.getRuntime().availableProcessors()*2; } + List<Integer> threads = new ArrayList<>(); + threads.add(1); + threads.add(Runtime.getRuntime().availableProcessors()/2); + threads.add(Runtime.getRuntime().availableProcessors()); + threads.add(Runtime.getRuntime().availableProcessors()*2); + threads.removeIf(i -> i < MIN_THREADS || i > MAX_THREADS); + + int minHeap; + if (set.has(optMinHeap)) { + minHeap = set.valueOf(optMinHeap); + } else { + minHeap = Runtime.getRuntime().availableProcessors() * 1024; // 1 GB per thread + } + + if (set.has(optMaxHeap)) { + HeapSizeManager.override(minHeap, set.valueOf(optMaxHeap)); + } else { + pw.println("===== Calibrating max heap size"); + pw.println(); + HeapSizeManager.init(minHeap, pw); + } + Options opts = new OptionsBuilder() .detectJvmArgs() .threads(Threads.MAX) @@ -171,20 +185,20 @@ tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.alloc.plain.Objects.class, "alloc.peak.object", groupDescr + "Allocates plain Java Objects.", - Dimensions.threads(Sequence.powersOfTwo(MIN_THREADS, MAX_THREADS)), + Dimensions.threads(Sequence.predefined(threads)), Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)) )); tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.alloc.plain.PrimArray.class, "alloc.peak.intarray", groupDescr + "Allocates int[] arrays of different sizes.", - Dimensions.threads(Sequence.powersOfTwo(MIN_THREADS, MAX_THREADS)), + Dimensions.threads(Sequence.predefined(threads)), Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), Dimensions.size(Sequence.powersOfTen(1, 10_000_000)) )); tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.alloc.plain.RefArray.class, "alloc.peak.refarray", groupDescr + "Allocates Object[] arrays of different sizes.", - Dimensions.threads(Sequence.powersOfTwo(MIN_THREADS, MAX_THREADS)), + Dimensions.threads(Sequence.predefined(threads)), Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), Dimensions.size(Sequence.powersOfTen(1, 10_000_000)) )); @@ -197,7 +211,7 @@ tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.alloc.uninit.IntArray.class, "alloc.uninit.intarray", groupDescr + "Allocates uninitialized int[] arrays of different sizes.", - Dimensions.threads(Sequence.powersOfTwo(MIN_THREADS, MAX_THREADS)), + Dimensions.threads(Sequence.predefined(threads)), Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), Dimensions.size(Sequence.powersOfTen(1, 10_000)) ));
--- a/src/main/java/org/openjdk/gcbench/tests/Sequence.java Thu Dec 15 23:19:23 2016 +0100 +++ b/src/main/java/org/openjdk/gcbench/tests/Sequence.java Fri Dec 16 12:59:31 2016 +0100 @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; public class Sequence implements Iterable<Object> { @@ -57,6 +58,14 @@ return new Sequence("[" + min + ", " + max + "], step size = " + stepSize, vs); } + public static Sequence predefined(int... values) { + return new Sequence(Arrays.toString(values), Arrays.stream(values).boxed().collect(Collectors.toList())); + } + + public static Sequence predefined(List<Integer> values) { + return new Sequence(values.toString(), new ArrayList<>(values)); + } + private Sequence(String descr, List<Object> vals) { this.descr = descr; this.vals = vals;