Skip to content
  • Sergei Trofimovich's avatar
    rts: enable parallel GC scan of large (32M+) allocation area · a5d26f26
    Sergei Trofimovich authored
    
    
    Parallel GC does not scan large allocation area (-A)
    effectively as it does not do work stealing from nursery
    by default.
    
    That leads to large imbalance when only one of threads
    overflows allocation area: most of GC threads finish
    quickly (as there is not much to collect) and sit idle
    waiting while single GC thread finishes scan of single
    allocation area for that thread.
    
    The patch enables work stealing for (equivalent of -qb0)
    allocation area of -A32M or higher.
    
    Tested on a highlighting-kate package from Trac #9221
    
    On 8-core machine the difference is around 5% faster
    of wall-clock time. On 24-core VM the speedup is 20%.
    
    Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
    
    Test Plan: measured wall time and GC parallelism on highlighting-kate build
    
    Reviewers: austin, bgamari, erikd, simonmar
    
    Reviewed By: bgamari, simonmar
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D2483
    
    GHC Trac Issues: #9221
    a5d26f26