Mercurial > hg > truffle
annotate src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp @ 10246:194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
Summary: Refactor G1's hot card cache and card counts table into their own files. Simplify the card counts table, including removing the encoding of the card index in each entry. The card counts table now has a 1:1 correspondence with the cards spanned by heap. Space for the card counts table is reserved from virtual memory (rather than C heap) during JVM startup and is committed/expanded when the heap is expanded. Changes were also reviewed-by Vitaly Davidovich.
Reviewed-by: tschatzl, jmasa
author | johnc |
---|---|
date | Thu, 09 May 2013 11:16:39 -0700 |
parents | 7df93f7c14a5 |
children | 5888334c9c24 |
rev | line source |
---|---|
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
1 /* |
10246
194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents:
7633
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
4 * |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
8 * |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
13 * accompanied this code). |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
14 * |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
18 * |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
21 * questions. |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
22 * |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
23 */ |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
24 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
25 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
26 #include "precompiled.hpp" |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
27 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
28 #include "gc_implementation/g1/g1GCPhaseTimes.hpp" |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
29 #include "gc_implementation/g1/g1Log.hpp" |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
30 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
31 // Helper class for avoiding interleaved logging |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
32 class LineBuffer: public StackObj { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
33 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
34 private: |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
35 static const int BUFFER_LEN = 1024; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
36 static const int INDENT_CHARS = 3; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
37 char _buffer[BUFFER_LEN]; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
38 int _indent_level; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
39 int _cur; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
40 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
41 void vappend(const char* format, va_list ap) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
42 int res = vsnprintf(&_buffer[_cur], BUFFER_LEN - _cur, format, ap); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
43 if (res != -1) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
44 _cur += res; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
45 } else { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
46 DEBUG_ONLY(warning("buffer too small in LineBuffer");) |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
47 _buffer[BUFFER_LEN -1] = 0; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
48 _cur = BUFFER_LEN; // vsnprintf above should not add to _buffer if we are called again |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
49 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
50 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
51 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
52 public: |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
53 explicit LineBuffer(int indent_level): _indent_level(indent_level), _cur(0) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
54 for (; (_cur < BUFFER_LEN && _cur < (_indent_level * INDENT_CHARS)); _cur++) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
55 _buffer[_cur] = ' '; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
56 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
57 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
58 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
59 #ifndef PRODUCT |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
60 ~LineBuffer() { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
61 assert(_cur == _indent_level * INDENT_CHARS, "pending data in buffer - append_and_print_cr() not called?"); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
62 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
63 #endif |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
64 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
65 void append(const char* format, ...) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
66 va_list ap; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
67 va_start(ap, format); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
68 vappend(format, ap); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
69 va_end(ap); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
70 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
71 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
72 void append_and_print_cr(const char* format, ...) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
73 va_list ap; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
74 va_start(ap, format); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
75 vappend(format, ap); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
76 va_end(ap); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
77 gclog_or_tty->print_cr("%s", _buffer); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
78 _cur = _indent_level * INDENT_CHARS; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
79 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
80 }; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
81 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
82 template <class T> |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
83 void WorkerDataArray<T>::print(int level, const char* title) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
84 if (_length == 1) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
85 // No need for min, max, average and sum for only one worker |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
86 LineBuffer buf(level); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
87 buf.append("[%s: ", title); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
88 buf.append(_print_format, _data[0]); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
89 buf.append_and_print_cr("]"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
90 return; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
91 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
92 |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
93 T min = _data[0]; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
94 T max = _data[0]; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
95 T sum = 0; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
96 |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
97 LineBuffer buf(level); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
98 buf.append("[%s:", title); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
99 for (uint i = 0; i < _length; ++i) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
100 T val = _data[i]; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
101 min = MIN2(val, min); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
102 max = MAX2(val, max); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
103 sum += val; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
104 if (G1Log::finest()) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
105 buf.append(" "); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
106 buf.append(_print_format, val); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
107 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
108 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
109 |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
110 if (G1Log::finest()) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
111 buf.append_and_print_cr(""); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
112 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
113 |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
114 double avg = (double)sum / (double)_length; |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
115 buf.append(" Min: "); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
116 buf.append(_print_format, min); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
117 buf.append(", Avg: "); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
118 buf.append("%.1lf", avg); // Always print average as a double |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
119 buf.append(", Max: "); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
120 buf.append(_print_format, max); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
121 buf.append(", Diff: "); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
122 buf.append(_print_format, max - min); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
123 if (_print_sum) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
124 // for things like the start and end times the sum is not |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
125 // that relevant |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
126 buf.append(", Sum: "); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
127 buf.append(_print_format, sum); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
128 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
129 buf.append_and_print_cr("]"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
130 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
131 |
6786 | 132 #ifndef PRODUCT |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
133 |
7633
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
134 template <> const int WorkerDataArray<int>::_uninitialized = -1; |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
135 template <> const double WorkerDataArray<double>::_uninitialized = -1.0; |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
136 template <> const size_t WorkerDataArray<size_t>::_uninitialized = (size_t)-1; |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
137 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
138 template <class T> |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
139 void WorkerDataArray<T>::reset() { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
140 for (uint i = 0; i < _length; i++) { |
7633
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
141 _data[i] = (T)_uninitialized; |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
142 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
143 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
144 |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
145 template <class T> |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
146 void WorkerDataArray<T>::verify() { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
147 for (uint i = 0; i < _length; i++) { |
7633
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
148 assert(_data[i] != _uninitialized, |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
149 err_msg("Invalid data for worker " UINT32_FORMAT ", data: %lf, uninitialized: %lf", |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
150 i, (double)_data[i], (double)_uninitialized)); |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
151 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
152 } |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
153 |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
154 #endif |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
155 |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
156 G1GCPhaseTimes::G1GCPhaseTimes(uint max_gc_threads) : |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
157 _max_gc_threads(max_gc_threads), |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
158 _last_gc_worker_start_times_ms(_max_gc_threads, "%.1lf", false), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
159 _last_ext_root_scan_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
160 _last_satb_filtering_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
161 _last_update_rs_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
162 _last_update_rs_processed_buffers(_max_gc_threads, "%d"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
163 _last_scan_rs_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
164 _last_obj_copy_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
165 _last_termination_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
166 _last_termination_attempts(_max_gc_threads, SIZE_FORMAT), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
167 _last_gc_worker_end_times_ms(_max_gc_threads, "%.1lf", false), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
168 _last_gc_worker_times_ms(_max_gc_threads, "%.1lf"), |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
169 _last_gc_worker_other_times_ms(_max_gc_threads, "%.1lf") |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
170 { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
171 assert(max_gc_threads > 0, "Must have some GC threads"); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
172 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
173 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
174 void G1GCPhaseTimes::note_gc_start(uint active_gc_threads) { |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
175 assert(active_gc_threads > 0, "The number of threads must be > 0"); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
176 assert(active_gc_threads <= _max_gc_threads, "The number of active threads must be <= the max nubmer of threads"); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
177 _active_gc_threads = active_gc_threads; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
178 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
179 _last_gc_worker_start_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
180 _last_ext_root_scan_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
181 _last_satb_filtering_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
182 _last_update_rs_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
183 _last_update_rs_processed_buffers.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
184 _last_scan_rs_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
185 _last_obj_copy_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
186 _last_termination_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
187 _last_termination_attempts.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
188 _last_gc_worker_end_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
189 _last_gc_worker_times_ms.reset(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
190 _last_gc_worker_other_times_ms.reset(); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
191 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
192 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
193 void G1GCPhaseTimes::note_gc_end() { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
194 _last_gc_worker_start_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
195 _last_ext_root_scan_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
196 _last_satb_filtering_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
197 _last_update_rs_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
198 _last_update_rs_processed_buffers.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
199 _last_scan_rs_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
200 _last_obj_copy_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
201 _last_termination_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
202 _last_termination_attempts.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
203 _last_gc_worker_end_times_ms.verify(); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
204 |
7633
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
205 for (uint i = 0; i < _active_gc_threads; i++) { |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
206 double worker_time = _last_gc_worker_end_times_ms.get(i) - _last_gc_worker_start_times_ms.get(i); |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
207 _last_gc_worker_times_ms.set(i, worker_time); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
208 |
7633
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
209 double worker_known_time = _last_ext_root_scan_times_ms.get(i) + |
10246
194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents:
7633
diff
changeset
|
210 _last_satb_filtering_times_ms.get(i) + |
194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents:
7633
diff
changeset
|
211 _last_update_rs_times_ms.get(i) + |
194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents:
7633
diff
changeset
|
212 _last_scan_rs_times_ms.get(i) + |
194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents:
7633
diff
changeset
|
213 _last_obj_copy_times_ms.get(i) + |
194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents:
7633
diff
changeset
|
214 _last_termination_times_ms.get(i); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
215 |
7633
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
216 double worker_other_time = worker_time - worker_known_time; |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
217 _last_gc_worker_other_times_ms.set(i, worker_other_time); |
7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents:
6786
diff
changeset
|
218 } |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
219 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
220 _last_gc_worker_times_ms.verify(); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
221 _last_gc_worker_other_times_ms.verify(); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
222 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
223 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
224 void G1GCPhaseTimes::print_stats(int level, const char* str, double value) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
225 LineBuffer(level).append_and_print_cr("[%s: %.1lf ms]", str, value); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
226 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
227 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
228 void G1GCPhaseTimes::print_stats(int level, const char* str, double value, int workers) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
229 LineBuffer(level).append_and_print_cr("[%s: %.1lf ms, GC Workers: %d]", str, value, workers); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
230 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
231 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
232 double G1GCPhaseTimes::accounted_time_ms() { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
233 // Subtract the root region scanning wait time. It's initialized to |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
234 // zero at the start of the pause. |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
235 double misc_time_ms = _root_region_scan_wait_time_ms; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
236 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
237 misc_time_ms += _cur_collection_par_time_ms; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
238 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
239 // Now subtract the time taken to fix up roots in generated code |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
240 misc_time_ms += _cur_collection_code_root_fixup_time_ms; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
241 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
242 // Subtract the time taken to clean the card table from the |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
243 // current value of "other time" |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
244 misc_time_ms += _cur_clear_ct_time_ms; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
245 |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
246 return misc_time_ms; |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
247 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
248 |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
249 void G1GCPhaseTimes::print(double pause_time_sec) { |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
250 if (_root_region_scan_wait_time_ms > 0.0) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
251 print_stats(1, "Root Region Scan Waiting", _root_region_scan_wait_time_ms); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
252 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
253 if (G1CollectedHeap::use_parallel_gc_threads()) { |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
254 print_stats(1, "Parallel Time", _cur_collection_par_time_ms, _active_gc_threads); |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
255 _last_gc_worker_start_times_ms.print(2, "GC Worker Start (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
256 _last_ext_root_scan_times_ms.print(2, "Ext Root Scanning (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
257 if (_last_satb_filtering_times_ms.sum() > 0.0) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
258 _last_satb_filtering_times_ms.print(2, "SATB Filtering (ms)"); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
259 } |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
260 _last_update_rs_times_ms.print(2, "Update RS (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
261 _last_update_rs_processed_buffers.print(3, "Processed Buffers"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
262 _last_scan_rs_times_ms.print(2, "Scan RS (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
263 _last_obj_copy_times_ms.print(2, "Object Copy (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
264 _last_termination_times_ms.print(2, "Termination (ms)"); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
265 if (G1Log::finest()) { |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
266 _last_termination_attempts.print(3, "Termination Attempts"); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
267 } |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
268 _last_gc_worker_other_times_ms.print(2, "GC Worker Other (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
269 _last_gc_worker_times_ms.print(2, "GC Worker Total (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
270 _last_gc_worker_end_times_ms.print(2, "GC Worker End (ms)"); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
271 } else { |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
272 _last_ext_root_scan_times_ms.print(1, "Ext Root Scanning (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
273 if (_last_satb_filtering_times_ms.sum() > 0.0) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
274 _last_satb_filtering_times_ms.print(1, "SATB Filtering (ms)"); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
275 } |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
276 _last_update_rs_times_ms.print(1, "Update RS (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
277 _last_update_rs_processed_buffers.print(2, "Processed Buffers"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
278 _last_scan_rs_times_ms.print(1, "Scan RS (ms)"); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
279 _last_obj_copy_times_ms.print(1, "Object Copy (ms)"); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
280 } |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
281 print_stats(1, "Code Root Fixup", _cur_collection_code_root_fixup_time_ms); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
282 print_stats(1, "Clear CT", _cur_clear_ct_time_ms); |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
283 double misc_time_ms = pause_time_sec * MILLIUNITS - accounted_time_ms(); |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
284 print_stats(1, "Other", misc_time_ms); |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
285 if (_cur_verify_before_time_ms > 0.0) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
286 print_stats(2, "Verify Before", _cur_verify_before_time_ms); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
287 } |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
288 print_stats(2, "Choose CSet", |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
289 (_recorded_young_cset_choice_time_ms + |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
290 _recorded_non_young_cset_choice_time_ms)); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
291 print_stats(2, "Ref Proc", _cur_ref_proc_time_ms); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
292 print_stats(2, "Ref Enq", _cur_ref_enq_time_ms); |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
293 print_stats(2, "Free CSet", |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
294 (_recorded_young_free_cset_time_ms + |
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
295 _recorded_non_young_free_cset_time_ms)); |
6628
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
296 if (_cur_verify_after_time_ms > 0.0) { |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
297 print_stats(2, "Verify After", _cur_verify_after_time_ms); |
bb3f6194fedb
7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents:
6219
diff
changeset
|
298 } |
6219
922993931b3d
7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff
changeset
|
299 } |