RFR: 8306738: Select num workers for safepoint ParallelCleanupTask
    Aleksey Shipilev 
    shade at openjdk.org
       
    Mon Apr 24 16:21:58 UTC 2023
    
    
  
On Mon, 24 Apr 2023 12:03:23 GMT, Axel Boldt-Christmas <aboldtch at openjdk.org> wrote:
> Select num workers for safepoint ParallelCleanupTask to be at most the number of parallel cleanup tasks `SAFEPOINT_CLEANUP_NUM_TASKS`
> 
> Unsure if `WorkerThreads::max_workers()` is more correct than `WorkerThreads::created_workers()` or `WorkerThreads::active_workers()`. 
> 
> Tested tier1-3 Oracle platforms.
The idea makes sense.
src/hotspot/share/runtime/safepoint.cpp line 607:
> 605:     // Parallel cleanup using GC provided thread pool.
> 606:     const uint num_workers = MIN2<uint>(SAFEPOINT_CLEANUP_NUM_TASKS, cleanup_workers->max_workers());
> 607:     cleanup_workers->run_task(&cleanup, num_workers);
If you go to the definition of `WorkerThreads::run_task(WorkerTask* task)`, then you'll notice it uses `_active_workers`. So we should be doing `MIN2(..., cleanup_workers->active_workers()` here if the current behavior is to be preserved better. I think active workers is correct when GC worker count is dynamic (see `UseDynamicNumberOfGCThreads`).
-------------
PR Review: https://git.openjdk.org/jdk/pull/13616#pullrequestreview-1398388909
PR Review Comment: https://git.openjdk.org/jdk/pull/13616#discussion_r1175518136
    
    
More information about the hotspot-runtime-dev
mailing list