1 /*
2 * Copyright (c) 2017, Red Hat, Inc. and/or its affiliates.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24
25 #ifndef SHARE_VM_GC_SHENANDOAH_SHENANDOAHWORKERPOLICY_HPP
26 #define SHARE_VM_GC_SHENANDOAH_SHENANDOAHWORKERPOLICY_HPP
27
28 #include "memory/allocation.hpp"
29
30
31 class ShenandoahWorkerPolicy : AllStatic {
32 private:
33 static uint _prev_par_marking;
34 static uint _prev_conc_marking;
35 static uint _prev_conc_evac;
36 static uint _prev_fullgc;
37 static uint _prev_degengc;
38 static uint _prev_conc_update_ref;
39 static uint _prev_par_update_ref;
40 static uint _prev_conc_cleanup;
41
42 public:
43 // Calculate the number of workers for initial marking
44 static uint calc_workers_for_init_marking();
45
46 // Calculate the number of workers for concurrent marking
47 static uint calc_workers_for_conc_marking();
48
49 // Calculate the number of workers for final marking
50 static uint calc_workers_for_final_marking();
51
52 // Calculate workers for concurrent evacuation (concurrent GC)
53 static uint calc_workers_for_conc_evac();
54
55 // Calculate workers for parallel full gc
56 static uint calc_workers_for_fullgc();
57
58 // Calculate workers for parallel degenerated gc
59 static uint calc_workers_for_stw_degenerated();
60
61 // Calculate workers for concurrent reference update
62 static uint calc_workers_for_conc_update_ref();
63
64 // Calculate workers for parallel/final reference update
65 static uint calc_workers_for_final_update_ref();
66
67 // Calculate workers for concurrent precleaning
68 static uint calc_workers_for_conc_preclean();
69
70 // Calculate workers for concurrent cleanup
71 static uint calc_workers_for_conc_cleanup();
72 };
73
74 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHWORKERPOLICY_HPP
|
1 /*
2 * Copyright (c) 2017, 2018, Red Hat, Inc. All rights reserved.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #ifndef SHARE_VM_GC_SHENANDOAH_SHENANDOAHWORKERPOLICY_HPP
25 #define SHARE_VM_GC_SHENANDOAH_SHENANDOAHWORKERPOLICY_HPP
26
27 #include "memory/allocation.hpp"
28
29 class ShenandoahWorkerPolicy : AllStatic {
30 private:
31 static uint _prev_par_marking;
32 static uint _prev_conc_marking;
33 static uint _prev_conc_evac;
34 static uint _prev_fullgc;
35 static uint _prev_degengc;
36 static uint _prev_conc_update_ref;
37 static uint _prev_par_update_ref;
38 static uint _prev_conc_cleanup;
39 static uint _prev_conc_reset;
40
41 public:
42 // Calculate the number of workers for initial marking
43 static uint calc_workers_for_init_marking();
44
45 // Calculate the number of workers for concurrent marking
46 static uint calc_workers_for_conc_marking();
47
48 // Calculate the number of workers for final marking
49 static uint calc_workers_for_final_marking();
50
51 // Calculate workers for concurrent evacuation (concurrent GC)
52 static uint calc_workers_for_conc_evac();
53
54 // Calculate workers for parallel full gc
55 static uint calc_workers_for_fullgc();
56
57 // Calculate workers for parallel degenerated gc
58 static uint calc_workers_for_stw_degenerated();
59
60 // Calculate workers for concurrent reference update
61 static uint calc_workers_for_conc_update_ref();
62
63 // Calculate workers for parallel/final reference update
64 static uint calc_workers_for_final_update_ref();
65
66 // Calculate workers for concurrent precleaning
67 static uint calc_workers_for_conc_preclean();
68
69 // Calculate workers for concurrent cleanup
70 static uint calc_workers_for_conc_cleanup();
71
72 // Calculate workers for concurrent reset
73 static uint calc_workers_for_conc_reset();
74 };
75
76 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHWORKERPOLICY_HPP
|