[GHC] #13362: GHC first generation of GC to be as large as largest cache size by default

GHC ghc-devs at haskell.org
Fri Feb 23 00:37:23 UTC 2018


#13362: GHC first generation of GC to be as large as largest cache size by default
-------------------------------------+-------------------------------------
        Reporter:  varosi            |                Owner:  (none)
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  Runtime System    |              Version:  8.0.2
      Resolution:                    |             Keywords:  numa cache gc
                                     |  newcomers
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Runtime           |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by sjakobi:

Old description:

> This will improve performance a lot by default.
>
> If anyone needs different size - there is "-A" RTS option. Machines are
> very different. Currently this size is 512k by default for all different
> architectures and hardware no matter what.
> In most cases machines with larger caches have more RAM as well and vice
> versa. So this will affect positively both small and larger machines. It
> will be most efficient in most cases to keep short lived objects in
> caches. Most modern workstation and server machines have L3 cache as
> well, that is why I'm asking for "largest cache size".
>
> Second idea will be if there are two short lived generations on machines
> with second and third level caches with sizes that match both.
>
> For NUMA machines with non-unified caches (like
> [http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143452239825
> this strange and non-common ARM]) the common solution could be to set
> first generation to be with size of the largest cache of smallest core.
> Which will not be the optimal, but close to.
>
> [https://www.reddit.com/r/haskell/comments/5rf1r5/ghc_first_generation_of_gc_to_be_as_large_as/
> Related Reddit discussion]

New description:

 This will improve performance a lot by default.

 If anyone needs different size - there is "-A" RTS option. Machines are
 very different. Since 8.2 this size has been 1MB by default for all
 different architectures and hardware no matter what.
 In most cases machines with larger caches have more RAM as well and vice
 versa. So this will affect positively both small and larger machines. It
 will be most efficient in most cases to keep short lived objects in
 caches. Most modern workstation and server machines have L3 cache as well,
 that is why I'm asking for "largest cache size".

 Second idea will be if there are two short lived generations on machines
 with second and third level caches with sizes that match both.

 For NUMA machines with non-unified caches (like
 [http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143452239825
 this strange and non-common ARM]) the common solution could be to set
 first generation to be with size of the largest cache of smallest core.
 Which will not be the optimal, but close to.

 [https://www.reddit.com/r/haskell/comments/5rf1r5/ghc_first_generation_of_gc_to_be_as_large_as/
 Related Reddit discussion]

--

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13362#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list