Mercurial > hg > graal-jvmci-8
annotate src/share/vm/runtime/vm_version.cpp @ 94:0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
Summary: The option CMSInitiatingPermOccupancyFraction now controls perm triggering threshold. Even though the actual value of the threshold has not yet been changed, so there is no change in policy, we now have the infrastructure in place for dynamically deciding when to collect the perm gen, an issue that will be addressed in the near future.
Reviewed-by: jmasa
author | ysr |
---|---|
date | Sun, 16 Mar 2008 21:57:25 -0700 |
parents | 28372612af5e |
children | d1605aabd0a1 |
rev | line source |
---|---|
0 | 1 /* |
2 * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. | |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
4 * | |
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 | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 * CA 95054 USA or visit www.sun.com if you need additional information or | |
21 * have any questions. | |
22 * | |
23 */ | |
24 | |
25 # include "incls/_precompiled.incl" | |
26 # include "incls/_vm_version.cpp.incl" | |
27 | |
28 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release(); | |
29 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string(); | |
30 bool Abstract_VM_Version::_supports_cx8 = false; | |
31 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U; | |
32 | |
33 #ifndef HOTSPOT_RELEASE_VERSION | |
34 #error HOTSPOT_RELEASE_VERSION must be defined | |
35 #endif | |
36 #ifndef JRE_RELEASE_VERSION | |
37 #error JRE_RELEASE_VERSION must be defined | |
38 #endif | |
39 #ifndef HOTSPOT_BUILD_TARGET | |
40 #error HOTSPOT_BUILD_TARGET must be defined | |
41 #endif | |
42 | |
43 #ifdef PRODUCT | |
44 #define VM_RELEASE HOTSPOT_RELEASE_VERSION | |
45 #else | |
46 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET | |
47 #endif | |
48 | |
49 // HOTSPOT_RELEASE_VERSION must follow the release version naming convention | |
50 // <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>] | |
51 int Abstract_VM_Version::_vm_major_version = 0; | |
52 int Abstract_VM_Version::_vm_minor_version = 0; | |
53 int Abstract_VM_Version::_vm_build_number = 0; | |
54 bool Abstract_VM_Version::_initialized = false; | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
55 int Abstract_VM_Version::_parallel_worker_threads = 0; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
56 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
0 | 57 |
58 void Abstract_VM_Version::initialize() { | |
59 if (_initialized) { | |
60 return; | |
61 } | |
62 char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION); | |
63 | |
64 // Expecting the next vm_version format: | |
65 // <major_ver>.<minor_ver>-b<nn>[-<identifier>] | |
66 char* vm_major_ver = vm_version; | |
67 assert(isdigit(vm_major_ver[0]),"wrong vm major version number"); | |
68 char* vm_minor_ver = strchr(vm_major_ver, '.'); | |
69 assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number"); | |
70 vm_minor_ver[0] = '\0'; // terminate vm_major_ver | |
71 vm_minor_ver += 1; | |
72 char* vm_build_num = strchr(vm_minor_ver, '-'); | |
73 assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number"); | |
74 vm_build_num[0] = '\0'; // terminate vm_minor_ver | |
75 vm_build_num += 2; | |
76 | |
77 _vm_major_version = atoi(vm_major_ver); | |
78 _vm_minor_version = atoi(vm_minor_ver); | |
79 _vm_build_number = atoi(vm_build_num); | |
80 | |
81 os::free(vm_version); | |
82 _initialized = true; | |
83 } | |
84 | |
85 #if defined(_LP64) | |
86 #define VMLP "64-Bit " | |
87 #else | |
88 #define VMLP "" | |
89 #endif | |
90 | |
91 #ifdef KERNEL | |
92 #define VMTYPE "Kernel" | |
93 #else // KERNEL | |
94 #ifdef TIERED | |
95 #define VMTYPE "Server" | |
96 #else | |
97 #define VMTYPE COMPILER1_PRESENT("Client") \ | |
98 COMPILER2_PRESENT("Server") | |
99 #endif // TIERED | |
100 #endif // KERNEL | |
101 | |
102 #ifndef HOTSPOT_VM_DISTRO | |
103 #error HOTSPOT_VM_DISTRO must be defined | |
104 #endif | |
105 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP VMTYPE " VM" | |
106 | |
107 const char* Abstract_VM_Version::vm_name() { | |
108 return VMNAME; | |
109 } | |
110 | |
111 | |
112 const char* Abstract_VM_Version::vm_vendor() { | |
113 #ifdef VENDOR | |
114 return XSTR(VENDOR); | |
115 #else | |
116 return "Sun Microsystems Inc."; | |
117 #endif | |
118 } | |
119 | |
120 | |
121 const char* Abstract_VM_Version::vm_info_string() { | |
122 switch (Arguments::mode()) { | |
123 case Arguments::_int: | |
124 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode"; | |
125 case Arguments::_mixed: | |
126 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode"; | |
127 case Arguments::_comp: | |
128 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode"; | |
129 }; | |
130 ShouldNotReachHere(); | |
131 return ""; | |
132 } | |
133 | |
134 // NOTE: do *not* use stringStream. this function is called by | |
135 // fatal error handler. if the crash is in native thread, | |
136 // stringStream cannot get resource allocated and will SEGV. | |
137 const char* Abstract_VM_Version::vm_release() { | |
138 return VM_RELEASE; | |
139 } | |
140 | |
141 #define OS LINUX_ONLY("linux") \ | |
142 WINDOWS_ONLY("windows") \ | |
143 SOLARIS_ONLY("solaris") | |
144 | |
145 #define CPU IA32_ONLY("x86") \ | |
146 IA64_ONLY("ia64") \ | |
147 AMD64_ONLY("amd64") \ | |
148 SPARC_ONLY("sparc") | |
149 | |
150 const char *Abstract_VM_Version::vm_platform_string() { | |
151 return OS "-" CPU; | |
152 } | |
153 | |
154 const char* Abstract_VM_Version::internal_vm_info_string() { | |
155 #ifndef HOTSPOT_BUILD_USER | |
156 #define HOTSPOT_BUILD_USER unknown | |
157 #endif | |
158 | |
159 #ifndef HOTSPOT_BUILD_COMPILER | |
160 #ifdef _MSC_VER | |
161 #if _MSC_VER == 1100 | |
162 #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0" | |
163 #elif _MSC_VER == 1200 | |
164 #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0" | |
165 #elif _MSC_VER == 1310 | |
166 #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1" | |
167 #elif _MSC_VER == 1400 | |
168 #define HOTSPOT_BUILD_COMPILER "MS VC++ 8.0" | |
169 #else | |
170 #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER) | |
171 #endif | |
172 #elif defined(__SUNPRO_CC) | |
173 #if __SUNPRO_CC == 0x420 | |
174 #define HOTSPOT_BUILD_COMPILER "Workshop 4.2" | |
175 #elif __SUNPRO_CC == 0x500 | |
176 #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT) | |
177 #elif __SUNPRO_CC == 0x520 | |
178 #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT) | |
179 #elif __SUNPRO_CC == 0x580 | |
180 #define HOTSPOT_BUILD_COMPILER "Workshop 5.8" | |
181 #elif __SUNPRO_CC == 0x590 | |
182 #define HOTSPOT_BUILD_COMPILER "Workshop 5.9" | |
183 #else | |
184 #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC) | |
185 #endif | |
186 #elif defined(__GNUC__) | |
187 #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__ | |
188 #else | |
189 #define HOTSPOT_BUILD_COMPILER "unknown compiler" | |
190 #endif | |
191 #endif | |
192 | |
193 | |
194 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU | |
195 " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__ | |
196 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; | |
197 } | |
198 | |
199 unsigned int Abstract_VM_Version::jvm_version() { | |
200 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | | |
201 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | | |
202 (Abstract_VM_Version::vm_build_number() & 0xFF); | |
203 } | |
204 | |
205 | |
206 void VM_Version_init() { | |
207 VM_Version::initialize(); | |
208 | |
209 #ifndef PRODUCT | |
210 if (PrintMiscellaneous && Verbose) { | |
211 os::print_cpu_info(tty); | |
212 } | |
213 #endif | |
214 } | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
215 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
216 unsigned int Abstract_VM_Version::nof_parallel_worker_threads( |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
217 unsigned int num, |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
218 unsigned int den, |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
219 unsigned int switch_pt) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
220 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
221 assert(ParallelGCThreads == 0, "Default ParallelGCThreads is not 0"); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
222 // For very large machines, there are diminishing returns |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
223 // for large numbers of worker threads. Instead of |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
224 // hogging the whole system, use a fraction of the workers for every |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
225 // processor after the first 8. For example, on a 72 cpu machine |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
226 // and a chosen fraction of 5/8 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
227 // use 8 + (72 - 8) * (5/8) == 48 worker threads. |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
228 unsigned int ncpus = (unsigned int) os::active_processor_count(); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
229 return (ncpus <= switch_pt) ? |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
230 ncpus : |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
231 (switch_pt + ((ncpus - switch_pt) * num) / den); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
232 } else { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
233 return ParallelGCThreads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
234 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
235 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
236 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
237 unsigned int Abstract_VM_Version::calc_parallel_worker_threads() { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
238 return nof_parallel_worker_threads(5, 8, 8); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
239 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
240 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
241 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
242 // Does not set the _initialized flag since it is |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
243 // a global flag. |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
244 unsigned int Abstract_VM_Version::parallel_worker_threads() { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
245 if (!_parallel_worker_threads_initialized) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
246 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
247 _parallel_worker_threads = VM_Version::calc_parallel_worker_threads(); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
248 } else { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
249 _parallel_worker_threads = ParallelGCThreads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
250 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
251 _parallel_worker_threads_initialized = true; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
252 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
253 return _parallel_worker_threads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
254 } |