Mercurial > hg > truffle
annotate test/gc/metaspace/TestMetaspacePerfCounters.java @ 12986:1b422ef5288a
8025728: Missing volatile specifier for field G1AllocRegion::_alloc_region
Summary: The field G1AllocRegion::_alloc_region needs to be declared volatile as it is used with that intention. Otherwise the compiler may generate the code that reloads the value which might have changed in the meantime, leading to spurious crashes.
Reviewed-by: iveresov, simonis, tschatzl
Contributed-by: Axel Siebenborn <axel.siebenborn@sap.com>
author | tschatzl |
---|---|
date | Wed, 23 Oct 2013 10:23:06 +0200 |
parents | 73d0d0218068 |
children |
rev | line source |
---|---|
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
1 /* |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
4 * |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
8 * |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
13 * accompanied this code). |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
14 * |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
18 * |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
21 * questions. |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
22 */ |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
23 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
24 import java.util.List; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
25 import java.util.ArrayList; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
26 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
27 import com.oracle.java.testlibrary.*; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
28 import static com.oracle.java.testlibrary.Asserts.*; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
29 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
30 /* @test TestMetaspacePerfCounters |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
31 * @bug 8014659 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
32 * @library /testlibrary |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
33 * @summary Tests that performance counters for metaspace and compressed class |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
34 * space exists and works. |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
35 * |
12226
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
36 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UsePerfData -XX:+UseSerialGC TestMetaspacePerfCounters |
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
37 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UsePerfData -XX:+UseParallelGC -XX:+UseParallelOldGC TestMetaspacePerfCounters |
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
38 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UsePerfData -XX:+UseG1GC TestMetaspacePerfCounters |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
39 * |
12226
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
40 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UsePerfData -XX:+UseSerialGC TestMetaspacePerfCounters |
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
41 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UsePerfData -XX:+UseParallelGC -XX:+UseParallelOldGC TestMetaspacePerfCounters |
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
42 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UsePerfData -XX:+UseG1GC TestMetaspacePerfCounters |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
43 */ |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
44 public class TestMetaspacePerfCounters { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
45 public static Class fooClass = null; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
46 private static final String[] counterNames = {"minCapacity", "maxCapacity", "capacity", "used"}; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
47 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
48 public static void main(String[] args) throws Exception { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
49 String metaspace = "sun.gc.metaspace"; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
50 String ccs = "sun.gc.compressedclassspace"; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
51 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
52 checkPerfCounters(metaspace); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
53 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
54 if (isUsingCompressedClassPointers()) { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
55 checkPerfCounters(ccs); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
56 checkUsedIncreasesWhenLoadingClass(ccs); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
57 } else { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
58 checkEmptyPerfCounters(ccs); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
59 checkUsedIncreasesWhenLoadingClass(metaspace); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
60 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
61 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
62 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
63 private static void checkPerfCounters(String ns) throws Exception { |
12248
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
64 long minCapacity = getMinCapacity(ns); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
65 long maxCapacity = getMaxCapacity(ns); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
66 long capacity = getCapacity(ns); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
67 long used = getUsed(ns); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
68 |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
69 assertGTE(minCapacity, 0L); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
70 assertGTE(used, minCapacity); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
71 assertGTE(capacity, used); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
72 assertGTE(maxCapacity, capacity); |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
73 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
74 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
75 private static void checkEmptyPerfCounters(String ns) throws Exception { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
76 for (PerfCounter counter : countersInNamespace(ns)) { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
77 String msg = "Expected " + counter.getName() + " to equal 0"; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
78 assertEQ(counter.longValue(), 0L, msg); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
79 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
80 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
81 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
82 private static void checkUsedIncreasesWhenLoadingClass(String ns) throws Exception { |
12248
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
83 long before = getUsed(ns); |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
84 fooClass = compileAndLoad("Foo", "public class Foo { }"); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
85 System.gc(); |
12248
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
86 long after = getUsed(ns); |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
87 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
88 assertGT(after, before); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
89 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
90 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
91 private static List<PerfCounter> countersInNamespace(String ns) throws Exception { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
92 List<PerfCounter> counters = new ArrayList<>(); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
93 for (String name : counterNames) { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
94 counters.add(PerfCounters.findByName(ns + "." + name)); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
95 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
96 return counters; |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
97 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
98 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
99 private static Class<?> compileAndLoad(String name, String source) throws Exception { |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
100 byte[] byteCode = InMemoryJavaCompiler.compile(name, source); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
101 return ByteCodeLoader.load(name, byteCode); |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
102 } |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
103 |
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
104 private static boolean isUsingCompressedClassPointers() { |
12226
7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents:
12063
diff
changeset
|
105 return Platform.is64bit() && InputArguments.contains("-XX:+UseCompressedClassPointers"); |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
106 } |
12248
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
107 |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
108 private static long getMinCapacity(String ns) throws Exception { |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
109 return PerfCounters.findByName(ns + ".minCapacity").longValue(); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
110 } |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
111 |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
112 private static long getCapacity(String ns) throws Exception { |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
113 return PerfCounters.findByName(ns + ".capacity").longValue(); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
114 } |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
115 |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
116 private static long getMaxCapacity(String ns) throws Exception { |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
117 return PerfCounters.findByName(ns + ".maxCapacity").longValue(); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
118 } |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
119 |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
120 private static long getUsed(String ns) throws Exception { |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
121 return PerfCounters.findByName(ns + ".used").longValue(); |
73d0d0218068
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
12226
diff
changeset
|
122 } |
12063
1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
ehelin
parents:
diff
changeset
|
123 } |