mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-29 00:02:34 +00:00
8361520: Stabilize SystemGC benchmarks
Reviewed-by: tschatzl, ayang
This commit is contained in:
parent
b1fa1ecc98
commit
a9bd1ad40c
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -49,6 +53,12 @@ public class AllDead {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -49,6 +53,12 @@ public class AllLive {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -26,15 +26,19 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -49,6 +53,12 @@ public class DifferentObjectSizesArray {
|
||||
|
||||
static Object[] largeObjArray;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
largeObjArray = GarbageGenerator.generateAndFillLargeObjArray(false);
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -50,6 +54,12 @@ public class DifferentObjectSizesHashMap {
|
||||
|
||||
static HashMap<Integer, byte[]> largeMap;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
largeMap = GarbageGenerator.generateAndFillHashMap(false);
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -49,6 +53,12 @@ public class DifferentObjectSizesTreeMap {
|
||||
*/
|
||||
static TreeMap<Integer, byte[]> largeMap;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
largeMap = GarbageGenerator.generateAndFillTreeMap(false);
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -50,6 +54,12 @@ public class HalfDeadFirstPart {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -50,6 +54,12 @@ public class HalfDeadInterleaved {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -50,6 +54,12 @@ public class HalfDeadInterleavedChunks {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -50,6 +54,12 @@ public class HalfDeadSecondPart {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -26,16 +26,20 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -50,6 +54,12 @@ public class HalfHashedHalfDead {
|
||||
|
||||
static ArrayList<Object[]> holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = GarbageGenerator.generateObjectArrays();
|
||||
|
||||
@ -25,14 +25,23 @@ package org.openjdk.bench.vm.gc.systemgc;
|
||||
import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
public class NoObjects {
|
||||
|
||||
/*
|
||||
@ -43,6 +52,12 @@ public class NoObjects {
|
||||
* test for consistency.
|
||||
*/
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void gc() {
|
||||
System.gc();
|
||||
|
||||
@ -26,15 +26,19 @@ import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Fork;
|
||||
import org.openjdk.jmh.annotations.Level;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 5)
|
||||
@Measurement(iterations = 5)
|
||||
@Fork(value=25, jvmArgs={"-Xmx5g", "-Xms5g", "-Xmn3g", "-XX:+AlwaysPreTouch"})
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@State(Scope.Benchmark)
|
||||
@ -49,6 +53,12 @@ public class OneBigObject {
|
||||
|
||||
static Object[] holder;
|
||||
|
||||
@Setup(Level.Trial)
|
||||
public void preRun() {
|
||||
// Compact right now, kicking out all unrelated objects
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void generateGarbage() {
|
||||
holder = new Object[1024*1024*128];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user