[GHC] #9706: New block-structured heap organization for 64-bit

GHC ghc-devs at haskell.org
Thu Nov 27 02:10:55 UTC 2014


#9706: New block-structured heap organization for 64-bit
-------------------------------------+-------------------------------------
              Reporter:  ezyang      |            Owner:  gcampax
                  Type:  task        |           Status:  new
              Priority:  normal      |        Milestone:
             Component:  Runtime     |          Version:  7.8.3
  System                             |         Keywords:
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:              |  Related Tickets:
  None/Unknown                       |
             Test Case:              |
              Blocking:              |
Differential Revisions:  D524        |
-------------------------------------+-------------------------------------

Comment (by gcampax):

 nofib results from patch in D524:


 {{{
 --------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed  TotalMem
 --------------------------------------------------------------------------------
            anna          -0.0%      0.0%     0.107     0.107      0.0%
            ansi          -0.1%      0.0%     0.000     0.000      0.0%
            atom          -0.1%      0.0%     -3.6%     -3.6%      0.0%
          awards          -0.0%      0.0%     0.000     0.000      0.0%
          banner          -0.1%      0.0%     0.000     0.000      0.0%
      bernouilli          -0.1%      0.0%     -1.2%     -1.2%      0.0%
    binary-trees          -0.1%      0.0%     -4.6%     -4.6%      0.0%
           boyer          -0.1%      0.0%     0.046     0.046      0.0%
          boyer2          -0.1%      0.0%     0.009     0.009      0.0%
            bspt          -0.0%      0.0%     0.010     0.010      0.0%
       cacheprof          -0.0%     -0.3%     +0.2%     +0.2%     +3.5%
        calendar          -0.0%      0.0%     0.000     0.000      0.0%
        cichelli          -0.1%      0.0%     0.088     0.088     +3.2%
         circsim          -0.1%      0.0%     -1.0%     -1.0%      0.0%
        clausify          -0.1%      0.0%     0.041     0.040      0.0%
   comp_lab_zift          -0.1%      0.0%     -2.0%     -1.9%      0.0%
        compress          -0.1%      0.0%     0.189     0.189      0.0%
       compress2          -0.1%      0.0%     0.173     0.173      0.0%
     constraints          -0.1%      0.0%     -6.0%     -6.0%      0.0%
    cryptarithm1          -0.1%      0.0%     -0.4%     -0.3%      0.0%
    cryptarithm2          -0.1%      0.0%     0.011     0.011      0.0%
             cse          -0.1%      0.0%     0.002     0.002      0.0%
           eliza          -0.1%      0.0%     0.001     0.001      0.0%
           event          -0.1%      0.0%     0.153     0.153      0.0%
          exp3_8          -0.1%      0.0%     -1.4%     -1.4%      0.0%
          expert          -0.0%      0.0%     0.000     0.000      0.0%
  fannkuch-redux          -0.1%      0.0%     +0.6%     +0.6%      0.0%
           fasta          -0.0%      0.0%     +0.1%     +0.2%      0.0%
             fem          -0.1%      0.0%     0.024     0.024      0.0%
             fft          -0.0%      0.0%     0.034     0.034      0.0%
            fft2          -0.0%      0.0%     0.049     0.049      0.0%
        fibheaps          -0.1%      0.0%     0.030     0.030      0.0%
            fish          -0.1%      0.0%     0.013     0.013      0.0%
           fluid          -0.0%      0.0%     0.010     0.010      0.0%
          fulsom          -0.1%      0.0%     -5.5%     -5.5%      0.0%
          gamteb          -0.1%      0.0%     0.042     0.042      0.0%
             gcd          -0.1%      0.0%     0.048     0.048      0.0%
     gen_regexps          -0.1%      0.0%     0.000     0.000      0.0%
          genfft          -0.1%      0.0%     0.035     0.035      0.0%
              gg          -0.0%      0.0%     0.011     0.011      0.0%
            grep          -0.0%      0.0%     0.000     0.000      0.0%
          hidden          -0.1%      0.0%     -9.1%     -9.0%      0.0%
             hpg          -0.1%      0.0%     0.114     0.114      0.0%
             ida          -0.1%      0.0%     0.090     0.090      0.0%
           infer          -0.1%      0.0%     0.052     0.052      0.0%
         integer          -0.1%      0.0%     +0.9%     +1.0%      0.0%
       integrate          -0.1%      0.0%     0.121     0.121      0.0%
    k-nucleotide          -0.0%      0.0%    -10.8%    -10.8%      0.0%
           kahan          -0.0%      0.0%     +0.1%     +0.1%      0.0%
         knights          -0.1%      0.0%     0.005     0.005      0.0%
            lcss          -0.1%      0.0%     -6.8%     -6.8%      0.0%
            life          -0.1%      0.0%     -4.1%     -4.0%      0.0%
            lift          -0.0%      0.0%     0.002     0.002      0.0%
       listcompr          -0.1%      0.0%     0.101     0.101      0.0%
        listcopy          -0.1%      0.0%     0.107     0.107      0.0%
        maillist          -0.1%      0.0%     0.060     0.060     +2.2%
          mandel          -0.0%      0.0%     0.077     0.077      0.0%
         mandel2          -0.1%      0.0%     0.004     0.004      0.0%
         minimax          -0.0%      0.0%     0.003     0.003      0.0%
         mkhprog          -0.1%      0.0%     0.003     0.003      0.0%
      multiplier          -0.1%      0.0%     0.147     0.147      0.0%
          n-body          -0.1%      0.0%     +1.5%     +1.5%      0.0%
        nucleic2          -0.1%      0.0%     0.068     0.068      0.0%
            para          -0.1%      0.0%     +1.6%     +1.5%      0.0%
       paraffins          -0.1%      0.0%     0.112     0.112      0.0%
          parser          -0.1%      0.0%     0.030     0.030      0.0%
         parstof          -0.1%      0.0%     0.006     0.006      0.0%
             pic          -0.1%      0.0%     0.007     0.007      0.0%
        pidigits          -0.1%      0.0%     -0.1%     -0.0%      0.0%
           power          -0.1%      0.0%     -7.8%     -7.8%      0.0%
          pretty          -0.1%      0.0%     0.000     0.000      0.0%
          primes          -0.1%      0.0%     0.070     0.070      0.0%
       primetest          -0.1%      0.0%     0.130     0.130      0.0%
          prolog          -0.1%      0.0%     0.002     0.002      0.0%
          puzzle          -0.1%      0.0%     0.148     0.148      0.0%
          queens          -0.1%      0.0%     0.015     0.015      0.0%
         reptile          -0.1%      0.0%     0.011     0.011      0.0%
 reverse-complem          -0.1%      0.0%     0.117     0.117      0.0%
         rewrite          -0.1%      0.0%     0.018     0.018      0.0%
            rfib          -0.1%      0.0%     0.020     0.020      0.0%
             rsa          -0.1%      0.0%     0.028     0.028      0.0%
             scc          -0.1%      0.0%     0.000     0.000      0.0%
           sched          -0.1%      0.0%     0.023     0.023      0.0%
             scs          -0.0%      0.0%     -2.4%     -2.5%      0.0%
          simple          -0.0%      0.0%     -2.7%     -2.7%      0.0%
           solid          -0.1%      0.0%     0.154     0.154      0.0%
         sorting          -0.1%      0.0%     0.002     0.002      0.0%
   spectral-norm          -0.1%      0.0%     -0.0%     -0.0%      0.0%
          sphere          -0.1%      0.0%     0.053     0.053      0.0%
          symalg          -0.1%      0.0%     0.015     0.015      0.0%
             tak          -0.1%      0.0%     0.016     0.016      0.0%
       transform          -0.1%      0.0%     -1.2%     -1.1%      0.0%
        treejoin          -0.1%      0.0%     0.144     0.144      0.0%
       typecheck          -0.1%      0.0%    -13.9%    -13.8%      0.0%
         veritas          -0.0%      0.0%     0.002     0.002      0.0%
            wang          -0.1%      0.0%     0.119     0.119      0.0%
       wave4main          -0.1%      0.0%     -3.4%     -3.4%      0.0%
    wheel-sieve1          -0.1%      0.0%     -0.3%     -0.4%      0.0%
    wheel-sieve2          -0.1%      0.0%     -2.8%     -2.8%      0.0%
            x2n1          -0.1%      0.0%     0.005     0.005      0.0%
 --------------------------------------------------------------------------------
             Min          -0.1%     -0.3%    -13.9%    -13.8%      0.0%
             Max          -0.0%      0.0%     +1.6%     +1.5%     +3.5%
  Geometric Mean          -0.1%     -0.0%     -2.9%     -2.9%     +0.1%
 }}}

 I think it's also significant to look at GC elapsed time:

 {{{
 -------------------------------------------------------------------------------
         Program        nofib-log-old    nofib-log-new
 -------------------------------------------------------------------------------
            anna                0.025            0.024
            ansi                0.000            0.000
            atom                0.283            -6.4%
          awards                0.000            0.000
          banner                0.000            0.000
      bernouilli                0.075            0.072
    binary-trees                0.323            -6.6%
           boyer                0.023            0.021
          boyer2                0.004            0.003
            bspt                0.005            0.005
       cacheprof                0.145            0.143
        calendar                0.000            0.000
        cichelli                0.017            0.016
         circsim                0.577            -6.3%
        clausify                0.015            0.013
   comp_lab_zift                0.098            0.094
        compress                0.082            0.079
       compress2                0.145            0.140
     constraints                2.335            -8.8%
    cryptarithm1                0.022            0.021
    cryptarithm2                0.001            0.001
             cse                0.001            0.001
           eliza                0.000            0.000
           event                0.088            0.082
          exp3_8                0.039            0.037
          expert                0.000            0.000
  fannkuch-redux                0.007            0.007
           fasta                0.004            0.004
             fem                0.006            0.006
             fft                0.023            0.022
            fft2                0.019            0.018
        fibheaps                0.013            0.012
            fish                0.001            0.001
           fluid                0.002            0.002
          fulsom                0.205            -7.4%
          gamteb                0.009            0.009
             gcd                0.001            0.001
     gen_regexps                0.000            0.000
          genfft                0.015            0.014
              gg                0.005            0.005
            grep                0.000            0.000
          hidden                0.022            0.021
             hpg                0.018            0.017
             ida                0.028            0.027
           infer                0.026            0.024
         integer                0.025            0.024
       integrate                0.002            0.002
    k-nucleotide                0.025            0.024
           kahan                0.001            0.000
         knights                0.001            0.001
            lcss                0.359            -8.8%
            life                0.155            0.143
            lift                0.000            0.001
       listcompr                0.005            0.005
        listcopy                0.006            0.005
        maillist                0.013            0.012
          mandel                0.004            0.004
         mandel2                0.001            0.001
         minimax                0.001            0.001
         mkhprog                0.001            0.001
      multiplier                0.042            0.039
          n-body                0.009            0.009
        nucleic2                0.005            0.004
            para                0.095            0.088
       paraffins                0.099            0.091
          parser                0.012            0.011
         parstof                0.002            0.002
             pic                0.004            0.004
        pidigits                0.044            0.043
           power                0.282           -11.9%
          pretty                0.000            0.000
          primes                0.023            0.021
       primetest                0.002            0.002
          prolog                0.001            0.001
          puzzle                0.019            0.018
          queens                0.000            0.000
         reptile                0.005            0.004
 reverse-complem                0.001            0.001
         rewrite                0.001            0.001
            rfib                0.000            0.000
             rsa                0.001            0.001
             scc                0.000            0.000
           sched                0.002            0.002
             scs                0.243            -6.2%
          simple                0.081            0.074
           solid                0.087            0.080
         sorting                0.001            0.001
   spectral-norm                0.000            0.000
          sphere                0.005            0.005
          symalg                0.001            0.001
             tak                0.000            0.000
       transform                0.095            0.089
        treejoin                0.092            0.087
       typecheck                0.013            0.012
         veritas                0.001            0.001
            wang                0.090            0.087
       wave4main                0.118            0.110
    wheel-sieve1                0.031            0.029
    wheel-sieve2                0.165            0.159
            x2n1                0.000            0.000
         -1 s.d.                -----            -9.7%
         +1 s.d.                -----            -5.9%
         Average                -----            -7.8%
 }}}

 Results are comparing 4897e7 (up to date master) with a2de1f (the patch),
 on a 16 core Intel Xeon 2.40GHz, 48GB RAM total, no swap,
 overcommit_memory = 0 (the default), on a x86_64 Linux 3.12.9

 It would be interesting to see why certain programs are regressing. They
 seem to be multithreaded programs, so it could be that we're spending more
 time in the memory allocator, which is locked and kills multithreading. Or
 it could be that they trigger pessimal allocator behavior.

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


More information about the ghc-tickets mailing list