Skip to content

Commit

Permalink
8272783: Epsilon: Refactor tests to improve performance
Browse files Browse the repository at this point in the history
Reviewed-by: tschatzl
  • Loading branch information
shipilev committed Aug 24, 2021
1 parent 22ef4f0 commit 7f80683
Show file tree
Hide file tree
Showing 21 changed files with 378 additions and 136 deletions.
22 changes: 18 additions & 4 deletions test/hotspot/jtreg/gc/epsilon/TestAlignment.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,24 @@
* @requires vm.gc.Epsilon
* @summary Check Epsilon runs fine with (un)usual alignments
* @bug 8212005
* @run main/othervm -XX:+UnlockExperimentalVMOptions -Xmx128m -XX:+UseEpsilonGC -XX:+UseTLAB gc.epsilon.TestAlignment
* @run main/othervm -XX:+UnlockExperimentalVMOptions -Xmx128m -XX:+UseEpsilonGC -XX:-UseTLAB gc.epsilon.TestAlignment
* @run main/othervm -XX:+UnlockExperimentalVMOptions -Xmx128m -XX:+UseEpsilonGC -XX:+UseTLAB -XX:+IgnoreUnrecognizedVMOptions -XX:ObjectAlignmentInBytes=16 gc.epsilon.TestAlignment
* @run main/othervm -XX:+UnlockExperimentalVMOptions -Xmx128m -XX:+UseEpsilonGC -XX:-UseTLAB -XX:+IgnoreUnrecognizedVMOptions -XX:ObjectAlignmentInBytes=16 gc.epsilon.TestAlignment
*
* @run main/othervm -Xmx64m -XX:+UseTLAB
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlignment
*
* @run main/othervm -Xmx64m -XX:-UseTLAB
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlignment
*
* @run main/othervm -Xmx64m -XX:+UseTLAB
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:+IgnoreUnrecognizedVMOptions -XX:ObjectAlignmentInBytes=16
* gc.epsilon.TestAlignment
*
* @run main/othervm -Xmx64m -XX:-UseTLAB
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:+IgnoreUnrecognizedVMOptions -XX:ObjectAlignmentInBytes=16
* gc.epsilon.TestAlignment
*/

