src/hotspot/share/gc/shared/workerPolicy.hpp
author kbarrett
Tue, 05 Mar 2019 19:54:33 -0500
changeset 54006 a421bdf22394
parent 53244 9807daeb47c4
child 59053 ba6c248cae19
permissions -rw-r--r--
8219613: Use NonJavaThread PtrQueues Summary: Init and use NJT queues, remove shared SATB queue. Reviewed-by: shade, zgu, pliden, tschatzl Contributed-by: kim.barrett@oracle.com, shade@redhat.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52904
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     1
/*
53244
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52904
diff changeset
     2
 * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
52904
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     4
 *
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     7
 * published by the Free Software Foundation.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     8
 *
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    13
 * accompanied this code).
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    14
 *
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    18
 *
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    21
 * questions.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    22
 *
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    23
 */
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    24
53244
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52904
diff changeset
    25
#ifndef SHARE_GC_SHARED_WORKERPOLICY_HPP
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52904
diff changeset
    26
#define SHARE_GC_SHARED_WORKERPOLICY_HPP
52904
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    27
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    28
#include "memory/allocation.hpp"
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    29
#include "utilities/globalDefinitions.hpp"
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    30
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    31
class WorkerPolicy : public AllStatic {
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    32
  static const uint GCWorkersPerJavaThread = 2;
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    33
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    34
  static bool _debug_perturbation;
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    35
  static uint _parallel_worker_threads;
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    36
  static bool _parallel_worker_threads_initialized;
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    37
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    38
  static uint nof_parallel_worker_threads(uint num,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    39
                                          uint den,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    40
                                          uint switch_pt);
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    41
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    42
  // Calculates and returns the number of parallel GC threads. May
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    43
  // be CPU-architecture-specific.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    44
  static uint calc_parallel_worker_threads();
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    45
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    46
public:
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    47
  // Returns the number of parallel threads to be used as default value of
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    48
  // ParallelGCThreads. If that number has not been calculated, do so and
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    49
  // save it.  Returns ParallelGCThreads if it is set on the
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    50
  // command line.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    51
  static uint parallel_worker_threads();
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    52
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    53
  // Return number default GC threads to use in the next GC.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    54
  static uint calc_default_active_workers(uintx total_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    55
                                          const uintx min_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    56
                                          uintx active_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    57
                                          uintx application_workers);
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    58
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    59
  // Return number of GC threads to use in the next GC.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    60
  // This is called sparingly so as not to change the
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    61
  // number of GC workers gratuitously.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    62
  //   For ParNew collections
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    63
  //   For PS scavenge and ParOld collections
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    64
  //   For G1 evacuation pauses (subject to update)
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    65
  //   For G1 Full GCs (subject to update)
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    66
  // Other collection phases inherit the number of
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    67
  // GC workers from the calls above.  For example,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    68
  // a CMS parallel remark uses the same number of GC
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    69
  // workers as the most recent ParNew collection.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    70
  static uint calc_active_workers(uintx total_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    71
                                  uintx active_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    72
                                  uintx application_workers);
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    73
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    74
  // Return number of GC threads to use in the next concurrent GC phase.
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    75
  static uint calc_active_conc_workers(uintx total_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    76
                                       uintx active_workers,
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    77
                                       uintx application_workers);
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    78
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    79
};
d2f118d3f8e7 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
diff changeset
    80
53244
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52904
diff changeset
    81
#endif // SHARE_GC_SHARED_WORKERPOLICY_HPP