Mercurial > hg > graal-jvmci-8
comparison test/runtime/NMT/VirtualAllocTestType.java @ 20361:ac12996df59b
8044140: Create NMT (Native Memory Tracking) tests for NMT2
Summary: Create new/modify existing tests for NMT2, which is an internal redesign to address scalability issues in the first implementation.
Reviewed-by: ctornqvi, zgu
Contributed-by: George Triantafillou <george.triantafillou@oracle.com>
author | zgu |
---|---|
date | Wed, 27 Aug 2014 08:35:03 -0400 |
parents | 5fd8e2fbafd4 |
children | 6640f982c1be |
comparison
equal
deleted
inserted
replaced
20360:833b0f92429a | 20361:ac12996df59b |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
24 /* | 24 /* |
25 * @test | 25 * @test |
26 * @summary Test Reserve/Commit/Uncommit/Release of virtual memory and that we track it correctly | 26 * @summary Test Reserve/Commit/Uncommit/Release of virtual memory and that we track it correctly |
27 * @key nmt jcmd | 27 * @key nmt jcmd |
28 * @library /testlibrary /testlibrary/whitebox | 28 * @library /testlibrary /testlibrary/whitebox |
29 * @ignore | |
29 * @build VirtualAllocTestType | 30 * @build VirtualAllocTestType |
30 * @run main ClassFileInstaller sun.hotspot.WhiteBox | 31 * @run main ClassFileInstaller sun.hotspot.WhiteBox |
31 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail VirtualAllocTestType | 32 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail VirtualAllocTestType |
32 */ | 33 */ |
33 | 34 |
52 } else { | 53 } else { |
53 System.out.println("NMT detail support not detected."); | 54 System.out.println("NMT detail support not detected."); |
54 } | 55 } |
55 | 56 |
56 addr = wb.NMTReserveMemory(reserveSize); | 57 addr = wb.NMTReserveMemory(reserveSize); |
57 mergeData(); | |
58 pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"), pid, "VM.native_memory", "detail"}); | 58 pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"), pid, "VM.native_memory", "detail"}); |
59 | 59 |
60 output = new OutputAnalyzer(pb.start()); | 60 output = new OutputAnalyzer(pb.start()); |
61 output.shouldContain("Test (reserved=256KB, committed=0KB)"); | 61 output.shouldContain("Test (reserved=256KB, committed=0KB)"); |
62 if (has_nmt_detail) { | 62 if (has_nmt_detail) { |
63 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved 256KB for Test"); | 63 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved 256KB for Test"); |
64 } | 64 } |
65 | 65 |
66 wb.NMTCommitMemory(addr, commitSize); | 66 wb.NMTCommitMemory(addr, commitSize); |
67 | 67 |
68 mergeData(); | |
69 | 68 |
70 output = new OutputAnalyzer(pb.start()); | 69 output = new OutputAnalyzer(pb.start()); |
71 output.shouldContain("Test (reserved=256KB, committed=128KB)"); | 70 output.shouldContain("Test (reserved=256KB, committed=128KB)"); |
72 if (has_nmt_detail) { | 71 if (has_nmt_detail) { |
73 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed 128KB"); | 72 output.shouldMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed 128KB"); |
74 } | 73 } |
75 | 74 |
76 wb.NMTUncommitMemory(addr, commitSize); | 75 wb.NMTUncommitMemory(addr, commitSize); |
77 | 76 |
78 mergeData(); | |
79 | 77 |
80 output = new OutputAnalyzer(pb.start()); | 78 output = new OutputAnalyzer(pb.start()); |
81 output.shouldContain("Test (reserved=256KB, committed=0KB)"); | 79 output.shouldContain("Test (reserved=256KB, committed=0KB)"); |
82 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed"); | 80 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + commitSize) + "\\] committed"); |
83 | 81 |
84 wb.NMTReleaseMemory(addr, reserveSize); | 82 wb.NMTReleaseMemory(addr, reserveSize); |
85 mergeData(); | |
86 | 83 |
87 output = new OutputAnalyzer(pb.start()); | 84 output = new OutputAnalyzer(pb.start()); |
88 output.shouldNotContain("Test (reserved="); | 85 output.shouldNotContain("Test (reserved="); |
89 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved"); | 86 output.shouldNotMatch("\\[0x[0]*" + Long.toHexString(addr) + " - 0x[0]*" + Long.toHexString(addr + reserveSize) + "\\] reserved"); |
90 } | 87 } |
91 | |
92 public static void mergeData() throws Exception { | |
93 // Use WB API to ensure that all data has been merged before we continue | |
94 if (!wb.NMTWaitForDataMerge()) { | |
95 throw new Exception("Call to WB API NMTWaitForDataMerge() failed"); | |
96 } | 88 } |
97 } | |
98 } |