public class TestAlignment {
Expand Down
32 changes: 25 additions & 7 deletions test/hotspot/jtreg/gc/epsilon/TestAlwaysPretouch.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,31 @@
/**
* @test TestAlwaysPretouch
* @requires vm.gc.Epsilon
* @summary Basic sanity test for Epsilon
* @run main/othervm -Xms128m -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
* @run main/othervm -Xms128m -Xmx1g -XX:-AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
* @run main/othervm -Xms128m -Xmx1g -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
* @run main/othervm -Xmx1g -XX:-AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
* @run main/othervm -Xmx1g -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
* @summary Test that pre-touch works
*
* @run main/othervm -Xms64m -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlwaysPretouch
*
* @run main/othervm -Xms64m -Xmx256m -XX:-AlwaysPreTouch
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlwaysPretouch
*
* @run main/othervm -Xms64m -Xmx256m -XX:+AlwaysPreTouch
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlwaysPretouch
*
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlwaysPretouch
*
* @run main/othervm -Xmx256m -XX:-AlwaysPreTouch
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlwaysPretouch
*
* @run main/othervm -Xmx256m -XX:+AlwaysPreTouch
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestAlwaysPretouch
*/

package gc.epsilon;
Expand Down
23 changes: 18 additions & 5 deletions test/hotspot/jtreg/gc/epsilon/TestArraycopyCheckcast.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,24 @@
* @library /test/lib
* @bug 8215724
*
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestArraycopyCheckcast
* @run main/othervm -Xmx1g -Xint -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestArraycopyCheckcast
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestArraycopyCheckcast
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:TieredStopAtLevel=1 -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestArraycopyCheckcast
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:-TieredCompilation -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestArraycopyCheckcast
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestArraycopyCheckcast
*
* @run main/othervm -Xmx256m
* -Xint
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestArraycopyCheckcast
*
* @run main/othervm -Xmx256m
* -Xbatch -Xcomp -XX:TieredStopAtLevel=1
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestArraycopyCheckcast
*
* @run main/othervm -Xmx256m
* -Xbatch -Xcomp -XX:-TieredCompilation
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestArraycopyCheckcast
*/

public class TestArraycopyCheckcast {
Expand Down
50 changes: 38 additions & 12 deletions test/hotspot/jtreg/gc/epsilon/TestByteArrays.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,28 +26,54 @@
/**
* @test TestByteArrays
* @key randomness
* @requires vm.gc.Epsilon & os.maxMemory > 1G
* @requires vm.gc.Epsilon
* @summary Epsilon is able to allocate arrays, and does not corrupt their state
* @library /test/lib
*
* @run main/othervm -Xmx1g -XX:+UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xint -XX:+UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:+UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:TieredStopAtLevel=1 -XX:+UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:-TieredCompilation -XX:+UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -XX:+UseTLAB -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -Xmx1g -XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xint -XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:TieredStopAtLevel=1 -XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:-TieredCompilation -XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestByteArrays
* @run main/othervm -XX:+UseTLAB -Xmx256m
* -Xint
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -XX:+UseTLAB -Xmx256m
* -Xbatch -Xcomp -XX:TieredStopAtLevel=1
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -XX:+UseTLAB -Xmx256m
* -Xbatch -Xcomp -XX:-TieredCompilation
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -XX:-UseTLAB -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -XX:-UseTLAB -Xmx256m
* -Xint
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -XX:-UseTLAB -Xmx256m
* -Xbatch -Xcomp -XX:TieredStopAtLevel=1
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*
* @run main/othervm -XX:-UseTLAB -Xmx256m
* -Xbatch -Xcomp -XX:-TieredCompilation
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestByteArrays
*/

import java.util.Random;
import jdk.test.lib.Utils;

public class TestByteArrays {
static int COUNT = Integer.getInteger("count", 3000); // ~500 MB allocation
static int COUNT = Integer.getInteger("count", 500); // ~100 MB allocation

static byte[][] arr;

Expand Down
5 changes: 4 additions & 1 deletion test/hotspot/jtreg/gc/epsilon/TestClasses.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@
* @modules java.base/jdk.internal.org.objectweb.asm
* java.base/jdk.internal.misc
*
* @run main/othervm -Xmx1g -XX:MetaspaceSize=1m -XX:MaxMetaspaceSize=64m -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xlog:gc -Xlog:gc+metaspace gc.epsilon.TestClasses
* @run main/othervm -Xmx256m
* -XX:MetaspaceSize=1m -XX:MaxMetaspaceSize=64m -Xlog:gc -Xlog:gc+metaspace
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* gc.epsilon.TestClasses
*/

import jdk.internal.org.objectweb.asm.ClassWriter;
Expand Down
17 changes: 5 additions & 12 deletions test/hotspot/jtreg/gc/epsilon/TestDieDefault.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,39 +53,32 @@ public static void failWith(String... args) throws Exception {
}

public static void main(String[] args) throws Exception {
passWith("-Xmx128m",
passWith("-Xmx64m",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-Dcount=1",
TestDieDefault.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
TestDieDefault.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xint",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
TestDieDefault.Workload.class.getName());

failWith("-Xmx128m",
"-Xbatch",
"-Xcomp",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
TestDieDefault.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xbatch",
"-Xcomp",
"-XX:TieredStopAtLevel=1",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
TestDieDefault.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xbatch",
"-Xcomp",
"-XX:-TieredCompilation",
Expand Down
18 changes: 5 additions & 13 deletions test/hotspot/jtreg/gc/epsilon/TestDieWithHeapDump.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,35 +59,27 @@ public static void failWith(String... args) throws Exception {
}

public static void main(String[] args) throws Exception {
passWith("-Xmx128m",
passWith("-Xmx64m",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-Dcount=1",
"-XX:+HeapDumpOnOutOfMemoryError",
TestDieWithHeapDump.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-XX:+HeapDumpOnOutOfMemoryError",
TestDieWithHeapDump.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xint",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-XX:+HeapDumpOnOutOfMemoryError",
TestDieWithHeapDump.Workload.class.getName());

failWith("-Xmx128m",
"-Xbatch",
"-Xcomp",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-XX:+HeapDumpOnOutOfMemoryError",
TestDieWithHeapDump.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xbatch",
"-Xcomp",
"-XX:TieredStopAtLevel=1",
Expand All @@ -96,7 +88,7 @@ public static void main(String[] args) throws Exception {
"-XX:+HeapDumpOnOutOfMemoryError",
TestDieWithHeapDump.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xbatch",
"-Xcomp",
"-XX:-TieredCompilation",
Expand Down
18 changes: 5 additions & 13 deletions test/hotspot/jtreg/gc/epsilon/TestDieWithOnError.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,35 +57,27 @@ public static void failWith(String... args) throws Exception {
}

public static void main(String[] args) throws Exception {
passWith("-Xmx128m",
passWith("-Xmx64m",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-Dcount=1",
"-XX:OnOutOfMemoryError=echo " + ON_ERR_MSG,
TestDieWithOnError.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-XX:OnOutOfMemoryError=echo " + ON_ERR_MSG,
TestDieWithOnError.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xint",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-XX:OnOutOfMemoryError=echo " + ON_ERR_MSG,
TestDieWithOnError.Workload.class.getName());

failWith("-Xmx128m",
"-Xbatch",
"-Xcomp",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseEpsilonGC",
"-XX:OnOutOfMemoryError=echo " + ON_ERR_MSG,
TestDieWithOnError.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xbatch",
"-Xcomp",
"-XX:TieredStopAtLevel=1",
Expand All @@ -94,7 +86,7 @@ public static void main(String[] args) throws Exception {
"-XX:OnOutOfMemoryError=echo " + ON_ERR_MSG,
TestDieWithOnError.Workload.class.getName());

failWith("-Xmx128m",
failWith("-Xmx64m",
"-Xbatch",
"-Xcomp",
"-XX:-TieredCompilation",
Expand Down
34 changes: 26 additions & 8 deletions test/hotspot/jtreg/gc/epsilon/TestElasticTLAB.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,41 @@
/**
* @test TestElasticTLAB
* @key randomness
* @requires vm.gc.Epsilon & os.maxMemory > 1G
* @requires vm.gc.Epsilon
* @summary Epsilon is able to work with/without elastic TLABs
* @library /test/lib
*
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:-EpsilonElasticTLAB gc.epsilon.TestElasticTLAB
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=1 gc.epsilon.TestElasticTLAB
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=1.1 gc.epsilon.TestElasticTLAB
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=2.0 gc.epsilon.TestElasticTLAB
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=42 gc.epsilon.TestElasticTLAB
* @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=100 gc.epsilon.TestElasticTLAB
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:-EpsilonElasticTLAB
* gc.epsilon.TestElasticTLAB
*
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=1
* gc.epsilon.TestElasticTLAB
*
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=1.1
* gc.epsilon.TestElasticTLAB
*
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=2.0
* gc.epsilon.TestElasticTLAB
*
* @run main/othervm -Xmx256m
* -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
* -XX:+EpsilonElasticTLAB -XX:EpsilonTLABElasticity=100
* gc.epsilon.TestElasticTLAB
*/

import java.util.Random;
import jdk.test.lib.Utils;

public class TestElasticTLAB {
static int COUNT = Integer.getInteger("count", 3000); // ~500 MB allocation
static int COUNT = Integer.getInteger("count", 500); // ~100 MB allocation

static byte[][] arr;

Expand Down
Loading

1 comment on commit 7f80683

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.