Skip to content

Commit f2b10c6

Browse files
committed
8340422: ZGC: TestAllocateHeapAt.java should not run with transparent hugepages
Reviewed-by: stefank, jsikstro
1 parent 5ccd510 commit f2b10c6

File tree

6 files changed

+33
-3
lines changed

6 files changed

+33
-3
lines changed

test/hotspot/jtreg/gc/z/TestAllocateHeapAt.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,17 @@
2727
* @test TestAllocateHeapAt
2828
* @requires vm.gc.Z & os.family == "linux"
2929
* @requires !vm.opt.final.UseLargePages
30+
* @requires !vm.opt.final.UseTransparentHugePages
3031
* @summary Test ZGC with -XX:AllocateHeapAt
3132
* @library /test/lib
3233
* @run main/othervm gc.z.TestAllocateHeapAt . true
3334
* @run main/othervm gc.z.TestAllocateHeapAt non-existing-directory false
3435
*/
3536

37+
import jdk.test.lib.os.linux.HugePageConfiguration;
38+
import jdk.test.lib.os.linux.HugePageConfiguration.ShmemTHPMode;
3639
import jdk.test.lib.process.ProcessTools;
40+
import jtreg.SkippedException;
3741

3842
public class TestAllocateHeapAt {
3943
public static void main(String[] args) throws Exception {
@@ -42,6 +46,13 @@ public static void main(String[] args) throws Exception {
4246
final String heapBackingFile = "Heap Backing File: " + directory;
4347
final String failedToCreateFile = "Failed to create file " + directory;
4448

49+
final HugePageConfiguration hugePageConfiguration = HugePageConfiguration.readFromOS();
50+
final ShmemTHPMode mode = hugePageConfiguration.getShmemThpMode();
51+
52+
if (mode != ShmemTHPMode.never && mode != ShmemTHPMode.advise) {
53+
throw new SkippedException("The UseTransparentHugePages option may not be respected with Shmem THP Mode: " + mode.name());
54+
}
55+
4556
ProcessTools.executeTestJava(
4657
"-XX:+UseZGC",
4758
"-Xlog:gc*",

test/hotspot/jtreg/runtime/os/THPsInThreadStackPreventionTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@
4545
* @requires os.family == "linux"
4646
* @requires vm.debug
4747
* @requires os.arch=="amd64" | os.arch=="x86_64" | os.arch=="aarch64"
48+
* @library /test/lib
4849
* @modules java.base/jdk.internal.misc
4950
* java.management
5051
* @run main/manual THPsInThreadStackPreventionTest PATCH-DISABLED
5152
*/
53+
54+
import jdk.test.lib.os.linux.HugePageConfiguration;
5255
import jdk.test.lib.process.OutputAnalyzer;
5356
import jdk.test.lib.process.ProcessTools;
5457
import jtreg.SkippedException;

test/hotspot/jtreg/runtime/os/TestHugePageDecisionsAtVMStartup.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,13 @@
4747
* @summary Test JVM large page setup (+THP)
4848
* @library /test/lib
4949
* @requires os.family == "linux"
50+
* @library /test/lib
5051
* @modules java.base/jdk.internal.misc
5152
* java.management
5253
* @run driver TestHugePageDecisionsAtVMStartup -XX:+UseTransparentHugePages
5354
*/
5455

56+
import jdk.test.lib.os.linux.HugePageConfiguration;
5557
import jdk.test.lib.process.OutputAnalyzer;
5658
import jdk.test.lib.process.ProcessTools;
5759
import java.util.ArrayList;

test/hotspot/jtreg/runtime/os/TestHugePageDetection.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828
* @library /test/lib
2929
* @requires vm.flagless
3030
* @requires os.family == "linux"
31+
* @library /test/lib
3132
* @modules java.base/jdk.internal.misc
3233
* java.management
3334
* @run driver TestHugePageDetection
3435
*/
3536

3637
import java.util.*;
38+
import jdk.test.lib.os.linux.HugePageConfiguration;
3739
import jdk.test.lib.process.OutputAnalyzer;
3840
import jdk.test.lib.process.ProcessTools;
3941

test/jtreg-ext/requires/VMProps.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@ protected void vmOptFinalFlags(SafeMap map) {
378378
vmOptFinalFlag(map, "UnlockExperimentalVMOptions");
379379
vmOptFinalFlag(map, "UseCompressedOops");
380380
vmOptFinalFlag(map, "UseLargePages");
381+
vmOptFinalFlag(map, "UseTransparentHugePages");
381382
vmOptFinalFlag(map, "UseVectorizedMismatchIntrinsic");
382383
}
383384

test/hotspot/jtreg/runtime/os/HugePageConfiguration.java renamed to test/lib/jdk/test/lib/os/linux/HugePageConfiguration.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
* questions.
2323
*/
2424

25+
package jdk.test.lib.os.linux;
26+
2527
import jdk.test.lib.process.OutputAnalyzer;
2628

2729
import java.io.*;
@@ -33,7 +35,7 @@
3335
// - a) the Operating System (the truth)
3436
// - b) the JVM log (-Xlog:pagesize)
3537
// This is used e.g. in TestHugePageDetection to determine if the JVM detects the correct settings from the OS.
36-
class HugePageConfiguration {
38+
public class HugePageConfiguration {
3739

3840
public static class ExplicitHugePageConfig implements Comparable<ExplicitHugePageConfig> {
3941
public long pageSize = -1;
@@ -63,11 +65,11 @@ public int compareTo(ExplicitHugePageConfig o) {
6365
Set<ExplicitHugePageConfig> _explicitHugePageConfigurations;
6466
long _explicitDefaultHugePageSize = -1;
6567

66-
enum THPMode {always, never, madvise}
68+
public enum THPMode {always, never, madvise}
6769
THPMode _thpMode;
6870
long _thpPageSize;
6971

70-
enum ShmemTHPMode {always, within_size, advise, never, deny, force, unknown}
72+
public enum ShmemTHPMode {always, within_size, advise, never, deny, force, unknown}
7173
ShmemTHPMode _shmemThpMode;
7274

7375
public Set<ExplicitHugePageConfig> getExplicitHugePageConfigurations() {
@@ -133,6 +135,15 @@ public String toString() {
133135
'}';
134136
}
135137

138+
@Override
139+
public int hashCode() {
140+
return Objects.hash(_explicitDefaultHugePageSize,
141+
_thpPageSize,
142+
_explicitHugePageConfigurations,
143+
_thpMode,
144+
_shmemThpMode);
145+
}
146+
136147
@Override
137148
public boolean equals(Object o) {
138149
if (this == o) return true;

0 commit comments

Comments
 (0)