mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-16 00:54:38 +02:00
6593758: RFE: Enhance GC ergonomics to dynamically choose ParallelGCThreads
Select number of GC threads dynamically based on heap usage and number of Java threads Reviewed-by: johnc, ysr, jcoomes
This commit is contained in:
parent
098ed89645
commit
15070123fa
39 changed files with 1523 additions and 231 deletions
|
@ -33,6 +33,7 @@
|
|||
#include "runtime/java.hpp"
|
||||
#include "runtime/mutexLocker.hpp"
|
||||
#include "runtime/virtualspace.hpp"
|
||||
#include "runtime/vmThread.hpp"
|
||||
|
||||
void CardTableModRefBS::non_clean_card_iterate_parallel_work(Space* sp, MemRegion mr,
|
||||
OopsInGenClosure* cl,
|
||||
|
@ -42,6 +43,11 @@ void CardTableModRefBS::non_clean_card_iterate_parallel_work(Space* sp, MemRegio
|
|||
assert((n_threads == 1 && ParallelGCThreads == 0) ||
|
||||
n_threads <= (int)ParallelGCThreads,
|
||||
"# worker threads != # requested!");
|
||||
assert(!Thread::current()->is_VM_thread() || (n_threads == 1), "There is only 1 VM thread");
|
||||
assert(UseDynamicNumberOfGCThreads ||
|
||||
!FLAG_IS_DEFAULT(ParallelGCThreads) ||
|
||||
n_threads == (int)ParallelGCThreads,
|
||||
"# worker threads != # requested!");
|
||||
// Make sure the LNC array is valid for the space.
|
||||
jbyte** lowest_non_clean;
|
||||
uintptr_t lowest_non_clean_base_chunk_index;
|
||||
|
@ -52,6 +58,8 @@ void CardTableModRefBS::non_clean_card_iterate_parallel_work(Space* sp, MemRegio
|
|||
|
||||
int n_strides = n_threads * ParGCStridesPerThread;
|
||||
SequentialSubTasksDone* pst = sp->par_seq_tasks();
|
||||
// Sets the condition for completion of the subtask (how many threads
|
||||
// need to finish in order to be done).
|
||||
pst->set_n_threads(n_threads);
|
||||
pst->set_n_tasks(n_strides);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue