#4951: Performance regression 7.0.1 -> 7.0.1.20110201
--------------------------------------+-------------------------------------
  Reporter:  simonmar                 |          Owner:  simonpj         
      Type:  bug                      |         Status:  new             
  Priority:  highest                  |      Milestone:  7.0.2           
 Component:  Compiler                 |        Version:  7.0.1           
Resolution:                           |       Keywords:                  
  Testcase:                           |      Blockedby:                  
Difficulty:                           |             Os:  Unknown/Multiple
  Blocking:                           |   Architecture:  Unknown/Multiple
   Failure:  Runtime performance bug  |  
--------------------------------------+-------------------------------------

Comment(by simonpj):

 Just adding Ian's comments:
 Hmm, profiling also doesn't see a difference in allocations:
 {{{
 -   total time  =        1.80 secs   (90 ticks @ 20 ms)
 -   total alloc = 585,367,648 bytes  (excludes profiling overheads)
 +   total time  =        1.96 secs   (98 ticks @ 20 ms)
 +   total alloc = 585,342,752 bytes  (excludes profiling overheads)
 }}}

 The +RTS -Dg output is different. Here's the end of the 6.12.3 output:
 {{{
 -----------------------------------------------------------------
   Gen     Max  Mut-list  Step   Blocks    Large     Live     Slop
        Blocks     Bytes                 Objects
 -----------------------------------------------------------------
     0     256         0     0        0        0        0        0
                             1        2        4    26272    22880
     1     256         0     0        1        0     1376     2720
 -----------------------------------------------------------------
                                                    27648    25600
 -----------------------------------------------------------------
 }}}

 and of the 7.x output:
 {{{
 ----------------------------------------------------------
   Gen     Max  Mut-list  Blocks    Large     Live     Slop
        Blocks     Bytes          Objects
 ----------------------------------------------------------
     0     256         0      12        4    34064    15088
     1     256         3     260        1  1041232    23728
 ----------------------------------------------------------
                                           1075296    38816
 ----------------------------------------------------------
 }}}
 More live data sounds bad, but it's not obvious to me the two are
 necessarily linked.


 I'm not convinced everything is being accounted for by ticky. For example,
 sm/Storage.c line 572 does TICK_ALLOC_HEAP_NOCTR(n);, but I can't see how
 the large object case immediately above is accounted for.
 Likewise sm/Storage.c line 652.

 There's also a load of stuff commented out in Ticky.c, headed by:
     /* krc: comment out some of this stuff temporarily */

 I think it would be good to have a less fragile way of doing the
 accounting, both for ticky and CCS, e.g. a wrapper for allocGroup that
 took the counters to attribute the allocation to.

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

_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to